1. TUGAS PEMROGRAMAN III
TENTANG
RPC ( Remote Procedur Call), SOAP (Simple Object Protocol),
REST (Representational State Transfer)
Disusun Oleh :
EDWIN PRASSETYO
[1100631028]
MI. A
PROGRAM STUDY MANAJEMEN INFORMATIKA
FAKULTAS TEKNIK
UNIVERSITAS MUHAMMADIYAH JEMBER
2013
2. RPC ( Remote Procedur Call), SOAP (Simple Object
Protocol), REST (Representational State Transfer)
RPC (Remote Procedure Call)
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, biasanya RPC ini
digunakan untuk administrasi sistem. Sehingga seorang administrator jaringan dapat mengakses
sistemnya dan mengelola sistemnya dari mana saja, selama sistemnya terhubung ke jaringan.
Kelebihan RPC
Relatif mudah digunakan :
Pemanggilan remote procedure tidak jauh berbeda dibandingkan pemanggilan procedure.
Sehingga pemrogram dapat berkonsentrasi pada software logic, tidak perlu memikirkan
low level details seperti socket, marshalling dan unmarshalling.
Robust (Sempurna):
Sejak th 1980-an RPC telah banyak digunakan dlm pengembangan mission- critical
application yg memerlukan
scalability, fault tolerance, & reliability.
Kekurangan RPC
3.
Tidak fleksibel terhadap perubahan:
Static relationship between client & server at run-time.
Berdasarkan prosedural/structured programming yang sudah ketinggalan
jaman dibandingkan OOP.
Fitur dalam RPC
1. Batching Calls
Mengijinkan klien untuk mengirim message calls ke server dalam jumlah besar secara
berurutan.
2. Broadcasting Calls
Menijinkan klien untuk mengirimkan paket data ke jaringan dan menunggu balasan dari
network.
3. Callback Procedures
Mengijinkan server untuk bertindak sebagai klien dan melakukan PRC callback ke proses
yang dijalankan klien.
4. Select Subrutin
Memeriksa deskripsi suatu file dan messages dalamantrian untuk melihat apakah siap dibaca
atau ditulis,atau ditahan. (mengijinkan server untuk menginterupsi suatu aktivitas.
Struktur Protokol Message RPC
Call Message
Dilakukan oleh klien, dimana meminta server untuk mengeksekusi suatu prosedur.
Terdapat nilai-nilai unsigned integer yang digunakan untuk mengidentifikasi prosedurremote
yang diminta:
1. Nomor Program
2. Nomor Versi dari Program
3. Nomor Prosedur
Reply Message
4. Dikirimkan oleh server jaringan, bervariasi tergantung apakah call messages yang diminta klien
diterima atau ditolak. Mengandung informasi:
1. RPM mengeksekusi call message dengan sukses
2. Implementasi remote tidak sesuai dengan protokol yang digunakan (versi yang lebih tinggi
atau lebih rendah ditolak)
3.Program remote tidak tersedia pada sistem remote
4. Program remote tidak mendukung versi yang diminta klien
5. Nomor prosedur yang diminta tidak ada
Prinsip RPC dalam program Client-Serve
Skema RPC ini dilakukan juga pada proses-proses yang running di komputer berlainan
Sebelum mekanisme RPC digunakan, data harus di-packaging ke dalam
formattransimisi. Langkah ini dinamakan marshalling
Proxy bertanggung jawab untuk marshalling data, kemudian mengirimkan datadan
meminta instans dari komponen (remote)
Stub menerima request, unmarshall data, dan memanggil method yang diminta.
Kemudian proses mengembalikan nilai yang diinginkan .Fitur dalam RPC
Batching Calls:Fitur Batching calls mengijinkan klien untuk mengirim message calls ke server
dalam jumlah besar secara sequence ( berurutan )
Broadcasting Call:Fitur Broadcasting mengijinkan klien untuk mengirimkan paket data
kejaringan dan menunggu balasan dari network. FItur ini menggunakanprotokol yang
berbasiskan paket data seperti UDP/IP sebagai mediumnya.Broadcast RPC membutuhkan
layanan port mapper RPC untukmengimplementasikanfung sinyA
Callback ProcedureS:Fitur Callback Procedures mengijinkan server untuk bertindak sebagai
Menggunakan select SubrutiN:Fitur ini akan memeriksa deskripsi dari suatu file dan messages
dalamantrian untuk melihat apakah mereka siap untuk dibaca (diterima) atauditulis (dikirim),
atau mereka dalam kondisi ditahan sementara. Prosedurini mengijinkan server untuk
menginterupsi suatu aktivitas, memeriksadatanya, dan kemudian melanjutkan proses aktivitas
tersebut.
Langkah-langkah dalam RPC
5. 1. Prosedur client memanggil client stub
2. Client stub membuat pesan dan memanggil OS client
3. OS client mengirim pesan ke OS server
4. OS server memberikan pesan ke server stub
5. Server stub meng-unpack parameter-parameter untuk memanggil server
6. Server mengerjakan operasi, dan mengembalikan hasilnya ke server stub
7. Server stub mem-pack hasil tsb dan memanggil OS server
8. OS server mengirim pesan (hasil) ke OS client
9. OS client memberikan pesan tersebut ke client stub
10. Client stub meng-unpack hasil dan mengembalikan hasil tersebut ke client
Berikut source code menggunakan callrpc Example (rusers) :
#include <stdio.h>
#include <rpc/rpc.h>
#include <rpcsvc/rusers.h>
int main(int argc, char **argv)
{
long nusers;
enum clnt_stat stat;
if (argc<=1)
{
printf("Usage: %s hostnamen", argv[0]);
exit(1);
}
stat=callrpc(argv[1], RUSERSPROG, RUSERSVERS_3, RUSERSPROC_NUM,
(xdrproc_t)xdr_void, NULL,
(xdrproc_t)xdr_u_long, (char*)&nusers);
if(stat != RPC_SUCCESS)
{
clnt_perrno(stat);
printf("n");
exit(1);
}
printf("There are %d users on %sn", nusers, argv[1]);
6. }
SOAP (Simple Object Access Protocol)
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.
Pesan SOAP mempunyai struktur sebagai berikut :
Keuntungan dari SOAP
Format yang sederhana dan dapat dikembangkan
Bisa dijalankan dimana saja tidak terbatas pada platform tertentu
Bisa menggunakan bahasa pemrograman apa saja
7.
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 source code untuk penggunaan SOAP
Example 1 SOAP Message Embedded in HTTP Request
POST /StockQuote HTTP/1.1
Host: www.stockquoteserver.com
Content-Type: text/xml; charset="utf-8"
Content-Length: nnnn
SOAPAction: "Some-URI"
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<m:GetLastTradePrice xmlns:m="Some-URI">
<symbol>DIS</symbol>
</m:GetLastTradePrice>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Example 2 SOAP Message Embedded in HTTP Response
HTTP/1.1 200 OK
Content-Type: text/xml; charset="utf-8"
Content-Length: nnnn
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
8. SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
<SOAP-ENV:Body>
<m:GetLastTradePriceResponse xmlns:m="Some-URI">
<Price>34.5</Price>
</m:GetLastTradePriceResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
REST (REpresentational State Transfer)
REST pada dasarnya setiap URL unik adalah representasi dari beberapa objek. Kita dapat
memperoleh konten-konten objek tersebut menggunakan HTTP GET, untuk menghapusnya, kita
dapat menggunakan POST, PUT, atau DELETE untuk memodifikasi objek (dalam praktiknya,
kebanyakan service menggunakan POST untuk ini).
Keuntungan REST
Bahasa dan platform agnostic
Lebih sederhana simple untuk dikembangkan ketimbang SOAP
Mudah dipelajari, tidak bergantung pada tools
Ringkas, tidak membutuhkan layer pertukaran pesan (messaging) tambahan
Secara desain dan filosofi lebih dekat dengan Web
Kelemahan REST
Mengasumsi model point to point komunikasi tidak dapat digunakan untuk lingkungan
komputasi terdistribusi dimana pesan akan melalui satu atau lebih perantara
Kurangnya dukungan standar untuk keamanan, kebijakan, keandalan pesan dll, sehingga
layanan yang mempunyai persyaratan lebih canggih lebih sulit untuk dikembangkan
Berkaitan dengan model transport HTTP
Contoh source code untuk penggunaan REST
Buat Database dengan nama perpustakaan dan tabel buku:
CREATE TABLE IF NOT EXISTS `buku` (
9. `id` int(11) NOT NULL,
`judul` varchar(100) NOT NULL,
`isbn` varchar(13) NOT NULL,
`penerbit` varchar(100) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO `buku` (`id`, `judul`, `isbn`, `penerbit`) VALUES
(123, 'Pemrograman PHP Lanjut', '1234567891234', 'Informatika Teknologi'),
(321, 'Jurus Silat Merpati Hitam', '9876543212345', 'Merpati Silat'),
(112, 'Mudah Belajar PHP', '9874536728135', 'Informatika Teknologi'),
(463, 'Jalan Menuju Surga', '7764839267412', 'Surga Dunia Sentosa'),
(421, 'Aku Ingin Pulang Kampung', '6637819314653', 'Kangen Ibu'),
(764, 'Pacarku Ada Lima', '6735631986342', 'Playboy Indonesia');
Setelah itu berikut kode php untuk menampilkan data berdasarkan judul secara ASC dalam
format json.
Ketika diakses, hasilnya seperti berikut: