Tugas pemrogramaniii 1100631025_rpc,soap,rest_asfi yuli wulandari

12
TUGAS PEMROGRAMAN III TENTANG RPC (Remote Procedure Calls), REST (Representational State Transfer), SOAP (Simple Object Access Protocol) Oleh : ASFI YULI WULANDARI 1100631025/MI_A PROGRAM STUDY MANAJEMEN INFORMATIKA FAKULTAS TEKNIK UNIVERSITAS MUHAMMADIYAH JEMBER 2013

Transcript of Tugas pemrogramaniii 1100631025_rpc,soap,rest_asfi yuli wulandari

Page 1: Tugas pemrogramaniii 1100631025_rpc,soap,rest_asfi yuli wulandari

TUGAS PEMROGRAMAN III

TENTANG RPC (Remote Procedure Calls), REST (Representational State

Transfer), SOAP (Simple Object Access Protocol)

Oleh :

ASFI YULI WULANDARI

1100631025/MI_A

PROGRAM STUDY MANAJEMEN INFORMATIKA

FAKULTAS TEKNIK

UNIVERSITAS MUHAMMADIYAH JEMBER

2013

Page 2: Tugas pemrogramaniii 1100631025_rpc,soap,rest_asfi yuli wulandari

Pengertian Remote Procedure Calls (RPC)

Pengertian Remote Procedure Calls (RPC) 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.

Klien dan Server Klien adalah komputer atau proses yang mengakses suatu servis/layanan atau resources dari

proses atau komputer pada suatu jaringan. Server adalah komputer yang menyediakan

servis/layanan dan resources, dan yang mengimplementasikan servis jaringan. Tiap servis pada

network adalah susunan dari program remote, dan tiap program remote mengimplementasi

prosedur remote. Semua prosedur berikut parameternya dan hasilnya didokumentasi secara

spesifik pada protokol suatu program.

Protokol Message RPC Protokol Message RPC didefinisikan dengan menggunakan deskripsi data eXternal Data

Representation ( XDR ) yang meliputi struktur, enumerasi dan union. Pembahasan lebih

lanjut akan diterangkan pada bab berikutnya mengenai implementasi RPC.

Protokol Message ini membutuhkan faktor-faktor pendukung sebagai berikut :

1. Spesifikasi yang unik untuk tiap prosedur call

2. Respon message yang sesuai untuk tiap message yang diminta

3. Otentifikasi klien untuk tiap layanan dan sebaliknya Protokol Message RPC memiliki dua ( 2 )

struktur yang berbeda, yaitu call message dan reply message. Tiap klien yang akan melakukan

RPC pada suatu server di jaringan akan menerima balasan (reply) berupa hasil dari eksekusi

prosedur tersebut. Dengan menggunakan spesifikasi yang unik untuk tiap prosedure remote,

maka RPC dapat mencocokkan message balasan untuk tiap call message yang diminta klien.

Call Message

Tiap call message pada RPC mengandung nilai-nilai unsigned integer yang digunakan untuk

mengidentifikasi prosedur remote yang diminta. Nilai-nilai ini adalah :

1. Nomor Program

Page 3: Tugas pemrogramaniii 1100631025_rpc,soap,rest_asfi yuli wulandari

2. Nomor Versi dari Program

3. Nomor Prosedur

Reply Message

Reply message yang dikirimkan oleh server jaringan bervariasi tergantung apakah call messages

yang diminta klien diterima atau ditolak. Reply message mengandung informasi yang digunakan

untuk membedakan kondisi-kondisi yang diminta sesuai dengan call messages. Informasi ini

antara lain :

1. RPM mengeksekusi call message dengan sukses

2. Implementasi remote tidak sesuai dengan protokol yang digunakan. Versi yang lebih

rendah atau tinggi akan 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.

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 :

penjelasan dari diagram diatas :

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.

Page 4: Tugas pemrogramaniii 1100631025_rpc,soap,rest_asfi yuli wulandari

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.

Fitur dalam RPC

RPC memiliki fitur - fitur sebagai berikut : batching calls, broadcasting calls, callback

procedures dan using the select subroutine.

Batching Calls

Fitur Batching calls mengijinkan klien untuk mengirim message calls ke server dalam jumlah

besar secara sequence ( berurutan ). Batching menggunakan protokol streaming byte seperti TCP

/ IP sebagai mediumnya. Pada saat melakukan batching, klien tidak menunggu server untuk

memberikan reply terhadap tiap messages yang dikirim, begitu pula dengan server yang tidak

pernah mengirimkan messages reply. Fitur inilah yang banyak digunakan klien, karena arsitektur

RPC didesain agar pada tiap call message yang dikirimkan oleh klien harus ada proses

menunggu balasan dari server. Oleh karena itu maka pihak klien harus dapat mengatasi error

yang kemungkinan terjadi karena pihak klien tidak akan menerima peringatan apabila terjadi

error pada message yang dikirim.

Salah satu implementasi RPC (Remote Procedure Call) adalah dengan

menggunakan SunRPC. Dalam tutorial kali ini, saya akan mencontohkan

pembuatan program sederhana yang menggunakan SunRPC. Service yang disediakan oleh

program adalah operasi matematika dasar, yaitu

penjumlahan, pengurangan, perkalian, pembagian, dan pencarian modulo.

Pendefinisian Service

Sebelum program yang menggunakan RPC dibuat, kita harus mendefinisikan

fungsi-fungsi atau prosedur-prosedur apa saja yang akan dibuat.

Berikut ini adalah definisi service yang akan kita buat.

Page 5: Tugas pemrogramaniii 1100631025_rpc,soap,rest_asfi yuli wulandari

Simpan text di atas ke dalam sebuah file bernama tambah.x. Sekarang

jalankan program rpcgen untuk mengubah file tersebut menjadi client

dan server stub.

Setelah program di atas dijalankan, akan terbentuk empat buah file baru.

Yaitu:

1. jumlah_clnt.c

2. jumlah_svc.c

3. jumlah.h

4. jumlah_xdr.c

Semua file tadi akan digunakan dalam pembuatan program client dan server

RPC.

Pembuatan Server Program server akan mengimplementasikan fungsi-fungsi pada server stub.

Dalam program kali ini, ada lima buah fungsi yang harus diimplementasikan,

yaitu:

struct angka {

int a;

int b;

};

program TAMBAHAN {

version TAMBAHANVER {

int tambah(angka) = 1;

int kurang(angka) = 2;

int kali(angka) = 3;

float bagi(angka) = 4;

int mod(angka) = 5;

} = 1; } = 99;

rpcgen jumlah.x

Page 6: Tugas pemrogramaniii 1100631025_rpc,soap,rest_asfi yuli wulandari

Daftar fungsi-fungsi itu dapat dilihat pada file jumlah.h.

Berikut ini adalah implementasi fungsi yang akan kita buat.

1. int * tambah_1_svc(angka *, struct svc_req *)

2. int * kurang_1_svc(angka *, struct svc_req *)

3. kali_1_svc(angka *, struct svc_req *)

4. bagi_1_svc(angka *, struct svc_req *)

5. mod_1_svc(angka *, struct svc_req *)

#include <rpc/rpc.h>

#define _RPCGEN_SVC

#include "tambah.h"

int * tambah_1_svc(angka *input, struct svc_req *req) {

static int hasil;

hasil = input->a + input-> b;

return &hasil;

}

int * kurang_1_svc(angka *input, struct svc_req *req) {

static int hasil;

hasil = input->a - input->b;

return &hasil;

}

int * kali_1_svc(angka *input, struct svc_req *req) {

static int hasil;

hasil = input->a * input-> b;

return &hasil;

}

float * bagi_1_svc(angka *input, struct svc_req *req) {

static float hasil;

hasil = (float)input->a / (float)input->b;

return &hasil;

}

int * mod_1_svc(angka *input, struct svc_req *req) {

static int hasil;

hasil = input->a % input->b;

return &hasil; }

Page 7: Tugas pemrogramaniii 1100631025_rpc,soap,rest_asfi yuli wulandari

Simpan source code di atas ke dalam file jumlah_server.c. Setelah itu,

lakukan kompilasi.

Pembuatan Client

Program yang akan menjadi client, dapat menggunakan prosedur yang

dijadikan sebagai remote procedure seolah-olah prosedur/fungsi tersebut

menjadi bagian dari program client.

Berikut ini adalah source code dari program client yang akan kita buat.

gcc -o jumlah_server jumlah_server.c jumlah_svc.c jumlah_xdr.c

#include <rpc/rpc.h>

#define _RPCGEN_CLNT

#include "tambah.h"

int main(int argc, char **argv) {

CLIENT *cl;

int *hasil;

float *hasil_float;

struct angka input;

if (argc < 2) {

printf("Masukkan alamat komputer yang menyediakan service.n");

printf("Contoh: %s localhostnn", argv[0]);

exit(1);

}

cl = clnt_create(argv[1], TAMBAHAN, TAMBAHANVER, "tcp");

if (cl == NULL) {

clnt_pcreateerror(argv[1]);

exit(1);

}

cl->cl_auth = authunix_create_default();

input.a = 2;

input.b = 2;

printf("%d + %d = %dn", input.a, input.b, *tambah_1(&input, cl));

printf("%d - %d = %dn", input.a, input.b, *kurang_1(&input, cl));

printf("%d * %d = %dn", input.a, input.b, *kali_1(&input, cl));

printf("%d / %d = %dn", input.a, input.b, *bagi_1(&input, cl));

printf("%d %% %d = %dn", input.a, input.b, *mod_1(&input, cl)); }

Page 8: Tugas pemrogramaniii 1100631025_rpc,soap,rest_asfi yuli wulandari

Simpan source code di atas ke dalam file tambah_client.c. Setelah itu

lakukan kompilasi.

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.

Arsitektur SOAP

gcc -o jumlah_client jumlah_client.c jumlah_clnt.c jumlah_xdr.c

Page 9: Tugas pemrogramaniii 1100631025_rpc,soap,rest_asfi yuli wulandari

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).

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.

SOAP menggunakan teknologi XML utuk mendefinisikan rangka kerja pemesanan terekstrensi di mana

menyediakan konstruksi pesan yang dapat dipertukarkan pada protokol berbeda. Rangka kerja dirancang

bebas dari model pemrograman dan spesifikasi implementasi semantik.

SOAP meliputi empat bagian:

SOAP paket (amplop), mendefinisikan sebuah paket menggambarkan apa isi pesan yang terkirim,

yang seharusnya menerima dan menangani dan bagaimana menangani kerangka kerja mereka;

SOAP Encoding aturan (aturan encoding), digunakan untuk merepresentasikan aplikasi perlu

menggunakan tipe data contoh;

SOAP RPC kata (RPC representasi), bahwa panggilan prosedur terpencil dan tanggapan dari

perjanjian;

SOAP Binding (mengikat), protokol yang mendasari digunakan untuk bertukar informasi.

Page 10: Tugas pemrogramaniii 1100631025_rpc,soap,rest_asfi yuli wulandari

Meskipun empat bagian sebagai bagian dari SOAP, sebagai definisi keseluruhan, tetapi mereka

secara fungsional berpotongan satu sama independen lain. Secara khusus, amplop dan aturan encoding

didefinisikan di ruang nama XML yang berbeda (namespace), sehingga membuat definisi mudah.

Dua tujuan desain utama SOAP adalah kesederhanaan dan skalabilitas. Ini berarti bahwa ada beberapa

sistem informasi tradisional atau sistem objek terdistribusi, beberapa properti tidak akan menjadi bagian

dari spesifikasi SOAP.

Kali ini saya akan memberikan sedikit contoh aplikasi SOAP Hello World agar lebih mudah

memahami belajar SOAP.

Hal yang pertama dilakukan adalah membuat Script Server Side, Script yang akan

menangani Request Client Side.

Simpan script tersebut dengan nama server.php di htdocs Anda. Misal di

http://localhost/server.php

Selanjutnya adalah membuat sebuah script untuk client side, yang akan menjalankan function

Hello World yang ada pada Server Side.

Simpan script tersebut dengan nama index.php di htdocs Anda. Misal di http://localhost/index.php

<?php

function HelloWorld($MyName) {

return 'Hello World, and Hello '.$MyName;

}

$server = new SoapServer(NULL, array(

'soap_version'=>SOAP_1_2,

'encoding'=>'ISO-8859-1',

'uri'=>'http://www.w3.org/2001/12/soap-encoding'

));

$server->addFunction("HelloWorld");

$server->handle();

?>

<?PHP

$client = new SoapClient(NULL, array(

'location'=>'http://localhost/server.php',

'uri'=>'http://localhost/',

'trace'=>1

));

$return = $client->__soapCall("HelloWorld", array('Saya'));

echo $client->__getLastResponse();

?>

Page 11: Tugas pemrogramaniii 1100631025_rpc,soap,rest_asfi yuli wulandari

Representational State Transfer atau REST

Representational State Transfer atau REST pada dasarnya berarti bahwa tiap URL yang unik

adalah representasi dari beberapa objek. Kamu bisa mendapatkan konten objek itu menggunakan

HTTP GET, untuk menghapusnya, mungkin memakai POST, PUT, atau DELETE untuk

memodifikasi objek. Pada praktiknya, kebanyakan web servis memakai POST.

Semua web servis besar di internet sekarang ini menggunakan REST: Twitter, web servis Yahoo,

Flickr, del.icio.us, pubsub, bloglines, technorati, dan beberapa lainnya. eBay dan Amazon

memiliki web servis dengan REST dan SOAP.

REST tidaklah sempurna, dan bukan solusi terbaik utnuk setiap web servis. Data yang perlu

diamankan tidak boleh dikirim sebagai parameter dalam URI. Dan jumlah data yang besar,

seperti detail belanja, dapat menjadi tidak praktis atau tidak bisa dipakai dalam URI.

Dan ketika menggunakan attachment (pelampiran file), SOAP unggul. SOAP dapat

mengirimkan teks dan binary. Untuk kasus seperti ini, SOAP merupakan solusi yang solid.

Tetapi penting untuk memakai REST terlebih dahulu dan menggunakan SOAP jika memang

perlu. Ini membantu menjaga pengembangan aplikasi tetap sederhana dan mudah diakses.

Implementasi REST Web Services memiliki empat dasar prinsip desain yaitu:

Gunakan metode HTTP secara eksplisit.

Stateless.

URI berbentuk seperti direktori.

Ditransfer menggunakan XML, JavaScript Object Notation (JSON), atau keduanya.

Keuntungan utama dari web servis REST adalah:

· ightweigt, tidak membutuhkan XML markup tambahan

· hasilnya dapat dibaca dengan mudah oleh manusia (human readable result)

· mudah untuk dikembangkan, tidak membutuhkan toolkit

Keuntungan REST

bahasa dan platform agnostic

lebih sederhana/simpel 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 di mana 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

("dipecahkan sendiri")

Berkaitan dengan model transport HTTP

Page 12: Tugas pemrogramaniii 1100631025_rpc,soap,rest_asfi yuli wulandari