• Tidak ada hasil yang ditemukan

Dokumen - IKB112312 - STMIK EL RAHMA service provider

N/A
N/A
Protected

Academic year: 2017

Membagikan "Dokumen - IKB112312 - STMIK EL RAHMA service provider"

Copied!
8
0
0

Teks penuh

(1)

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.

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 : tier presentasi (service requester, client)  C:\xampp\htdocs\tier2 : 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 Tier 1

Presentasi

Tier 2 Logika bisnis

Web server Apache

(2)

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)

<?php

require_once('lib/nusoap.php');

//buat soap server

$server = new nusoap_server();

//konfigurasi WSDL

$namespace = 'http://teduh.dirgahayu.com';

$server->configureWSDL('HelloWSDL', $namespace); //nama service

$server->wsdl->schemaTargetNamespace = $namespace;

//fungsi tanpa parameter function HelloWorld() {

return 'Hello, World!'; }

//daftarkan fungsi HelloWorld sebagai operasi pada service

$server->register('HelloWorld', //nama operasi

array('null' => 'xsd:any'), //parameter input

array('return' => 'xsd:string'), //parameter output

$namespace, //namespace 'uri:hello.php#HelloWorld' //soapaction

);

//penanganan request

$POST_DATA = isset($GLOBALS['HTTP_RAW_POST_DATA']) ? $GLOBALS['HTTP_RAW_POST_DATA'] : '';

(3)

WSDL

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

(4)

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

 Types

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.

<portType name="HelloWSDLPortType"> <operation name="HelloWorld">

<input message="tns:HelloWorldRequest"/> <output message="tns:HelloWorldResponse"/> </operation>

</portType>

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.

<message name="HelloWorldRequest"> <part name="null" type="xsd:any" /> </message>

<message name="HelloWorldResponse">

<part name="return" type="xsd:string" /> </message>

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).

(5)

<types>

<xsd:schema targetNamespace="http://teduh.dirgahayu.com">

<xsd:import namespace="http://schemas.xmlsoap.org/soap/encoding/" /> <xsd:import namespace="http://schemas.xmlsoap.org/wsdl/" />

</xsd:schema> </types>

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.

<binding name="HelloWSDLBinding" type="tns:HelloWSDLPortType"> <soap:binding style="rpc"

transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="HelloWorld">

<soap:operation soapAction="uri:hello.php#HelloWorld" style="rpc"/> <input><soap:body use="encoded"

namespace="http://teduh.dirgahayu.com"

encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/></input> <output><soap:body use="encoded"

namespace="http://teduh.dirgahayu.com"

encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/></output> </operation>

</binding>

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.

<service name="HelloWSDL">

<port name="HelloWSDLPort" binding="tns:HelloWSDLBinding">

<soap:address location="http://localhost/tier2/hello.php"/> </port>

(6)

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)

<?php

require_once('lib/nusoap.php');

//buat soap client dengan merujuk pada WSDL dari service yang dituju

$client = new nusoap_client('http://localhost/tier2/hello.php?wsdl');

//cek error

$err = $client->getError(); if ($err) {

echo '<h2>Soap client error</h2><pre>' . $err . '</pre>'; }

//pemanggilan operasi tanpa parameter

$result = $client->call('HelloWorld', //panggil operasi

array(null)); //tanpa parameter

if (!$result) {

echo "Tidak ada hasil (result = false)"; } else {

echo $result; //tulis hasilnya

}

echo '<br/>'; ?>

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

(7)

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', //nama operasi

array('name' => 'xsd:string'), //parameter input

array('return' => 'xsd:string'), //parameter output

$namespace, //namespace

'uri:hello.php#Hello' //soapaction

);

//operasi dengan dua parameter function Penjumlahan($op1, $op2) {

$hasil = $op1 + $op2; return $hasil;

}

$server->register('Penjumlahan', //nama operasi

array('bilangan1' => 'xsd:double',

'bilangan2' => 'xsd:double'), //parameter input

array('hasil' => 'xsd:double'), //parameter output

$namespace, //namespace 'uri:hello.php#Penjumlahan' //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', //panggil operasi

array('name' => 'Dunia')); //satu parameter

if (!$result) {

echo "service returned false"; } else {

echo $result; }

echo '<br/>';

//pemanggilan operasi dengan dua parameter

$result = $client->call('Penjumlahan', //panggile operasi

array('bilangan1' => 145.7, //parameter 1

'bilangan2' => 51.4)); //parameter 2

if (!$result) {

echo "service returned false"; } else {

echo $result; }

echo '<br/>';

(8)

Tugas pengganti kuliah

Buat service kalkulator sederhana dengan operasi berikut.

 double penjumlahan (double op1, double op2) ; op1 + op2  double pengurangan (double op1, double op2) ; op1 - op2  double perkalian (double op1, double op2) ; op1 * op2  double pembagian (double op1, double 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}.

Referensi

Dokumen terkait

Mekanisme kerja enzim kitinase dalam menghidrolisis kitin pada jamur patogen, terkait dengan kandungan kitin pada dinding sel jamur tersebut yang akan

Menyatakan dengan sebenarnya bahwa skripsi saya dengan judul : “AKIBAT HUKUM PERTIMBANGAN HAKIM DALAM MENETAPKAN PERCERAIAN TERHADAP HAK ASUH ANAK YANG MASIH MINDERJARIG (

Komponen konatif atau perilaku dalam sikap menunjukkan bagaimana perilaku atau kecenderungan berperilaku yang ada dalam diri seseorang berkaitan dengan objek sikap yang

Hamdanah, M.Ag, selaku Ketua Prodi Manajemen Pendidikan Islam IAIN Palangka Raya yang telah memberikan arahan kepada peneliti dalam menyelesaikan pendidikan di IAIN

Pemeliharaan pada sistem hidrolik alat berat, seperti sudah disinggung di bagian Umum, merupkan langkah usaha untuk mempertahankan kondisi kesiapan alat berat, dengan

Perlakuan lama fermentasi 36 jam dan ketebalan chips 1mm dapat digunakan untuk menghasilkan tepung ubi jalar terfermentasi dengan karakteristik fisik terbaik.. Kata

Aek Nabara Barumun- Peningkatan Jalan Desa Gunung Manaon -Binanga Tolu

Dengan demikian, hasil pengujian ini tidak sesuai dengan teori legitimasi yang menyatakan bahwa semakin lama umur suatu perusahaan atau semakin lama suatu perusahaan berdiri