Piotr Czapiewski Wydział Informatyki ZUT
Web Services Description Language
Ułatwienie dostępu do usług Automatyczne generowanie koduWsparcie IDE Określenie interfejsu usługi sieciowej Dostępne operacje Wymagane parametry Stosowane typy danych Użyte protokoły Lokalizacja usługi (URI) Format XML Niezależny od platformyŁatwe automatyczne przetwarzanieCzytelny dla maszyny i człowieka
r.Microsoft, IBM, Ariba r.W3C Note r.W3C Draft r.W3C Recommendation
Usługa (service)Port (port)Wiązanie (binding)Typ portu (port type)Operacja (operation)Wiadomość (message)Element (element)
Usługa określona jako zbiór punktów końcowych (endpoint, port) Abstrakcyjna definicja portów i wiadomości jest odseparowana od konkretnej realizacji, co pozwala na powtórne użycie definicji Port definiowany jest poprzez skojarzenie adresu sieciowego z wiązaniem (binding) Wiązanie (binding) – konkretny protokół i specyfikacja formatu danych dla określonego typu portu Operacje i komunikaty są wiązane z konkretnym protokołem sieciowym i formatem wiadomości Typy portów (port type) – abstrakcyjne kolekcje udostępnianych operacji Komunikaty (message) – abstrakcyjne definicje przesyłanych danych Niestandardowe typy danych używane przez usługę są definiowane w WSDL w postaci XML Schema
Element główny – definitions Docelowa przestrzeń nazw – targetNamespace
Definicje abstrakcyjne types message interfejs programistyczny portType Definicje konkretne binding service sposób wywołania interfejsu
Definicje typów w postaci schematów XML Dowolna liczba elementów schema z przestrzeni nazw Podstawowa struktura elementu types: Wewnątrz elementu schema można użyć dowolnej konstrukcji XML Schema (definicji typów prostych, typów złożonych i elementów)
Definicja abstrakcyjnego komunikatu, służącego jako dane wejściowe lub wyjściowe operacji Komunikat składa się z co najmniej jednego elementu part Elementy message oraz part muszą posiadać nazwy (za pomocą nazwy odwołujemy się do nich z innych miejsc definicji WSDL) Z każdym elementem part związany jest atrybut: element – gdy komunikat zawiera dokument XML lub type – gdy komunikat zawiera wywołanie RPC message part...
Dla usługi przesyłającej w komunikatach wywołania RPC: Elementy part reprezentują parametry metody Atrybut name określa nazwę elementu w konkretnym komunikacie Atrybut type określa strukturę elementu Dla usługi przesyłającej dokumenty XML: Elementy part odwołują się do elementów XML umieszczonych w treści
Przykład definicji komunikatów odwołujących się do elementów po ich nazwie
Definicja realizowanych operacji portType = interfejs Element portType zawiera dowolną liczbę elementów operation Podstawowa struktura elementu portType: portType operation...
Każdy element portType musi posiadać unikalną nazwę Każdy element operation zawiera kombinację elementów input i output, może także zawierać elementy fault Elementy input, output i fault muszą odwoływać się do definicji komunikatu (przez podanie nazwy)
Szczegóły dotyczące stosowania konkretnego elementu portType z wybranym protokołem Za pomocą atrybutu type określamy, który element portType jest opisywany Jednemu portType może odpowiadać wiele wiązań Dla każdej operacji element binding zawiera element operation, a także kilka elementów rozszerzenia Wiązanie musi posiadać unikalną nazwę binding operation...
Wiązanie SOAP do HTTP dla interfejsu MathInterface
Element soap:binding – wiązanie w standardzie SOAP 1.1 Atrybut style – domyślny sposób wykorzystania usługi (document lub rpc) Atrybut transport – wymagany protokół transportowy (tutaj: HTTP)
Element soap:operation definiuje wartość nagłówka HTTP SOAPAction dla danej operacji Atrybut use elementu soap:body określa sposób kodowania fragmentów komunikatu wewnątrz elementu body (literal lub encoded)
Document / literal
Rpc/encoded
Definicja kolekcji elementów port i endpoint, które udostępniają poszczególne wiązania w sieci Podstawowa struktura elementu service: Każdemu portowi nadajemy nazwę (atrybut name) i przypisujemy wiązanie (atrybut binding) Element rozszerzenia definiuje adres wiązania
Udostępnienie wiązania MathSoapHttpBinding pod adresem
Dokument WSDL opisuje usługę sieciową za pomocą: Komunikatów (message) Operacji (operation) Interfejsów (portType) Wiązań (binding) Punktów końcowych (endpoint) Dokument WSDL zawiera wszystkie informacje potrzebne do skorzystania z usługi Definicja WSDL pozwala na generowanie kodu: Aplikacji serwera Aplikacji klienta
Wsparcie przez narzędzia wciąż ograniczone Standard bardziej ogólny i uporządkowany Najważniejsze zmiany Komunikaty scalone z operacjami Zmiana terminu Port Type na Interface Zmiana terminu Port na Endpoint Operacje rozszerzone o możliwość opcjonalnych odpowiedzi Szersze wsparcie obsługi błędów Dopuszczenie wiązania do wszystkich metod HTTP – lepsze wsparcie dla RESTful web services