Minggu, 19 Juni 2011

Interoperable WSDL...

Interoperable WSDL...
Nilai lebih WSDL adalah mudah dibaca oleh mesin dan manusia
karena ditulis dalam bentuk XML. Beberapa development
tools dapat membuat dokumen WSDL yang digenerate
langsung dari kode Anda atau sebaliknya.
Jika seorang pengembang hendak membuat WSDL (Web
Service Description Language) yang interoperable, maka
pengembang tersebut perlu membuat WSDL yang sesuai
dengan Basic Profile yang dikeluarkan oleh WSI
(Web Service
Interoperability Organization http://
www.wsi.
org). Web
Services Basic Profile 1.0 merepresentasikan deskripsi
terpublikasi tentang standar dan teknologi serta petunjuk
dalam implementasi untuk beberapa spesifikasi web service
yang utama: XML 1.0, XML Schema 1.0, SOAP 1.1, WSDL 1.1
dan UDDI 2.0. Petunjuk ini terdiri atas sekumpulan kebutuhan
yang mendefinisikan bagaimana spesifikasi tersebut
harus dipakai untuk membangun web service yang interoperable.
Dokumen spesifikasi ini dapat diperoleh di http://
www.wsi.
org/Profiles/BasicProfile1.0.
html.
Salah satu cara membuat WSDL adalah dengan menuliskan
kodekode
untuk WSDL tersebut dari awal. Kemudian memverifikasi
kebenarannya dengan menggunakan tool dari WSI.
Menuliskan kode WSDL dari awal memang memakan waktu
dan rentan terhadap error sehingga alternatif untuk mengenerate
WSDL secara otomatis dengan menggunakan platform
tertentu dapat menjadi pilihan. Kemudian jika diperlukan,
WSDL hasil pembangkitan tersebut dapat dimodifikasi
untuk menghilangkan pengaruhpengaruh
platform tertentu.
Template berikut ini merupakan template yang memenuhi
Basic Profile dari WSI
dan dapat digunakan untuk menulis
kode WSDL dari dasar. Memang lebih lama untuk menghasilkan
WSDLnya
tapi akan memastikan bahwa kita mengerti
apa yang dispesifikasikan dan menghasilkan produk yang
bersih.
Lihat contoh WSDL yang memiliki sebuah operasi respon
terhadap request dan sebuah operasi oneway
(satu arah).
Skema contoh mendefinisikan dua buah tipe dan 2 buah
elemen yang terkait yaitu ‘dokumen’ untuk dibawa dalam
pesan SOAP. Bagian yang ditebalkan harus diubah agar sesuai
dengan kebutuhan masingmasing
pengembang sedangkan
bagian XML yang tidak ditebalkan dapat dituliskan begitu
saja sebagai bagian dari WSDL.
Untuk mengkonversi template WSDL ini menjadi WSDL Anda,
lakukan langkahlangkah
berikut:
•Ganti semua instan dari string ‘WebService1’ dengan nama
web service Anda. Contoh: Bila nama web service Anda
bernama ‘Payroll’ maka ‘WebService1PortType’ diubah
menjadi ‘PayrollPortType’
•Ganti semua instan dari URL "http:/www.example.com"
dengan namespace dari web service Anda.
•Buat skemaskema
XML yang mendefinisikan tipe kompleks
global untuk tiap dokumen XML yang diperlukan untuk aksi
send dan receive. Anda juga perlu mendefinisikan sebuah
elemen global yang berbeda untuk tiap operasi yang
mengandung tipe dari skema XML Anda.
•Untuk tiap dokumen XML, ciptakan sebuah tag
‘wsdl:message’ dengan atribut ‘name=’ diset ke ‘Message
YourElementNameHere’ dan atribut ‘element=’ ke sebuah
name yang mengacu pada elemen skema XML dari skema
Anda.
•Pada tag "wsdl:portType" includekan
operasioperasi
yang
diperlukan web service Anda, menjadi responrequest
mereka atau satu arah (oneway).
Ubah nama operasi responrequest
dengan mengikuti dokumen input dan outputnya.
Contohnya ‘requestResponseOperationInDocOutDoc’. Untuk
operasi satuarah,
ganti namanya menjadi
‘oneWayOperationInDoc’.
•Modifikasi elemen ‘wsdl:binding’ untuk menampung sebuah
operasi untuk tiap operasi yang didefinisikan dalam
‘portType’ di atas, modifikasi soapActions agar sesuai dengan
kebutuhan dan kondisi Anda.
•Modifikasi elemen ‘wsdl:service’ untuk menginclude
sebuah
URL yang sesuai untuk platform Anda.
Validasi Web Service Yang Interoperable
Membuat WSDL yang sesuai dengan Basic Profile dari WSI
sayangnya tidak menjamin baik kemungkinan implementasinya
maupun kemampuan interoperasinya. Sebuah dokumen
WSDL adalah spesifikasi. Platform mungkin tidak
mendukung semua fitur yang dispesifikasikan dalam WSDL,
atau salah mengimplementasikan fiturfitur
tersebut sehingga
menimbulkan kegagalan saat runtime.
Langkahlangkah
berikut ini akan membantu dalam mengecek
apakah WSDL dapat diimplementasikan dan menghasilkan
web service yang interoperable:
•Gunakan dokumen WSDL Anda untuk membuat sebuah web
service uji pada platform pilihan Anda. Tempatkan kode uji
pada tiap metode web service sehingga mencakup seluruh
elemen dalam dokumen XML yang dikirim keluar oleh web
service.
•Buat sebuah klien untuk web service Anda. Buat kode uji
untuk mencoba seluruh metode dari web service tersebut,
dengan perhatian khusus untuk memastikan cakupan penuh
terhadap semua elemen dalam dokumen XML yang dikirimkan
keluar. Cobakan kode uji tersebut untuk memverifikasi bahwa
web service Anda berfungsi pada platform yang dipilih.
•Kemudian buat klien uji pada platform lain untuk menguji
interoperabilitas. SARAN: Setidaknya pengujian dilakukan pada
platform .NET dan sebuah platform J2EE. Panggil web service
dari langkah 1 (awal).
•Kemudian buat web service pada setiap platform dengan
menggunakan WSDL dari web service yang diciptakan pada
langkah 1. Lakukan pengujian pengujian clientservice
terhadap
berbagai web service dan klien di berbagai platformplatform
Lihat code di bawah

<?xml version="1.0" encoding="utf8"?>
<wsdl:definitions targetNamespace="http:/www.example.com"
xmlns:tns="http:/www.example.com"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
<wsdl:types xmlns:xsd="http://www.w3.org/2001/XMLSchema" >
<xsd:schema elementFormDefault="qualified"
http:/www.example.com targetNamespace=" ">
<xsd:element name="aFoo" type="tns:fooType"/>
<xsd:complexType name="fooType">
<xsd:sequence>
<xsd:element name="head" type="xsd:int"/>
<xsd:element name="tail" type="xsd:int"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="aBar" type="tns:barType"/>
<xsd:complexType name="barType">
<xsd:sequence>
<xsd:element name="pebbles" type="xsd:int"/>
<xsd:element name="rocks" type="xsd:int"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
</wsdl:types>
<wsdl:message name="MessageFoo">
<wsdl:part name="document" element="tns:aFoo"/>
</wsdl:message>
<wsdl:message name="MessageBar">
<wsdl:part name="document" element="tns:aBar"/>
</wsdl:message>
<wsdl:portType name="WebService1PortType">
<wsdl:operation name="requestResponseOperationFooBar">
<wsdl:input message="tns:MessageFoo"/>
<wsdl:output message="tns:MessageBar"/>
</wsdl:operation>
<wsdl:operation name="oneWayOperationFoo">
<wsdl:input message="tns:MessageFoo"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="WebService1Soap"
type="tns:WebService1PortType"
xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"
style="document"/>
<wsdl:operation name="requestResponseOperationFooBar">
<soap:operation
soapAction="http:/www.example.com/requestResponseMessage"
style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="oneWayOperationFoo">
<soap:operation
soapAction="http:/www.example.com/oneWayMessage"
style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="WebService1">
<wsdl:port name="WebService1Soap" binding="tns:WebService1Soap">
<soap:address
location="http://localhost/WebApplication1/WebService1.asmx"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>

•Kemudian publikasikan WSDL tersebut dan implementasikan
kode web service yang sesungguhnya beserta kliennya.
Langkahlangkah
ini mungkin saja di kemudian hari tidak
akan mencakup isu tertentu yang mungkin mengakibatkan
Anda untuk kembali mengubah WSDL tersebut. Namun
langkahlangkah
tersebut merupakan syarat cukup untuk
memvalidasi WSDL yang dikembangkan, dengan mengacu
pada Basic Profile dari WSI,
untuk mencapai tingkat
interoperabilitas tertentu.

Tidak ada komentar:

Posting Komentar