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:





