Rabu, 20 April 2011

WSDL


WSDL adalah sebuah dokumen yang dibuat dalam bentuk XML, tujuan dari dokumen ini adalah menjelaskan detail informasi yang ada pada Web Service. Di dalam WSDL dijelaskan berbagai macam method dan function yang ada pada Web Service, parameter yang diperlukan untuk memanggil sebuah method dan apa tipe hasil yang dikembalikan oleh method yang telah dipanggil.
Struktur WSDL

<definition>
<types></types>
<message></message>
<portType></portType>
<binding></binding>
<service></service>
</definition>

Definition : merupakan tag tertinggi yang ada di dalam WSDL. Tag definition sering disebut sebagai tag root. Tag-tag lain harus berada di dalam tag definition.

Contoh : 

<definitions targetNamespace="urn:SpotService">
      …

</definitions>

Types : Di dalam tag ini didefinisikan tipe-tipe data yang akan digunakan oleh Web Service. Beberapa tipe data yang dapat didefinisikan oleh Types adalah tipe-tipe data kompleks seperti Array, Struct.atau bahkan Array of Struct
Contoh :

<types>
<xsd:schema targetNamespace="urn:SpotService">
<xsd:import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
<xsd:import namespace="http://schemas.xmlsoap.org/wsdl/"/>
<xsd:complexType name="spot">
<xsd:all>
<xsd:element name="spot_id" type="xsd:string"/>
<xsd:element name="spot_nama" type="xsd:string"/>
<xsd:element name="spot_alamat" type="xsd:string"/>
<xsd:element name="spot_longitude" type="xsd:long"/>
<xsd:element name="spot_latitude" type="xsd:long"/>
</xsd:all>
</xsd:complexType>
<xsd:complexType name="SpotArray">
<xsd:complexContent>
<xsd:restriction base="SOAP-ENC:Array">
<xsd:attribute ref="SOAPENC:arrayType"wsdl:arrayType="tns:spot[]"/>
</xsd:restriction></xsd:complexContent></xsd:complexType></xsd:schema>
</types>

Message : tag message berisi parameter input atau output yang digunakan oleh Web Service.

<message name="getSpotInfoRequest">
<part name="spotId" type="xsd:string"/>
</message>
<message name="getSpotInfoResponse">
<part name="return" type="tns:spot"/>
</message>

PortType : Tag ini berisikan tentang definisi method atau fungsi yang disediakan oleh Web Service

<portType name="SpotPortType">
<operation name="getSpotList">
<input message="tns:getSpotListRequest"/>
<output message="tns:getSpotListResponse"/>
</operation>
<operation name="getSpotInfo">
<input message="tns:getSpotInfoRequest"/>
<output message="tns:getSpotInfoResponse"/>
</operation>
</portType>

Binding : tag ini berisikan informasi bagaimana sebuah operasi atau fungsi diimplementasikan. Apakah fungsi harus menggunakan protocol HTTP atau SMTP dan lain sebagainya. Informasi lain yang didefinisikan di sini adalah soap action.

<binding name="SpotBinding" type="tns:SpotPortType">
<soap:binding style="rpc" transport=
"http://schemas.xmlsoap.org/soap/http"/>
<operation name="getSpotList">
<soap:operation soapAction=
"urn:SpotService#getSpotList" style="rpc"/>
<input>
<soap:body use="encoded" namespace="urn:SpotService"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output>
<soap:body use="encoded" namespace="urn:SpotService"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
</binding>

Service : Tag ini mendefinisikan lokasi dari Web Service. 

<service name="Spot">
<port name="SpotPort" binding="tns:SpotBinding">
<soap:address location="http://localhost/ws_jmaps/server/server.php"/>
</port>
</service>

Tidak ada komentar: