The Hunger Games Mockingjay Pin

Minggu, 24 Maret 2013

Web Services Description Language

Pengantar Web Science

Nama: Fiqie Fatihaan Arifin
NPM: 52411880
Kelas: 2IA04




Web Services Description Language

1. Definisi
  
Web Service Description language (WSDL) adalah sebuah bahasa yang berbasis XML, yang mana fungsinya untuk mendeskripsikan tentang cara mengakses Web Services dan bahasa deskripsi yang digunakan untuk menggambarkan fungsi yang ditawarkan oleh Web Services. 

WSDL mendefinisikan pesan-pesan (baik yang abstrak dan konkrit) yang dikirim ke dan menuju web service, koleksi-koleksi digital dari pesan-pesan (port type, antarmuka), serta bagaimana port type yang ditentukan dijadikan wire protokol.

WSDL menggambarkan layanan sebagai koleksi endpoint jaringan, atau port. Spesifikasi WSDL menyediakan format XML untuk dokumen dengan tujuan tertentu.  WSDL sering digunakan dalam kombinasi dengan SOAP dan XML Schema untuk menyediakan Web Service melalui Internet. Sebuah program klien yang terhubung ke layanan Web dapat membaca file WSDL untuk menentukan operasi 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 dari operasi yang tercantum dalam file WSDL menggunakan XML atau HTTP.



2.Sejarah

WSDL versi 1.0 IBM, Microsoft, dan Ariba mengembangkan versi ini pada bulan September, 2000. berfungsi mendeskripsikan Web Service untuk toolkit SOAP. WSDL versi 1.0 dikembangkan dengan kombinasi dari bahasa deskripsi service yaitu: NASSL (Network Application Service Spesification Language) dari IBM dan SDL (Service Description Language) dari Microsoft.


WSDL versi 1.1 dirilis pada bulan September, 2001. pada versi ini tidak ada perubahan besar antara versi sebelumnya yaitu versi 1.0


WSDL versi 1.2 dirilis pada bulan Juni 2003, WSDL versi 1.2 lebih mudah dan lebih fleksibel untuk para developer daripada versi sebelumnya. pada versi ini fitur non-interoperable diupayakan untuk dihapus, serta mendefinisikan binding HTTP 1.1 secara lebih baik lagi.  Pada WSDL versi ini tidak didukung oleh kebanyakan server/vendor SOAP.


WSDL versi 2.0 pada bulan Juni 2007. WSDL versi 1.2 diganti menjadi WSDL versi 2.0 pada versi ini terjadi perubahan substansi dari WSDL versi 1.1. Perubahan-perubahan tersebut adalah:

  • Ditambahkannya semantik pada bahasa deskripsi (description language)
  • Dihilangkannya message construct.
  • Tidak mendukung operator overloading.
  • Endpoints menggantikan ports.
3.Elemen-Elemen File WSDL  
Pada file WSDL terdapat elemen-elemen penting, sebagai berikut:

A. Message

Sesuatu yang abstrak, definisi tipe data yang akan dikomunikasikan.



B. Operation.
Deskripsi abstrak dari suatu aksi yang didukung oleh service. Pada dasarnya menunjukkan nama operasi web service dan pesan input output.

C.Port Type
Mendeskripsikan sebuah web service, operasi-operasi yang dapat dijalankan, dan pesan-pesan yang dilibatkan pada Web Service.

D.Binding 
 protokol komunikasi yang digunakan oleh web service.

E.Port 
Titik akhir tunggal (single endpoint) yang didefinisikan sebagai sebuah 'binding' dan alamat jaringan (network address).

F.Service.
Sekumpulan endpoint yang saling berhubungan, akan menunjukkan file/path mana yang akan ditempatkan pada file WSDL ini


Contoh WDSL 2.0 Code:
 
<?xml version="1.0" encoding="UTF-8"?>
<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">
 
<!-- Abstract type -->
   <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:element name="header" maxOccurs="unbounded">
                     <xs:complexType>
                        <xs:simpleContent>
                           <xs:extension base="xs:string">
                              <xs:attribute name="name" type="xs:string" use="required"/>
                           </xs:extension>
                        </xs:simpleContent>
                     </xs:complexType>
                  </xs:element>
                  <xs:element name="body" type="xs:anyType" minOccurs="0"/>
               </xs:sequence>
               <xs:attribute name="method" type="xs:string" use="required"/>
               <xs:attribute name="uri" type="xs:anyURI" use="required"/>
            </xs:complexType>
         </xs:element>
 
         <xs:element name="response">
            <xs:complexType>
               <xs:sequence>
                  <xs:element name="header" maxOccurs="unbounded">
                     <xs:complexType>
                        <xs:simpleContent>
                           <xs:extension base="xs:string">
                              <xs:attribute name="name"  use="required"/>
                           </xs:extension>
                        </xs:simpleContent>
                     </xs:complexType>
                  </xs:element>
                  <xs:element name="body" type="xs:anyType" minOccurs="0"/>
               </xs:sequence>
               <xs:attribute name="status-code" type="xs:anySimpleType" use="required"/>
               <xs:attribute name="response-phrase" use="required"/>
            </xs:complexType>
         </xs:element>
      </xs:schema>
   </types>
 
<!-- Abstract interfaces -->
   <interface name="RESTfulInterface">
      <fault name="ClientError" element="tns:response"/>
      <fault name="ServerError" element="tns:response"/>
      <fault name="Redirection" element="tns:response"/>
      <operation name="Get" pattern="http://www.w3.org/ns/wsdl/in-out">
         <input messageLabel="In" element="tns:request"/>
         <output messageLabel="Out" element="tns:response"/>
      </operation>
      <operation name="Post" pattern="http://www.w3.org/ns/wsdl/in-out">
         <input messageLabel="In" element="tns:request"/>
         <output messageLabel="Out" element="tns:response"/>
      </operation>
      <operation name="Put" pattern="http://www.w3.org/ns/wsdl/in-out">
         <input messageLabel="In" element="tns:request"/>
         <output messageLabel="Out" element="tns:response"/>
      </operation>
      <operation name="Delete" pattern="http://www.w3.org/ns/wsdl/in-out">
         <input messageLabel="In" element="tns:request"/>
         <output messageLabel="Out" element="tns:response"/>
      </operation>
   </interface>
 
<!-- Concrete Binding Over HTTP -->
   <binding name="RESTfulInterfaceHttpBinding" interface="tns:RESTfulInterface" 
            type="http://www.w3.org/ns/wsdl/http">
      <operation ref="tns:Get" whttp:method="GET"/>
      <operation ref="tns:Post" whttp:method="POST" 
                 whttp:inputSerialization="application/x-www-form-urlencoded"/>
      <operation ref="tns:Put" whttp:method="PUT" 
                 whttp:inputSerialization="application/x-www-form-urlencoded"/>
      <operation ref="tns:Delete" whttp:method="DELETE"/>
   </binding>
 
<!-- Concrete Binding with SOAP-->
   <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">
      <operation ref="tns:Get" />
      <operation ref="tns:Post" />
      <operation ref="tns:Put" />
      <operation ref="tns:Delete" />
   </binding>
 
 
<!-- Web Service offering endpoints for both bindings-->
   <service name="RESTfulService" interface="tns:RESTfulInterface">
      <endpoint name="RESTfulServiceHttpEndpoint" 
                binding="tns:RESTfulInterfaceHttpBinding" 
                address="http://www.example.com/rest/"/>
      <endpoint name="RESTfulServiceSoapEndpoint" 
                binding="tns:RESTfulInterfaceSoapBinding" 
                address="http://www.example.com/soap/"/>
   </service>
</description>






Sumber: http://en.wikipedia.org/wiki/Web_Services_Description_Language




Tidak ada komentar:

Posting Komentar