WSDL adalah :
WSDL adalah gateway (pintu) komunikasi antara penyedia dan pemakai web service.
WSDL sering digunakan pada kombinasi SOAP dan XML Schema untuk menyediakan Web
service di internet. Aplikasi client yang menghubungkan ke sebuah Web service dapat
membaca file WSDL untuk menentukan operasi apa saja yang tersedia pada server. Tipe-tipe
data khusus yang digunakan di-embed pada file WSDL dalam bentuk XML Schema. Client
kemudian dapat menggunakan SOAP untuk memanggil operasi-operasi yang terdaftar pada
file WSDL secara aktual menggunakan XML atau HTTP.
Spesifikasi WSDL versi terkini adalah versi 2.0; versi 1.1 belum didukung oleh W3C tetapi
versi 2.0 sudah merupakan rekomendasi W3C. WSDL 1.2 di-rename menjadi WSDL 2.0
karena perbedaan substansial dari WSDL 1.1. Dengan mengijinkan binding ke semua metode
HTTP request (tidak hanya GET dan POST seperti pada versi 1.1), spesifikasi WSDL 2.0
menawarkan dukungan yang lebih baik untuk RESTful web service dan lebih
sederhana/simpel untuk diimplementasikan. Akan tetapi, dukungan untuk spesifikasi ini
masih terlalu buruk pada SDK untuk Web service yang sering menyediakan tools hanya
untuk WSDL 1.1.
Sejarah WSDL
WSDL 1.0 (September 2000) telah dikembangkan oleh IBM, Microsoft, dan Ariba untuk
mendeskripsikan Web Service pada SOAP. Dikembangkan dengan mengkombinasikan
NASSL (Network Application Service Spesification Language) dari IBM dan SDL (Service
Description Language) dari Microsoft. WSDL 1.1 dirilis pada 2001, merupakan formalisasi
dari WSDL 1.0. Tidak ada perubahan besar yang diperkenalkan antara versi 1.0 dan 1.1.
WSDL 1.2 (Juni 2003) merupakan draf kerja W3C, tetapi menjadi WSDL 2.0. Menurut W3C,
WSDL 1.2 lebih mudah dan lebih fleksibel untuk para developer daripada versi sebelumnya.
WSDL 1.2 berupaya untuk menghapus fitur non-interoperable dan juga mendefinisikan
binding HTTP 1.1 secara lebih baik. WSDL tidak didukung oleh kebanyakan server/vendor
SOAP.
WSDL 2.0 menjadi rekomendasi pada bulan Juni 2007. WSDL 1.2 diganti menjadi WSDL
2.0 karena mempunyai perubahan secara substansi dari WSDL 1.1. Perubahan-perubahan
tersebut meliputi:
1. Message sesuatu yang abstrak, definisi tipe data yang akan dikomunikasikan
<message name='getItemCountRequest'>
</message>
<message name='getItemCountResponse'>
</message>
<portType name='InventoryPortType'>
<operation name='getItemCount'>
<input message='tns:getItemCountRequest'/>
<output message='tns:getItemCountResponse'/>
</operation>
</portType>
3. Port - Titik akhir tunggal (single endpoint) yang didefinisikan sebagai sebuah
binding dan alamat jaringan (network address)
<soap:address location='http://localhost/soap/server/server.php'/>
</port>
<service name='InventoryService'>
<soap:address location='http://localhost/soap/server/server.php'/>
</port>
</service>
5. Operation deskripsi abstrak dari suatu aksi yang didukung oleh service. Pada
dasarnya menunjukkan nama operasi web service dan pesan input output
<operation name='getItemCount'>
<input message='tns:getItemCountRequest'/>
<output message='tns:getItemCountResponse'/>
</operation>
6. Binding protokol komunikasi yang digunakan oleh web service
<soap:binding style='rpc'
transport='http://schemas.xmlsoap.org/soap/http'/>
<operation name='getItemCount'>
<soap:operation soapAction='urn:xmethods-delayed-quotes#getItemCount'/>
<input>
encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
</input>
<output>
encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
</output>
</operation>
</binding>
<definitions name='Inventory'
targetNamespace='urn:test'
xmlns:tns='urn:test'
xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/'
xmlns:xsd='http://www.w3.org/2001/XMLSchema'
xmlns:soapenc='http://schemas.xmlsoap.org/soap/encoding/'
xmlns:wsdl='http://schemas.xmlsoap.org/wsdl/'
xmlns='http://schemas.xmlsoap.org/wsdl/'>
<message name='getItemCountRequest'>
</message>
<message name='getItemCountResponse'>
</message>
<portType name='InventoryPortType'>
<operation name='getItemCount'>
<input message='tns:getItemCountRequest'/>
<output message='tns:getItemCountResponse'/>
</operation>
</portType>
<soap:binding style='rpc'
transport='http://schemas.xmlsoap.org/soap/http'/>
<operation name='getItemCount'>
<soap:operation soapAction='urn:xmethods-delayed-quotes#getItemCount'/>
<input>
encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
</input>
<output>
encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
</output>
</operation>
</binding>
<service name='InventoryService'>
<soap:address location='http://localhost/soap/server/server.php'/>
</port>
</service>
</definitions>
<description xmlns="http://www.w3.org/ns/wsdl"
xmlns:tns="http://www.tmsws.com/wsdl20sample"
xmlns:whttp="http://schemas.xmlsoap.org/wsdl/http/"
xmlns:wsoap="http://schemas.xmlsoap.org/wsdl/soap/"
targetNamespace="http://www.tmsws.com/wsdl20sample">
<types>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.tmsws.com/wsdl20sample"
targetNamespace="http://www.example.com/wsdl20sample">
<xs:element name="request">
<xs:complexType>
<xs:sequence>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="response">
<xs:complexType>
<xs:sequence>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="status-code" type="xs:anySimpleType"
use="required"/>
</xs:complexType>
</xs:element>
</xs:schema>
</types>
<interface name="RESTfulInterface">
</operation>
</operation>
</operation>
</operation>
</interface>
<binding name="RESTfulInterfaceHttpBinding"
interface="tns:RESTfulInterface"
type="http://www.w3.org/ns/wsdl/http">
whttp:inputSerialization="application/x-www-form-urlencoded"/>
whttp:inputSerialization="application/x-www-form-urlencoded"/>
</binding>
<binding name="RESTfulInterfaceSoapBinding"
interface="tns:RESTfulInterface"
type="http://www.w3.org/ns/wsdl/soap"
wsoap:protocol="http://www.w3.org/2003/05/soap/bindings/HTTP/"
wsoap:mepDefault="http://www.w3.org/2003/05/soap/mep/request-
response">
</binding>
binding="tns:RESTfulInterfaceHttpBinding"
address="http://www.example.com/rest/"/>
<endpoint name="RESTfulServiceSoapEndpoint"
binding="tns:RESTfulInterfaceSoapBinding"
address="http://www.example.com/soap/"/>
</service>
</description>
WSDL - Pendahuluan
WSDL singkatan Web Services Description Language. Ini adalah format standar untuk
menggambarkan layanan web. WSDL dikembangkan bersama oleh Microsoft dan IBM.
Fitur WSDL
WSDL adalah protokol berbasis XML untuk pertukaran informasi dalam lingkungan
desentralisasi dan terdistribusi.
definisi WSDL menjelaskan cara mengakses layanan web dan operasi apa yang akan
tampil.
WSDL Penggunaan
WSDL sering digunakan dalam kombinasi dengan SOAP dan XML Schema untuk
menyediakan layanan web melalui Internet. Sebuah program klien menghubungkan ke
layanan web dapat membaca WSDL untuk menentukan fungsi apa yang tersedia di server.
Setiap tipe data khusus yang digunakan tertanam dalam file WSDL dalam bentuk XML
Schema. Klien kemudian dapat menggunakan SOAP untuk benar-benar memanggil salah satu
fungsi yang tercantum dalam WSDL.
Sejarah WSDL
WSDL 1.1 diajukan sebagai Catatan W3C oleh Ariba, IBM, dan Microsoft untuk
menggambarkan layanan untuk Kegiatan XML W3C pada Protokol XML Maret 2001.
WSDL 1.1 belum didukung oleh World Wide Web Consortium (W3C), namun baru saja
merilis sebuah rancangan untuk versi 2.0 yang akan menjadi rekomendasi (standar resmi),
dan dengan demikian didukung oleh W3C.
WSDL - Elemen
WSDL memecah layanan web dalam tiga tertentu, elemen diidentifikasi yang dapat
dikombinasikan atau digunakan kembali setelah ditetapkan.
Tiga unsur utama dari WSDL yang dapat didefinisikan secara terpisah adalah:
jenis
Operasi
Mengikat
Sebuah dokumen WSDL memiliki berbagai elemen, tetapi mereka yang terkandung dalam
tiga elemen utama tersebut, yang dapat dikembangkan sebagai dokumen terpisah dan
kemudian mereka dapat dikombinasikan atau digunakan kembali untuk membentuk file
WSDL lengkap.
WSDL Elements
Sebuah dokumen WSDL berisi unsur-unsur berikut:
Definisi: Ini adalah elemen akar dari semua dokumen WSDL.Ini mendefinisikan
nama layanan web, menyatakan beberapa ruang nama yang digunakan di seluruh sisa
dokumen, dan berisi semua elemen layanan yang dijelaskan di sini.
Tipe data: Jenis data yang akan digunakan dalam pesan yang dalam bentuk
skema XML.
Pesan: Ini adalah definisi abstrak dari data, dalam bentuk pesan yang disajikan
baik sebagai seluruh dokumen atau sebagai argumen untuk dipetakan ke
metode doa.
Operasi: Ini adalah definisi abstrak dari operasi untuk pesan, seperti penamaan
metode, antrian pesan, atau proses bisnis, yang akan menerima dan memproses
pesan.
Port Jenis: Ini adalah set abstrak operasi dipetakan ke satu atau lebih titik
akhir, mendefinisikan koleksi operasi untuk mengikat;koleksi operasi, seperti
yang abstrak, dapat dipetakan ke beberapa angkutan melalui berbagai binding.
Binding: Ini adalah beton protokol dan format data untuk operasi dan pesan
yang ditetapkan untuk jenis port tertentu.
Port: Ini adalah kombinasi dari mengikat dan alamat jaringan, memberikan
alamat target dari layanan komunikasi.
Layanan: Ini adalah koleksi terkait titik akhir meliputi definisi layanan dalam
file;layanan memetakan mengikat ke pelabuhan dan mencakup definisi diperpanjang.
Impor: Elemen ini digunakan untuk mengimpor dokumen WSDL lain atau
Schemas XML.
CATATAN: bagian WSDL biasanya dihasilkan secara otomatis menggunakan alat web
layanan-sadar.
WSDL Contoh
Diberikan di bawah adalah file WSDL yang disediakan untuk menunjukkan program WSDL
sederhana.
Mari kita asumsikan layanan menyediakan satu fungsi yang tersedia untuk umum, yang
disebutsayHello.Fungsi ini mengharapkan parameter string tunggal dan mengembalikan
string ucapan tunggal. Misalnya, jika Anda lulusduniaparameter maka fungsi
pelayanansayHellomengembalikan ucapan, "Halo, dunia!".
Contoh
Isi file HelloService.wsdl:
<definitions name="HelloService"
targetNamespace="http://www.examples.com/wsdl/HelloService.wsdl"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://www.examples.com/wsdl/HelloService.wsdl"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<message name="SayHelloRequest">
<part name="firstName" type="xsd:string"/>
</message>
<message name="SayHelloResponse">
<part name="greeting" type="xsd:string"/>
</message>
<portType name="Hello_PortType">
<operation name="sayHello">
<input message="tns:SayHelloRequest"/>
<output message="tns:SayHelloResponse"/>
</operation>
</portType>
<output>
<soap:body
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:examples:helloservice"
use="encoded"/>
</output>
</operation>
</binding>
<service name="Hello_Service">
<documentation>WSDL File for HelloService</documentation>
<port binding="tns:Hello_Binding" name="Hello_Port">
<soap:address
location="http://www.examples.com/SayHello/" />
</port>
</service>
</definitions>
contoh Analisis
Definisi: HelloService
pesan:
Port Jenis: sayHello operasiyang terdiri dari permintaan dan layanan respon.
The<definisi> elemen harus menjadi elemen akar dari semua dokumen WSDL.Ini
mendefinisikan nama layanan web.
Berikut adalah potongan kode dari bab terakhir yang menggunakan elemendefinisi.
<definitions name="HelloService"
targetNamespace="http://www.examples.com/wsdl/HelloService.wsdl"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://www.examples.com/wsdl/HelloService.wsdl"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
................................................
</definitions>
Dari contoh di atas, kita dapat menyimpulkan definisi bahwa:
Jenis elemen menggambarkan semua jenis data yang digunakan antara klien dan
server.
WSDL menggunakan spesifikasi XML Schema W3C sebagai pilihan default untuk
menentukan jenis data.
Jika layanan hanya menggunakan XML Schema built-in tipe sederhana, seperti string
dan bilangan bulat, makajeniselemen tidak diperlukan.
WSDL memungkinkan jenis harus didefinisikan dalam elemen yang terpisah sehingga
jenis yang dapat digunakan kembali dengan beberapa layanan web.
Berikut ini adalah potongan kode yang diambil dari spesifikasi W3C. Kode ini
menggambarkan bagaimana elemenjenisdapat digunakan dalam 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>
tipe data mengatasi masalah identifing tipe data dan format yang Anda berniat untuk
menggunakan dengan layanan web Anda. informasi jenis dibagi antara pengirim dan
penerima. Para penerima pesan karena itu perlu akses ke informasi yang digunakan untuk
mengkodekan data dan harus memahami bagaimana untuk memecahkan kode data.
input menjelaskan parameter untuk layanan web dan output menggambarkan data
kembali dari layanan web.
Setiap pesan berisi nol atau lebih<bagian> parameter, satu untuk setiap parameter
dari fungsi layanan web.
<message name="SayHelloRequest">
<part name="firstName" type="xsd:string"/>
</message>
<message name="SayHelloResponse">
<part name="greeting" type="xsd:string"/>
</message>
Di sini, dua elemen pesan didefinisikan. Yang pertama merupakan pesan
permintaanSayHelloRequest,dan yang kedua merupakanSayHelloResponsepesan respon.
Setiap pesan ini berisi bagian elemen tunggal. Untuk permintaan, bagian menentukan
parameter fungsi; dalam hal ini, kita menentukanfirstNameparameter tunggal. Untuk respon,
bagian menentukan nilai fungsi kembali; dalam hal ini, kita tentukan nilai ucapan kembali
tunggal.
<portType name="Hello_PortType">
<operation name="sayHello">
<input message="tns:SayHelloRequest"/>
<output message="tns:SayHelloResponse"/>
</operation>
</portType>
The portType elemen mendefinisikan operasi tunggal, disebutsayHello.
output pesanSayHelloResponse.
Pola Operasi
WSDL mendukung empat pola dasar operasi:
Satu arah
Layanan ini menerima pesan. Oleh karena itu operasi memiliki elemeninputtunggal. Tata
bahasa untuk operasi satu arah adalah:
Permintaan-respon
Layanan ini menerima pesan dan mengirimkan tanggapan. Oleh karena itu operasi memiliki
satu elemeninput,diikuti oleh satu elemenoutput.Untuk merangkum kesalahan,
unsurkesalahanopsional juga dapat ditentukan. Tata bahasa untuk operasi permintaan-respon:
Meminta-respon
Layanan ini mengirimkan pesan dan menerima tanggapan. Oleh karena itu operasi memiliki
satu elemenoutput,diikuti oleh satu elemeninput.Untuk merangkum kesalahan,
unsurkesalahanopsional juga dapat ditentukan. Tata bahasa untuk operasi Solicit-respon:
Binding dapat dibuat tersedia melalui beberapa angkutan termasuk HTTP GET, HTTP
POST, atau SOAP.
Binding memberikan informasi konkret tentang apa protokol yang digunakan untuk
mentransfer operasiportType.
SOAP Binding
WSDL 1.1 termasuk built-in ekstensi untuk SOAP 1.1. Hal ini memungkinkan Anda untuk
menentukan rincian spesifik SOAP termasuk header SOAP, gaya SOAP encoding, dan header
SOAPAction HTTP. Unsur-unsur ekstensi SOAP adalah sebagai berikut:
sabun: mengikat
sabun: Operasi
sabun: tubuh
sabun: mengikat
Elemen ini menunjukkan bahwa mengikat akan tersedia melalui SOAP.
Atributstylemenunjukkan gaya keseluruhan format pesan SOAP. Nilai gayarpcmenentukan
format RPC.
sabun: Operasi
Elemen ini menunjukkan mengikat dari operasi tertentu untuk implementasi SOAP tertentu.
AtributSOAPActionmenentukan bahwa SOAPAction HTTP header digunakan untuk
mengidentifikasi layanan.
sabun: tubuh
Elemen ini memungkinkan Anda untuk menentukan rincian pesan input dan output. Dalam
kasus HelloWorld, elemen body menentukan SOAP encoding style dan URN namespace
terkait dengan layanan tertentu.
<input>
<soap:body
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:examples:helloservice" use="encoded"/>
</input>
<output>
<soap:body
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:examples:helloservice" use="encoded"/>
</output>
</operation>
</binding>
Atribut name memberikan nama unik di antara semua port didefinisikan dalam
dokumen melampirkan WSDL.
<service name="Hello_Service">
<documentation>WSDL File for HelloService</documentation>
<port binding="tns:Hello_Binding" name="Hello_Port">
<soap:address
location="http://www.examples.com/SayHello/">
</port>
</service>
klien layanan web dapat belajar berikut ini dari unsur pelayanan:
<service name="Hello_Service">
<documentation>WSDL File for HelloService</documentation>
<port binding="tns:Hello_Binding" name="Hello_Port">
<soap:address
location="http://www.examples.com/SayHello/">
</port>
</service>
Atribut yang mengikat elemenpelabuhanmengaitkan alamat layanan dengan elemen mengikat
didefinisikan dalam layanan web. Dalam contoh ini, iniHello_Binding
<input>
<soap:body
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:examples:helloservice" use="encoded"/>
</input>
<output>
<soap:body
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:examples:helloservice" use="encoded"/>
</output>
</operation>
</binding>
Definitions
Operations
Service bindings
Definitions are generally expressed in XML and include both data type definitions and
message definitions that use the data type definitions. These definitions are usually based
upon some agreed upon XML vocabulary. This agreement could be within an organization or
between organizations. Vocabularies within an organization could be designed specifically for
that organization. They may or may not be based on some industry-wide vocabulary. If data
type and message definitions need to be used between organizations, then most likely an
industry-wide vocabulary will be used. For more on XML vocabularies, click here.
XML, however, is not necessary required for definitions. The OMG Interface Definition
Language (IDL), for example, could be used instead of XML. If a different definitional
format were used, senders and receivers would need to agree on the format as well as the
vocabulary. Nevertheless, over time, XML-based vocabularies and messages are likely to
dominate. XML Namespaces are used to ensure uniqueness of the XML element names in the
definitions, operations, and service bindings.
Operations describe actions for the messages supported by a Web service. There are four
types of operations:
Solicit response: A request for a response. (The specific definition for this
action is pending.)
Operations are grouped into port types. Port types define a set of operations supported by the
Web service.
Service bindings connect port types to a port. A port is defined by associating a network
address with a port type. A collection of ports defines a service. This binding is commonly
created using SOAP, but other forms may be used. These other forms could include CORBA
Internet Inter-ORB Protocol (IIOP), DCOM, .NET, Java Message Service (JMS), or
WebSphere MQ to name a few.
The following figure shows the relationship of the basic parts of WSDL: