Tugas pemrograman III_1100631028

313 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
313
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Tugas pemrograman III_1100631028

  1. 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. 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. 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. 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. 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. 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. 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. 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. 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:

×