WSDL
WSDL , skrót od Web Services Description Language , to format Extensible Markup Language ( XML ) używany do opisywania usług internetowych (WS). Wersja 1.0 była pierwszą rekomendacją W3C , a wersja 1.1 nigdy nie osiągnęła tego statusu. Wersja 2.0 stała się aktualną rekomendacją tego podmiotu.
WSDL opisuje publiczny interfejs usług WWW. Opiera się na XML i opisuje formę komunikacji, czyli wymagania protokołu i formaty wiadomości niezbędne do interakcji z usługami wymienionymi w jego katalogu. Obsługiwane operacje i komunikaty są opisane w skrócie, a następnie powiązane z określonym protokołem sieciowym i formatem komunikatów.
Dlatego WSDL jest często używany w połączeniu z SOAP i XML Schema . Program klienta, który łączy się z usługą WWW, może odczytać plik WSDL, aby określić, jakie funkcje są dostępne na serwerze. Specjalne typy danych zawarte są w pliku WSDL w postaci schematu XML. Klient może użyć SOAP do wywołania jednej z funkcji wymienionych w WSDL.
WSDL pozwala nam mieć opis usługi sieciowej. Określa abstrakcyjny interfejs, za pośrednictwem którego klient może uzyskać dostęp do usługi, oraz szczegóły dotyczące sposobu jej użycia.
Struktura WSDL
Struktura WSDL składa się z następujących elementów:
Typy danych
- <typy>: Ta sekcja definiuje typy danych używane w komunikatach. Używane są typy zdefiniowane w specyfikacji schematu XML.
Wiadomości
- <wiadomość>: Tutaj definiujemy elementy wiadomości. Każda wiadomość może składać się z szeregu logicznych części. Części mogą być dowolnego typu zdefiniowanego w poprzedniej sekcji.
Typy portów
- <portType>: W tej sekcji definiujemy dozwolone operacje i komunikaty wymieniane w Serwisie.
Wiązania
- <binding>: Określamy używane protokoły komunikacyjne.
Usługi
- <usługa>: Zestaw portów i ich adres. Ta końcowa część odnosi się do tego, co zostało przedstawione w poprzednich sekcjach.
Dzięki tym elementom nie wiemy, co robi usługa, ale mamy informacje niezbędne do interakcji z nią (funkcje, komunikaty wejścia/wyjścia, protokoły...)
Przykłady
Poniżej znajduje się przykład dokumentu WSDL i jego różnych sekcji. W tym konkretnym przykładzie zaimplementowana jest usługa, która pokazuje jej aktualną wartość rynkową na podstawie nazwy wartości giełdowej.
<definitions name= "StockQuote"
targetNamespace= "http://example.com/stockquote.wsdl"
xmlns:tns= "http://example.com/stockquote.wsdl"
xmlns:xsd1= "http://example. com/stockquote.xsd"
xmlns:soap= "http://schemas.xmlsoap.org/wsdl/soap/"
xmlns= "http://schemas.xmlsoap.org/wsdl/" >
<types>
<schema targetNamespace= "http://example.com/stockquote.xsd"
xmlns= "http://www.w3.org/2000/10/XMLSchema" >
<element name= "TradePriceRequest" >
<complexType >
<all>
<element name= "tickerSymbol" type= "string" />
</all>
</complexType>
</element>
<element name= "TradePrice" >
<complexType>
<all>
<element name= "price " type= "float" />
</all>
</complexType>
</element>
</schema>
</types>
<message name = "GetLastTradePriceInput" >
<part name = "body" element = "xsd1:TradePriceRequest" />
</message>
<message name = "GetLastTradePriceOutput" >
<part name = "body" element = "xsd1:TradePrice" />
</message>
<portType name= "StockQuotePortType" >
< nazwa operacji= "GetLastTradePrice" >
<input message= "tns:GetLastTradePriceInput" />
<output message= "tns:GetLastTradePriceOutput" />
</operacja>
</portType>
< nazwa powiązania = "StockQuoteSoapBinding" type = "tns:StockQuotePortType" >
<soap:binding style = "dokument" transport = "http://schemas.xmlsoap.org/soap/http" />
< nazwa operacji = "GetLastTradePrice" >
<soap:operacja soapAction= "http://example.com/GetLastTradePrice" />
<input>
<soap:body use= "literal" />
</input>
<output>
<soap:body use= "literal" />
</output>
</operacja>
</binding>
<service name= „StockQuoteService” >
<documentation> Moja pierwsza usługa </documentation>
<port name= „StockQuotePort” binding= „tns:StockQuoteSoapBinding” >
<soap:address location= „http://example.com/stockquote” />
</port>
</usługa>
</definicje>