Dokumen - IKB112312 - STMIK EL RAHMA service provider

SERVICE PROVIDER dan WSDL

Pada panduan ini, akan disimulasikan pemisahan dan komunikasi antara tier presentasi dan tier
logika bisnis (seperti pada gambar arsitektur aplikasi 3-tier berikut). Kedua tier tersebut berjalan di
satu mesin komputer. Basis data tidak dibahas.

Tier 1
Presentasi

Tier 2
Logika bisnis

Web server
Apache

Web server
Apache

Persiapan
XAMPP





Dowload dari http://www.apachefriends.org/en/xampp.html
Install XAMPP. Pada panduan ini di C:\xampp (Windows)
Jalankan web server Apache

Buat subfolder berikut pada folder C:\xampp\htdocs



C:\xampp\htdocs\tier1
C:\xampp\htdocs\tier2

: tier presentasi (service requester, client)
: tier logika bisnis (service provider, server)

NuSOAP





Download dari http://sourceforge.net/projects/nusoap/
Extract nusoap-0.9.5.zip
Kopi folder lib hasil ekstraksi ke folder tier1 dan tier2 tersebut di atas.

Basisdata

Pengembangan server
Fokus pengembangan server pada panduan ini adalah untuk memfasilitasi mempelajari WSDL ,
bukan detil pemrograman dengan PHP dan NuSOAP.
Tulis program berikut, simpan sebagai file hello.php di folder tier2 (server)


WSDL
Buka alamat localhost/tier2/hello.php pada browser.

Link WSDL

Klik link WSDL atau buka alamat localhost/tier2/hello.php?wsdl , cermati WSDL yang ditampilkan.


NuSOAP menggunakan WSDL versi 1.1 (http://www.w3.org/TR/wsdl). Struktur WSDL ini terdiri dari
lima bagian utama, yaitu:






Types
Message
PortType
Binding
Service

PortType
Cari elemen portType di bagian tengah dokumen WSDL.
PortType merupakan kumpulan operasi (operation) yang tersedia pada server. PortType mempunyai
nama. Dengan NuSOAP, nama portType diberikan secara otomatis dengan merujuk pada nama
service.








Tiap operasi mempunyai nama sesuai yang didaftarkan pada program PHP. Untuk menggunakan
operasi, diperlukan pesan (message), yakni input message dan/atau output message yang kemudian
didefinisikan di bagian Message.

Message
Lihat elemen message sebelum elemen portType.
Masing-masing pesan yang disebutkan di semua operasi di bagian PortType didefinisikan sebagai
satu elemen tersendiri. Pesan bisa terdiri dari beberapa bagian (part). Part bisa menyatakan
parameter operasi beserta tipe datanya.








Apabila part mempunyai tipe data kompleks, tipe data akan didefinisikan di bagian Types. Pada
contoh, part menggunakan tipe data sederhana XML Schema. Tipe data XML Schema dapat dilihat
di http://www.w3.org/TR/xmlschema-2/

Types
Lihat elemen types di bagian awal dokumen WSDL (atau sebelum elemen message).
Di contoh, karena part pada message tidak menggunakan tipe data kompleks, pada bagian Types
tidak berisi definisi tipe data kompleks.








Binding

Lihat elemen binding setelah elemen portType.
Binding menyatakan format pesan dan protokol transport bagi portType. Binding mempunyai nama
dan merujuk ke portType tertentu. Pada contoh, protokol transport yang digunakan adalah
SOAP/HTTP.
Tiap operasi ditentukan gaya (style) pemanggilannya, misal rpc berarti Remote Procedure Call. Tiap
pesan dalam operasi ditentukan format encoding yang digunakan, misal SOAP encoding.









Service
Lihat elemen service di bagian akhir dokumen WSDL atau setelah elemen binding.
Service merupakan kumpulan port . Suatu port menyatakan alamat fisik suatu binding. Service dan
port mempunyai nama. Dengan NuSOAP, nama port diberikan secara otomatis dengan merujuk
pada nama service.







Pengembangan client
Fokus pengembangan client pada panduan ini adalah untuk memfasilitasi cara penggunaan WSDL
untuk pemanggilan server, bukan detil pemrograman dengan PHP dan NuSOAP.
Tulis program berikut, simpan sebagai file client.php di folder tier1 (client)


Buka alamat localhost/tier1/client.php pada browser.

Pemanggilan server oleh client berhasil dilakukan!

//panggil operasi
//tanpa parameter

//tulis hasilnya


Operasi dengan parameter


Tambahkan operasi berikut pada program hello.php di server. Letakkan sebelum baris untuk
penanganan request.

//operasi dengan parameter
function Hello($name) {
return 'Hello, ' . $name . '!';
}
$server->register('Hello',
array('name' => 'xsd:string'),
array('return' => 'xsd:string'),
$namespace,
'uri:hello.php#Hello'
);

//nama operasi
//parameter input

//parameter output
//namespace
//soapaction

//operasi dengan dua parameter
function Penjumlahan($op1, $op2) {
$hasil = $op1 + $op2;
return $hasil;
}
$server->register('Penjumlahan',
array('bilangan1' => 'xsd:double',
'bilangan2' => 'xsd:double'),
array('hasil' => 'xsd:double'),
$namespace,
'uri:hello.php#Penjumlahan'
);

//nama operasi
//parameter input
//parameter output

//namespace
//soapaction

Lihat dan cermati WSDL yang dihasilkan.
Tambahkan baris program berikut pada program client.php di client.
//pemanggilan operasi dengan satu parameter
$result = $client->call('Hello',
array('name' => 'Dunia'));

//panggil operasi
//satu parameter

if (!$result) {
echo "service returned false";
} else {
echo $result;
}
echo '';
//pemanggilan operasi dengan dua parameter
$result = $client->call('Penjumlahan',

array('bilangan1' => 145.7,
'bilangan2' => 51.4));
if (!$result) {
echo "service returned false";
} else {
echo $result;
}
echo '';

Buka alamat localhost/tier1/client.php pada browser.

//panggile operasi
//parameter 1
//parameter 2

Tugas pengganti kuliah
Buat service kalkulator sederhana dengan operasi berikut.





double penjumlahan (double op1, double op2)
double pengurangan (double op1, double op2)
double perkalian (double op1, double op2)
double pembagian (double op1, double op2)

; op1 + op2
; op1 - op2
; op1 * op2
; op1 / op2

Buat program client yang menampilkan form HTML (seperti contoh berikut, boleh tidak sama persis).
Jika tombol diklik, client memanggil operasi perhitungan yang sesuai pada service dan menampilkan
hasilnya pada text {hasil perhitungan}.

Tugas boleh dikerjakan berkelompok 2 orang.