TUGAS PEMROGRAMAN 3
MEMBUAT ESSAY TENTANG RPC, REST DAN SOAP
RPC ( Remote Procedure Call )
RPC
adalah suatu protokol
yang menyediakan suatu
mekanisme
komunikasi antar
proses yang mengijinkan
suatu program untuk
berjalan
pada
suatu komputer tanpa terasa adanya eksekusi kode pada sistem yang
jauh (remote
system). RPC mengasumsi
keberadaan dari low-level protokol
transportasi seperti
TCP atau UDP
untuk membawa pesan
data dalam
komunikasi suatu
program. Protokol RPC dibangun diatas protokol
eXternal
Data
Representation (XDR), yang merupakan standar dari representasi data
dalam
komunikasi remote. Protokol XDR mengubah parameter dan hasil dari
tiap
servis RPC yang disediakan.
Protokol RPC
mengijinkan pengguna (users)
untuk bekerja dengan
prosedur remote
sebagaimana bekerja dengan
prosedur lokal. Prosedur
panggilan remote
(remote procedure calls)
didefinisikan melalui rutin
yang
terkandung didalam
protokol RPC. Tiap
message dari panggilan
akan
disesuaikan
dengan message balikan. Protokol RPC sendiri sebenarnya adalah
suatu protokol
untuk ”meneruskan pesan”
yang mengimplemntasikan
protokol non-RPC
lain seperti panggilan
remote batching dan
broadcasting.
Protokol
ini juga mendukung adanya prosedur callback dan select subroutine
pada
sisi server.
Contoh Program RPC
Respresentational State Transfer (REST)
CONTOH SOURCECODE SOAP
Respresentational State Transfer (REST)
REST
adalah salah satu jenis web service yang menerapkan konsep perpindahan antar state. State disini dapat digambarkan
seperti jika browser meminta suatu halaman web, maka serverakan mengirimkan
state halaman web yang sekarang ke browser. Bernavigasi melalui link-link yang
disediakan sama halnya dengan mengganti state dari halaman web.
Begitu pula REST bekerja, dengan bernavigasi melalui link-link
HTTP untuk melakukan aktivitas tertentu, seakan-akan terjadi perpindahan state
satu sama lain. Perintah HTTP yang bisa digunakan adalah fungsi GET, POST, PUT
atau DELETE. Balasan yang dikirimkan adalah dalam bentuk XML sederhana tanpa
ada protokol pemaketan data, sehingga informasi yang diterima lebih mudah
dibaca dan diparsing disisi client.
(REST –
Respresentational State Transfer) itu, bukanlah spesifikasi standard seperti
halnya XML-RPC dan SOAP, tapi desain dan style arsitektural dari arsitektur
software berbasis network.
REST
merupakan collection dari prinsip-prinsip arsitektur network yang menggambarkan
bagaimana mengakses resource yang didefinisikan.
REST
(Representational State Transfer). Terminologi REST dikemukakan oleh Roy
Fielding (salah satu penulis spesifikasi HTTP) dalam disertasi Ph.D. nya untuk
menggambarkan sebuah style arsitektur dari sistem network. Ada dua pengartian
REST, pertama: REST merupakan collection (saya menggunakan kata tetap
collection, bukan koleksi, karena AtomPub menggunakan element untuk
mendeskripsikan koleksi service) dari prinsip-prinsip arsitektur network yang
menggambarkan bagaimana resource didefinisikan dan dialamati (bagaimana
mengakses resource yang didefinisikan).
Pengertian
kedua: Sebuah interface yang mengirim data (pada domain tertentu) melalui HTTP
tanpa menggunakan layer messaging seperti SOAP atau session tracking via HTTP
cookies. Kedua pengertian ini dapat saling bertentangan dan saling menimpa.
Kita dapat saja mendesain sistem perangkat lunak besar yang sesuai dengan style
arsitektur REST tanpa perlu menggunakan HTTP dan tanpa perlu berinteraksi
dengan WWW. Kita juga dapat mendesain interface berbasis XML+HTTP yang tidak
sesuai dengan prinsip REST, tapi meniru RPC-style.
Inilah yang
yang membuat bingung, bagaimana sih terminologi REST harus digunakan? Dan
sistem seperti apa sih yang sesuai dengan prinsip REST? Sistem yang mengikuti
(mengimplementasi) sesuai dengan prinsip REST nya si Roy Fielding ini sering
disebut sebagai RESTful. AtomPub (Atom Publishing Protocol) yang digunakan
untuk posting blog sering dianggap sebagai standard RESTful protocol (saya akan
bahas AtomPub juga, nanti). OK, sampai saat ini pasti konsep RESTful masih
belum jelas bagi Anda, kita kembali lagi ke REST. Kenapa si Roy Fielding
menyebut style arsitektur miliknya ini sebagai “Representational State
Transfer” ? Hmmm..
Ada tiga
kata yang perlu di jelaskan disini, yaitu “Representation” (saya akan selalu
menggunakan kata representation, tapi tetap berarti suatu representasi, wujud
atau bentuk), “State” dan “Transfer“. OK, kita anggap web terdiri atas kumpulan
resources. Domain-domain di internet ini memberikan resources baik kepada
browser atau aplikasi yang diprogram untuk mengakses resource tersebut. Sebuah
resource merupakan sesuatu (dokumen, file atau apapun) yang dinginkan oleh
pengakses (client). Browser menginginkan resource tersebut disajikan dalam dokumen
HTML, aplikasi lain mengingikan dalam format XML agar bisa diolah lebih lanjut.
CONTOH SOURCECODE REST
Simple Object Access Protocol SOAP
S Simple
Object Access Protocol (SOAP) adalah sebuah standarisasi dasar dari protokol
komunikasi untuk saling bertukar informasi terstruktur di antara
aplikasi-aplikasi yang berjalan. SOAP adalah sebuah aplikasi pesan XML yang
sangat bergantung pada skema XML dan XML namespaces untuk
mendifinisikannya. SOAP juga sangat bergantung dengan beberapa protokol layer
lainnya seperti HTTP, JMS, RPC untuk transmisi pesan.
SOAP sangat
efektif untuk berbabagai macam aplikasi untuk berkomunikasi walaupun berjalan
pada sistem operasi yang berbeda dengan teknologi dan bahasa pemrograman yang
berbeda-beda pula.
Pesan
SOAP mempunyai struktur sebagai berikut :
SOAP Message Structure
Keuntungan
dari SOAP
· Format yang
sederhana dan dapat dikembangkan
Bisa
dijalankan dimana saja tidak terbatas pada platform tertentu
· Bisa
menggunakan bahasa pemrograman apa saja
· Multi-protocol
seperti HTTP, JMS, RPC, SMTP, dll.
· Dapat melewati
firewalls sehingga mendukung model HTTP get / reponse
· Tipe yang kuat
dan melekat pada sebuah kontrak
Kekurangan
dari SOAP
· Walaupun
sederhana, pesannya dapat panjang karena kebutuhannya untuk mengemasnya dalam
bentuk SOAP envelope
· Karena SOAP
berbasis XML, dibutuhkan waktu untuk parsing XML tersebut karena harus di kedua
pihak melakukannya (pengirim dan penerima pesan)
·
Walaupun SOAP standart yang terbuka, tidak semua bahasa mendukung dengan
baik. Yang terbaik untuk mendukung SOAP adalah JAVA, .Net, dan Flex
Server.php
< ?php
// mengincludekan file berisi class nusoap
require_once('lib/nusoap.php');
// instansiasi class soap untuk server
$server = new soap_server;
// meregistrasi 'method' untuk proses penjumlahan
dengan nama 'jumlahkan'
$server->register('jumlahkan');
// detil isi method 'jumlahkan'
function jumlahkan($x, $y) {
return $x +
$y;
}
// memberikan response service
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ?
$HTTP_RAW_POST_DATA : '';
$server->service($HTTP_RAW_POST_DATA);
?>
Keterangan: Setiap
method yang dibuat, nama method harus diregisterkan dengan perintah
$server->register('nama method');
Langkah berikutnya,
kita tulis script yang nantinya diletakkan di komputer A di sisi client
Client.php
require_once('lib/nusoap.php');
// dua bilangan yang akan dijumlahkan
$bil1 = 10;
$bil2 = 25;
// instansiasi obyek untuk class nusoap client
$client = new
nusoap_client('http://nomor_ip_komputerB/../server.php');
// proses call method 'jumlahkan' di script server.php
yang ada di komputer B
$result = $client->call('jumlahkan', array('x'
=> $bil1, 'y' => $bil2));
echo "Hasil penjumlahan
".$bil1." dan ".$bil2." adalah
".$result."
";
";
?>
Jika script client.php ini dijalankan di komputer
client (dalam hal ini komputer A), maka akan menghasilkan output sbb: