RPC (Remote Procedur Call), SOAP
(Simple Object Access Protocol), dan REST (REpresentational State Transfer)
Remote
Procedure Call (RPC) adalah sebuah metode yang memungkinkan
kita untuk mengakses sebuah prosedur yang berada di komputer lain. Untuk dapat
melakukan ini sebuah server harus menyediakan layanan remote procedure.
Pendekatan yang dilakuan adalah sebuah server membuka socket, lalu menunggu
client yang meminta prosedur yang disediakan oleh server. Bila client tidak
tahu harus menghubungi port yang mana, client bisa me- request kepada sebuah
matchmaker pada sebuah RPC port yang tetap. Matchmaker akan memberikan port apa
yang digunakan oleh prosedur yang diminta client.
RPC masih menggunakan cara primitif
dalam pemrograman, yaitu menggunakan paradigma procedural programming. Hal itu
membuat kita sulit ketika menyediakan banyak remote procedure. RPC menggunakan
socket untuk berkomunikasi dengan proses lainnya. Pada sistem seperti SUN, RPC
secara default sudah ter- install kedalam sistemnya,
Implementasi
RPC
Untuk proses nya kurang lebih sama
dengan RMI. Kalau RMI kita mengenal proxy dan skeleton, pada RPC dikenal dengan
Stub( Client stub dan Server stub)
Gambar Ilustrasi Implementasi RPC
Remote Reference Modul dan
Communication Modul berada pada tatanan sistem operasi.
Contoh implementasi adalah Sun
Microsystems Open Network Computing (ONC) : RPC specification, XDR (eXternal
Data Representation) standard, UDP atau TCP transport protocol. Xerox Courier :
RPC model, Data representation standard, XNS (Xerox Network
Systems) SPP (Sequenced Packet
Protocol) sbg transport protocol, Apollo s Network Computing Architecture
(NCA), RPC protocol, NDR (Network Data Representation).
Cara
Kerja RPC
Tiap
prosedur yang dipanggil dalam RPC, maka proses ini harus berkoneksi dengan
server remote dengan mengirimkan semua parameter yang dibutuhkan, menunggu
balasan dari server dan melakukan proses kemudian selesai. Proses di atas
disebut juga dengan stub pada sisi klien. Sedangkan Stub pada sisi server
adalah proses menunggu tiap message yang berisi permintaan mengenai prosedur
tertentu.
Diagram diatas memberikan gambaran
mengenai flow dari eksekusi dalam proses RPC. Berikut ini adalah diagram yang
akan menjelaskan secara rinci mengenai proses yang terjadipada klien dan server
dalam eksekusi suatu prosedur RPC :
1.
Klien memanggil prosedur stub lokal.
Prosedur Stub akan memberikan parameter dalam suatu paket yang akan dikirim ke
jaringan. Proses ini disebut sebagai marshalling.
2. Fungsi Network pada O/S (Operating
system – Sistem Operasi) akan dipanggil oleh stub untuk mengirim suatu message.
3. Kemudian Kernel ini akan mengirim
message ke sistem remote. Kondisi ini dapat berupa connectionless atau connection-oriented.
4. Stub pada sisi server akan melakukan
proses unmarshals pada paket yang dikirim pada network.
5. Stub pada server kemudian mengeksekusi
prosedur panggilan lokal.
6. Jika eksekusi prosedur ini telah selesai, maka
eksekusi diberikan kembali ke stub pada server.
7. Stub server akan melakukan proses
marshals lagi dan mengirimkan message nilai balikan ( hasilnya ) kembali ke
jaringan.
8. Message ini akan dikirim kembali ke klien.
9.
Stub klien akan membaca message ini
dengan menggunakan fungsi pada jaringan.
10. Proses
unmarshalled kemudian dilakukan pada message ini dan nilai balikan akan diambil
untuk kemudian diproses pada proses lokal.
Proses diatas akan dilakukan
berulang-ulang ( rekursif ) dalam pengeksekusian RPC dalam suatu remote sistem.
Contoh aplikasi untuk meremote pada teknik RPC (Remote Procedure Call) adalah
menggunakan putty untuk melakukan SSH.
Kelebihan
dan Kekurangan pada RPC
Kelebihan RPC :
- Relatif mudah digunakan
- Pemanggilan remote procedure tidak jauh berbeda dibandingkan pemanggilan local procedure. Sehingga pemrogram dapat berkonsentrasi pada software logic, tidak perlu memikirkan low level details seperti soket, marshalling dan unmarshalling.
- Robust (Sempurna)
- Sejak th 1980-an RPC telah banyak digunakan dalam pengembangan mission-critical application yang memerlukan scalability, fault tolerance, dan reliability.
Kelemahan RPC :
- Tidak fleksibel terhadap perubahan
- Static relationship between client & server at run-time.
- Berdasarkan prosedural/structured programming yang sudah ketinggalan jaman dibandingkan Object Oriented Proggraming
- Kurangnya location transparency
- Misalnya premrogram hanya boleh melakukan pass by value, bukan pass by reference.
- Komunikasi hanya antara 1 klien & 1 server (one-to-one at a time).
- Komunikasi antara 1 klien & beberapa server memerlukan beberapa koneksi yang terpisah.
Contoh
Source Code Sederhana Program RPC
Menggunakan Array asosiatif Dalam Parameter Request.
Jika Anda ingin menggunakan array asosiatif dalam parameter metode Anda, Anda akan perlu menggunakan struct datatype:
Jika Anda ingin menggunakan array asosiatif dalam parameter metode Anda, Anda akan perlu menggunakan struct datatype:
Simple
Object Access Protocol (SOAP)
SOAP adalah singkatan
dari Simple Object Access Protocol, merupakan sebuah protokol komunikasi client
server yang mengirim dan menerima informasi "di atas HTTP". Data yang
dikirim dan diterima dalam format XML. SOAP hampir sama dengan protokol XMLRP,
hanya saja SOAP lebih cocok digunakan untuk data kompleks yang dikirim antar
client-server.
Secara konseptual
SOAP dapat dianggap sebagai DCOM versi XML. SOAP merupakan mekanisme lain yang
memungkinkan penggunaan remote procedure call. SOAP bersifat netral platform,
netral bahasa dan tidak bergantung pada suatu objek model. Sehingga
SOAP-enabled distributed application dapat menjangkau beragam operating sistem,
dimana terdiri dari objek yang berasal dari vendor yang berbeda, ditulis pada
bahasa yang berbeda, dan didasarkan pada objek model yang berbeda.
SOAP menjadi sangat mudah diterima oleh
berbagai pihak – terutama oleh berbagai vendor TI – dikarenakan protokol ini
memanfaatkan berbagai teknologi yang sudah ada sebelumnya dan sudah banyak
digunakan. Misalnya untuk protokol transport, yang paling banyak digunakan
adalah HTTP, walaupun dimungkinkan untuk menggunakan protokol transport
lainnya. Sedangkan untuk format data atau message digunakan XML yang tidak
diragukan lagi manfaat dan perannya di dalam pertukaran data. Dengan demikian,
tidaklah terlalu mengherankan bila kemudian SOAP dianggap sebagai solusi
penyelamat untuk mengatasi berbagai masalah yang dihadapi oleh teknologi –
teknologi pendahulunya.
Pesan SOAP mempunyai struktur sebagai
berikut :
Pesan SOAP berbentuk seperti sebuah
envelope yang berisi header (optional) dan body (required). Header berisi blok
informasi yang berhubungan dengan bagaimana pesan tersebut diproses. Hal ini
meliputi pe-routingan dan delivery setting, authentication atau authorization
assertions, and transaction contexts. Body berisi pesan sebenarnya yang dikirim
dan diproses. Semua yang dapat ditampilkan dengan sintaks XML dapat dimasukkan
dalam pesan body.
Setiap elemen Envelope harus berisi
tepat satu elemen Body. Elemen Body dapat berisi sebanyak mungkin child nodes
yang diperlukan. Isi dari elemen Body adalah pesan. Elemen Body ditentukan
dalam suatu cara dimana dapat berisi valid dan wellformed XML yang telah dibatasi
oleh suatu namespace (qualified).
Jika sebuah Envelope berisi elemen
Header, harus berisi tidak lebih dari satu, dan harus tampak pada first child
dari Envelope, sebelum elemen Body. Header dapat berisi valid, well-formed, dan
dibatasi dengan namespace XML dimana hendak dimasukkan oleh pencipta pesan
SOAP.
Setiap elemen yang berada dalam Header
disebut blok header. Tujuan dari blok header adalah untuk memberitahukan
infomasi yang berhubungan dengan pemrosesan pesan SOAP.
Berikut gambar posisi SOAP dalam
aplikasi dan contoh struktur pesan SOAP :
SOAP anatomi call
Contoh struktur pesan SOAP
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Ø Contoh Program Sederhana menggunakan SOAP.Adapun studi kasus yang dipilih di sini adalah pencarian data mahasiswa. Data mahasiswa ini nanti tersimpan di sebuah server misalkan bernama A, kemudian di server B dibuat semacam interface untuk pencarian data mahasiswa tersebut. Pada saat proses pencarian tersebut, antar server A dan B saling berkomunikasi via NuSOAP webservice.Dalam implementasi studi kasus ini, pertama kita siapkan data mahasiswa terlebih dahulu di server A, misalkan dibuat tabel database sbb:Dan berikut ini adalah sampel recordnyaSelanjutnya, kita siapkan script NuSOAP yang nantinya diletakkan di server A. Script ini nanti diperlukan untuk melayani request yang dilakukan oleh server B.server.phpPerhatikan pada script server.php di atas, bahwa di situ terdapat method dengan nama ‘search’. Method dengan parameter ‘key’ yang merupakan keyword pencarian ini nanti yang akan dipanggil oleh oleh server B ketika pencarian data. Jangan lupa pastikan method ‘search’ harus diregistrasikan dengan perintahJika tidak, maka method tersebut tidak bisa dipanggil. Perhatikan juga bahwa apabila diinginkan data return suatu webservice berupa multiple data, maka data yang direturn harus tersaji dalam bentuk array.Berikutnya, kita buat script interface untuk pencarian data mahasiswa di server B.client.phpKeterangan:Untuk mengetahui ada tidaknya hasil pencarian data yang merupakan response dari server A adalah cukup mudah, yaitu menggunakan function is_array(). Jika data hasil pencarian tidak ditemukan, maka data response bukan merupakan array sehingga nilai is_array() ini adalah FALSE. Sedangkan jika data hasil pencarian ditemukan, maka nilai is_array() adalah TRUE. Bagaimana untuk mengetahui jumlah data hasil pencarian, cukup mudah yaitu gunakan function count() yang akan menghitung jumlah elemen dari data array hasil response.Berikut ini contoh tampilan dari interface pencarian data mahasiswa hasil implementasi dari NuSOAP webservice.
Untuk sekedar mencoba-coba, Anda juga bisa menjalankan script client.php di atas dengan memanfaatkan NuSOAP webservice yang sudah saya sediakan di rosihanari.net, yaitu Anda cukup mengubah.
dalam script client.php menjadi
kemudian jalankan client.php di komputer Anda sendiri, dan tidak perlu membuat script server.php.