RPC.SOAP.REST_1100631021

15
Oleh : LAILATUL MUTMAINNAH 1100631021_MI/A PROGRAM STUDY MANAJEMEN INFORMATIKA FAKULTAS TEKNIK UNIVERSITAS MUHAMMADIYAH JEMBER 2013

Transcript of RPC.SOAP.REST_1100631021

Page 1: RPC.SOAP.REST_1100631021

Oleh :

LAILATUL MUTMAINNAH

1100631021_MI/A

PROGRAM STUDY MANAJEMEN INFORMATIKA

FAKULTAS TEKNIK

UNIVERSITAS MUHAMMADIYAH JEMBER

2013

Page 2: RPC.SOAP.REST_1100631021

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

Page 3: RPC.SOAP.REST_1100631021

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.

Page 4: RPC.SOAP.REST_1100631021

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:

Page 5: RPC.SOAP.REST_1100631021

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

Page 6: RPC.SOAP.REST_1100631021

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 :

Page 7: RPC.SOAP.REST_1100631021

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

Page 8: RPC.SOAP.REST_1100631021

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

Teknologi SOAP dan Perangkat Mobile

Salah satu kegunaan perkembangan

teknologi informasi berbasis mobile adalah untuk memudahkan siapa saja dalam mengakses

informasi melalui perangkat mobile seperti handphone. Seperti contoh dalam bidang pendidikan para

mahasiswa tidak perlu harus kekampus jika ingin melihat nilai ataupun informasi yang berhubungan

dengan perkuliahan. Karena dengan menggunakan teknologi berbasis mobile kita dapat menggunakan

perangkat dan konektivitas apapun untuk bekerja. Dengan demikian teknologi berbasis mobile ini bisa

menjadi solusi bagi para mahasiswa yang tinggal di lingkungan perkotaan yang penuh kemacetan.

Begitu juga SOAP, yang didefinisikan sebagai Simple Object Access Protocol, yang merupakan

spesifikasi protocol untuk bertukar informasi yang terstruktur dalam pelaksanaan Layanan Web di

jaringan komputer.

Extensible Markup Language (XML), SOAP dan Perangkat Mobile.

Hal ini bergantung pada Extensible Markup Language (XML) sebagai format pesan, dan biasanya

bergantung pada protocol lain yang menjadi Layer Aplikasi terutama Remote Procedure Call (RPC) dan

HTTP untuk negosiasi dan transmisi pesan. SOAP dapat membentuk lapisan dasar dari stack protocol

layanan web, pesan menyediakan kerangka dasar atas mana layanan web dapat dibangun. Protocol

berbasis XML ini terdiri dari tiga bagian amplop yang mendefinisikan apa yang ada dalam pesan dan

bagaimana proses itu satu set aturan pengkodean untuk mengungkapkan kasus defined datatypes

aplikasi, dan konvensi untuk mewakili panggilan prosedur dan tanggapan.

Page 9: RPC.SOAP.REST_1100631021

SOAP dibangun dengan menggunakan protocol komunikasi HTTP. Karena HTTP didukung oleh semua

browser dan server, maka SOAP dapat berkomunikasi dengan berbagai aplikasi meskipun terdapat

perbedaan sistem operasi, teknologi, dan bahasa pemrogramannya, dikarenakan protocol ini

memanfaatkan berbagai teknologi yang sudah ada sebelumnya dan sudah banyak digunakan. Misalnya

untuk protocol transport, yang paling banyak digunakan adalah HTTP, walaupun dimungkinkan untuk

menggunakan protocol transport lainnya. Sedangkan untuk format data atau message digunakan XML yang

tidak diragukan lagi manfaat dan perannya di dalam pertukaran data.

SOAP membentuk lapisan dasar dari tumpukan layanan Web, pesan menyediakan kerangka kerja dasar

yang lebih abstrak lapisan bisa membangun. SOAP bekerja dengan mengirimkan pesan permintaan oleh

klien ( simpul jaringan ) ke server node dan kembali mendapat pesan respon dari server dan pola ini

biasanya disebut RPC ( Remote Procedure Call ) yang merupakan pola yang paling umum digunakan dalam

SOAP.

Peran SOAP Dalam Teknologi Web Service

Peran SOAP di dalam teknologi web service adalah sebagai protocol pemaketan untuk pesan (messages)

yang digunakan secara bersama oleh aplikasi-aplikasi penggunanya. Spesifikasi yang digunakan tidak lebih

seperti sebuah amplop biasa berbasis XML untuk informasi yang ditransfer, serta sekumpulan aturan bagi

translasi aplikasi dan tipe-tipe data platform yang spesifik menjadi bentuk XML. Desain bentuk dari SOAP

membuatnya cocok untuk berbagai pertukaran pesan pada aplikasi.

SOAP adalah protocol untuk pertukaran informasi dengan desentralisasi dan terdistribusi. SOAP dibangun

dengan menggunakan protocol komunikasi HTTP. Karena HTTP didukung oleh semua browser dan server,

maka SOAP dapat berkomunikasi dengan berbagai aplikasi meskipun terdapat perbedaan sistem operasi,

teknologi, dan bahasa pemrogramannya. Peran SOAP di dalam teknologi web service adalah sebagai

protocol pemaketan untuk pesan-pesan (messages) yang digunakan secara bersama oleh aplikasi-aplikasi

penggunanya. Spesifikasi yang digunakan tidak lebih seperti sebuah amplop biasa berbasis XML untuk

informasi yang ditransfer, serta sekumpulan aturan bagi translasi aplikasi dan tipe-tipe data platform yang

spesifik menjadi bentuk XML. Desain bentuk dari SOAP membuatnya cocok untuk berbagai pertukaran

pesan pada aplikasi.

Teknologi SOAP ( Simple Object Acces Protocol ) dan PHP

SOAP juga merupakan kumpulan class-class PHP yang memungkinkan user untuk mengirim dan

menerima pesan SOAP melalui protocol HTTP. Operasi-operasi pengiriman pesan SOAP dijalankan dengan

melibatkan paramater nama operasi yang diinginkan melalui method call. Jika web service yang dituju

menyediakan sebuah file WSDL(Web Service Description Language), maka class “soapclient” akan mengacu

Page 10: RPC.SOAP.REST_1100631021

langsung pada URL file WSDL tersebut dan menggunakan class “wsdl” untuk mem-parsing file WSDL dan

mengekstrak seluruh datanya. Class “wsdl” menyediakan method-method untuk mengekstrak data per

operasi dan per binding.

Class “soapclient” menggunakan data dari file WSDL untuk menerjemahkan parameter-parameternya

sekaligus menyusun SOAP envelope ketika user mengeksekusi suatu pemanggilan service. Ketika

pemanggilan ini dieksekusi, class “soapclient” menggunakan “soap_transport_http” untuk mengirim

pesan SOAP request dan menerima pesan SOAP respons. Selanjutnya pesan SOAP respons yang diterima di

parsing dengan menggunakan class “soap_parser”.

Jika web service yang dituju menyediakan file WSDL, pemanggilan service dilakukan dengan mengeksekusi

method call pada class “soapclient” dengan melibatkan parameter argumen yang disediakan oleh file

WSDL. Dalam membangun sebuah sistem aplikasi berbasis web dengan teknologi SOAP, dibutuhkan

dua komponen utama yaitu, server sebagai provider entity dan client sebagai requester entity.

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 recordnya

Page 11: RPC.SOAP.REST_1100631021

Selanjutnya, kita siapkan script NuSOAP yang nantinya diletakkan di server A. Script ini nanti diperlukan

untuk melayani request yang dilakukan oleh server B.

server.php

Perhatikan 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

perintah

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

Page 12: RPC.SOAP.REST_1100631021

Berikutnya, kita buat script interface untuk pencarian data mahasiswa di server B.

client.php

Keterangan:

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.

Page 13: RPC.SOAP.REST_1100631021

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.

Respresentational State Transfer ( REST ), adalah suatu gaya arsitektur perangkat lunak untuk

untuk pendistibusian sistem hipermedia seperti WWW. Istilah ini diperkenalkan pertama kali pada tahun

2000 pada disertasi doktoral Roy Fielding, salah seorang penulis utama spesifikasi HTTP. Istilah ini

selanjutnya dipergunakan secara luas pada komunitas jaringan.

REST secara spesifik merujuk pada suatu koleksi prinsip-prinsip arsitektur jaringan yang menggariskan

pendefinisian dan pengalamatan sumber daya. Istilah ini sering digunakan dengan longgar untuk

mendeskripsikan semua antarmuka sederhana yang menyampaikan data dalam domain spesifik melalui

HTTP tanpa tambahan lapisan pesan seperti SOAP atau pelacakan sesi menggunakan cookie HTTP. Dua

pengertian ini dapat menimbulkan konflik dan juga tumpang tindih. Dimungkinkan untuk merancang

suatu sistem perangkat lunak besar sesuai dengan gaya arsitektur REST Fielding tanpa menggunakan

HTTP dan tanpa berinteraksi dengan WWW. Juga dimungkinkan untuk merancang antarmuka

Page 14: RPC.SOAP.REST_1100631021

XML+HTTP sederhana yang tidak mengikuti prinsip-prinsip REST, tapi sebaliknya mengikuti model dari

RPC (remote procedure call). Perbedaan penggunaan istilah REST ini cukup menyebabkan permasalahan

dalam diskusi-diskusi teknis. Sistem yang mengikuti prinsip REST Fielding sering disebut sebagai

"RESTful".

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.

Dalam pengaplikasiannya, REST lebih banyak digunakan untuk web serviceyang berorientasi pada

resource. Maksud orientasi pada resource adalah orientasi yang menyediakan resource-resource sebagai

layanannya dan bukan kumpulan-kumpulan dari aktifitas yang mengolah resource itu.Alasan mengapa

REST tidak digunakan dalam skripsi ini karena orientasi pada resourcenya itu,sedangkan aplikasi event

calendar membutuhkan pemanggilan metode yang bisa dikerjakan terhadap kumpulan resource event.

Selain itu, karena standarnya yang kurang sehingga tidak begitu cocok diterapkan dalam aplikasi yang

membutuhkan kerjasama antar aplikasi lain, dimana standar yang baik akan sangat berguna karena

berbicara dalam satu bahasa yang sama. Beberapa contoh web service yang menggunakan REST adalah:

Flickr API(Application ProgramInterface), YouTube API, Amazon API.

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

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

Page 15: RPC.SOAP.REST_1100631021

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.

Contoh Source Code Sederhana dalam penggunaan REST

Apache HttpClient perpustakaan menyederhanakan menangani permintaan HTTP. Untuk menggunakan

library ini Anda harus men-download binari dengan dependensi dari situs web mereka.

Berikut adalah kode untuk HTTP GET metode: