Web Services Description Language
Web Services Description Language (WSDL) je na XML temelječ vmesnik za definicijo spletnih storitev, ki ga je razvil mednarodni inštitut World Wide Web Consortium (W3C), z namenom poenotenja načina opisa spletnih storitev. Trenutna verzija je WSDL 2.0, v prejšnji verziji (1.1) je bil pomen akronima Web Services Definition Language, nato pa se je v verziji 2.0 spremenil v Web Service Description Language.
Opis
[uredi | uredi kodo]![](http://upload.wikimedia.org/wikipedia/commons/thumb/c/c2/WSDL_11vs20.png/220px-WSDL_11vs20.png)
WSDL opiše javni vmesnik do spletne storitve. Uporablja XML Scheme pri definiciji spletne storitve in specifičnih podatkovnih tipov. Omogoča standardiziran zapis tehničnega vmesnika (oz. tehnično pogodbo), ki temelji na sporočilih na osnovi jezika XML. Predstavlja informacije, ki določajo identiteto storitve in omogoči proženje storitve. WSDL je en izmed osnovnih gradnikov primitivnega SOA modela. Poleg WSDL je še SOAP, ki opiše format sporočil, ki se pošiljajo med storitvijo in odjemalcem ter standardiziran format za register storitev UDDI. Če želi kdo uporabiti spletno storitev, najprej pridobi WSDL dokument, da ugotovi lokacijo storitve, seznam operacij, ki jih nudi ter obliko sporočil, ki jih storitev prejema oz. pošilja. WSDL torej pove odjemalcu, kako lahko kliče oz. uporabi spletno storitev, uporabi pa se za izgradnjo namestnikov za odjemalce, ki implementirajo proženje operacij spletne storitve.
Osnovni deli WSDL dokumenta (WSDL 1.1):
WSDL konstrukt | Opis |
---|---|
<types> | določa podatkovne tipe, ki se uporabljajo pri prenosu sporočil med komunikacijo s spletno storitvijo. |
<message> | definira podatkovne elemente operacije, sestavljen je lahko iz več delov (<part>), konstrukt <message> je bil v verziji 2.0 odstranjen. |
<portType> | v 2.0 preimenovan v Interface. Definira spletno storitev, nabor izvedljivih abstraktnih operacij, in abstraktna sporočila, ki se izmenjujejo pri izvajanju operacij. |
<operation> | definira SOAP akcije, način kodiranja sporočila. |
<binding> | specificira vmesnik in definira povezavo s SOAP sporočili. Abstraktnim sporočilom, operacijam in končnim točkam določi specifičen protokol in format sporočil. |
<service> | vsebuje set sistemskih funkcij, izpostavljenih na spletu. Definira fizično lokacijo spletne storitve. |
<port> | v 2.0 preimenovan v Endpoint. Definira naslov oz. končno točko spletne storitve. Po navadi izražen s preprostim HTTP URLjem. |
Zgodovina
[uredi | uredi kodo]WSDL je bila ena izmed prvih iniciativ v podpori tehnologijam spletnih storitev. Potem, ko se je WSDL izpopolnil, se je začelo iskanje po standardnem formatu sporočil, ki bi se uporabil skupaj z definicijo WSDL. Čeprav so bile v začetku v igri tudi obstoječe alternative (kot je XML-RPC), je bila izbrana tehnologija SOAP. Kombinacija WSDL in SOAP je predstavljala jedro industrijskega standarda za komunikacijsko ogrodje.
- WSDL 1.0 (september 2000) je bil razvit s strani IBM, Microsoft ter Ariba.
- WSDL 1.1 (marec 2001) je formalizirana različica WSDL 1.0.
- WSDL 1.2 (junij 2003) je bil delovni osnutek pri W3C, a je postal različica WSDL 2.0.
- WSDL 2.0 je junija 2007 postal priporočilo W3C. Podpira povezavo preko vseh oblik http zahtev (ne le GET in POST), kar nudi podporo za REST storitve.
Zadnja različica Business Process Execution Language (BPEL) podpira le WSDL 1.1.
Primer
[uredi | uredi kodo]Primer WSDL 2.0 dokumenta: Glej primer
<?xml version="1.0" encoding="utf-8" ?>
<description
xmlns="http://www.w3.org/ns/wsdl"
targetNamespace="http://greath.example.com/2004/wsdl/resSvc"
xmlns:tns="http://greath.example.com/2004/wsdl/resSvc"
xmlns:ghns="http://greath.example.com/2004/schemas/resSvc"
xmlns:wsoap="http://www.w3.org/ns/wsdl/soap"
xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
xmlns:wsdlx="http://www.w3.org/ns/wsdl-extensions">
<documentation>
This document describes the GreatH Web service. Additional
application-level requirements for use of this service --
beyond what WSDL 2.0 is able to describe -- are available
at http://greath.example.com/2004/reservation-documentation.html
</documentation>
<types>
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://greath.example.com/2004/schemas/resSvc"
xmlns="http://greath.example.com/2004/schemas/resSvc">
<xs:element name="checkAvailability" type="tCheckAvailability"/>
<xs:complexType name="tCheckAvailability">
<xs:sequence>
<xs:element name="checkInDate" type="xs:date"/>
<xs:element name="checkOutDate" type="xs:date"/>
<xs:element name="roomType" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="checkAvailabilityResponse" type="xs:double"/>
<xs:element name="invalidDataError" type="xs:string"/>
</xs:schema>
</types>
<interface name="reservationInterface" >
<fault name="invalidDataFault"
element="ghns:invalidDataError"/>
<operation name="opCheckAvailability"
pattern="http://www.w3.org/ns/wsdl/in-out"
style="http://www.w3.org/ns/wsdl/style/iri"
wsdlx:safe="true">
<input messageLabel="In"
element="ghns:checkAvailability" />
<output messageLabel="Out"
element="ghns:checkAvailabilityResponse" />
<outfault ref="tns:invalidDataFault" messageLabel="Out"/>
</operation>
</interface>
<binding name="reservationSOAPBinding"
interface="tns:reservationInterface"
type="http://www.w3.org/ns/wsdl/soap"
wsoap:protocol="http://www.w3.org/2003/05/soap/bindings/HTTP/">
<fault ref="tns:invalidDataFault"
wsoap:code="soap:Sender"/>
<operation ref="tns:opCheckAvailability"
wsoap:mep="http://www.w3.org/2003/05/soap/mep/soap-response"/>
</binding>
<service name="reservationService"
interface="tns:reservationInterface">
<endpoint name="reservationEndpoint"
binding="tns:reservationSOAPBinding"
address="http://greath.example.com/2004/reservation"/>
</service>
</description>