Apa Itu 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
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 :
SOAP anatomi
call
Contoh struktur
pesan SOAP
Adapun kelebihan SOAP dapat
diuraikan sebagai berikut :
- Menggunakan HTTP yang telah digunakan secara luas
- Bersifat fleksible, mudah dikembangkan, karena berbasis XML
- Data in string message
Selain kelebihan, SOAP memilki
beberapa kekurangan, di antaranya :
- Parsing paket SOAP dan pemetaannya ke obyek mengurangi kinerja
- Tidak menerapkan keamanan khusus, karena merupakan "wire protocol" yang bergantung pada HTTP
REST masih cukup baru, sedangkan
SOAP telah merevolusi RPC dan lebih terbuka dibanding batasan-batasan yang ada
di versi sebelumnya.
Terminologi
- SOAP adalah Simple Object Access Protocol
- HTTP berbasis API berarti API yang diekspos sebagai salah satu atau lebih HTTP URI dan respon berupa XML/JSON. Skema respon dapat dikustomasi untuk setiap objek
- REST pada sisi yang lain menambahkan sebuah elemen untuk menggunakan URI standar, dan juga memberikan kepentingan kepada penggunaan HTTP (seperti GET/POST/PUT, dsb.)
Meskipun beberapa tahun ini kita
melihat perkembangan teknologi web service, tetapi popularitas SOAP tetap tidak
berkurang. Arsitektur internet datag dengan argumen yang bagus untuk
menekan soap di sisi yang lain: ada metode yang lebih baik untuk
membangun web service dalam bentuk Representational State Transfer (REST).
REST lebih kepada filosofi lama,
ketimbang sebuah teknologi yang baru. Tetapi dalam kenyataannya datang kemudian
dalam teknologi. Sedangkan SOAP nampak seperti lompatan baru ke fase
selanjutnya dalam pengembangan internet dengan sekumpulan spesifikasi baru,
filosofi REST mendukung bahwa prinsip dan protokol yang sudah ada di Web cukup
untuk membuat web servide yang kuat (robust). Hal ini berarti bahwa developer
yang mengerti HTTP dan XML dapat mulai membangun web service tanpa membutuhkan
toolkit di belakang apa yang biasanya digunakan dalam pengembangan aplikasi
internet.
RESTful vs SOAP
Dalam arsitektur REST, kunci
resource diidentifikasi, dapat berupa entitas, koleksi, atau yang lain dimana
nampak lebih bernilai ketika memiliki URI sendiri. Metode standar _ dalam kasus
ini, cara kerja HTP, dipetakanke semantik-semantik resource-specific. Semua
resource mengimplamentasikan interface yang seragam. Dimensi tipe konten, yang
mengijinkan representasi berbeda dari resource-resource ( dalam XML, HTML, dan
plain text), sebaik kemampuan links ke resource dalam representasi resource.
Pikirkan, misal GET pda /customer/4711 akan mengembalikan dokumen yang
mengandung link secara spesifik /order/xyz.
Saat ini dapat kita lihat sendiri
bahwa banyak web service baru yang dkembangkan menggunakan arsitektur REST
dibandingkan dengan SOAP. Mari kita lihat sekilas dan pahami poin-poin dasar
apa itu REST.
Apakah REST web service itu?
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).
Seberapa Populer kah REST itu?
Semua web service utma di
internet sekarang menggunakan REST: Twitter, Yahoo, termasuk Flickr,
del.icio.us, pubsub, bloglines, technorati, dan beberapa yang lain. eBay dan
Amazon menggunakan baik REST maupun SOAP.
Bagaimana dengan SOAP?
SOAP digunakan pada
aplikasi-aplikasi Enterprise untuk mengintegrasikan penggunaan yang lebih luas
dan banyak aplikasi dan tren yang lain adalah mengintegrasikan dengan legacy
system (sistem lama yg sudah ada sebelumnya). Dalam internet, Google konsisten
dalam mengimplementasikan web service mereka menggunakan SOAP, kecuali Blogger
yang menggunakan XML-RPC.
REST vs SOAP
Perusahaan-perusahaan yang
menggunakan REST API belum banyak, API yang mereka gunakan kebanyakan muncul
baru-baru ini. Jadi REST sesungguhnya adalah aturan untuk membuat web service.
Tetapi, mari perhatikan, gunakan konsep "SOAP to wash and your REST when
you tired". Keuntungan utama web service REST yaitu:
- lightweigt, tidak membutuhkan XML markup tambahan
- hasilnya dapat dibaca dengan mudah oleh manusia (human readable result)
- mudah untuk dikembangkan, tidak membutuhkan toolkit
SOAP juga mempunyai beberapa
kelebihan:
- mudah untuk dikonsumsi (kadang-kadang)
- rigid (lebih kaku/ketat), dalam type-checking, harus mematuhi aturan penulisan
- membutuhkan tools pengembangan
Apakah akses SOAP lebih
mudah/sederhana? Sepertinya tidak! Mari kita lihat perbandingannya sebagai
berikut:
API Flexibility & Simplicity
Kunci metodologi REST adalah
untuk menulis web service menggunakan antarmuka yang sudah tersedia dan banyak
digunakan: URI. Sebagai contoh, service/layanan untuk mengkonversi mata uang,
yang mana seorang user memasukkan simbol mata uang untuk mengembalikan harga
mata uang secara real-time, dapat dilakukan semudah membuat script yang dapat
diakses melalui web server seperti URI: http://www.ExampleCurrencyBrokerage.com/convert?=us-dollar&value=100&target=pound.
Aplikasi client atau server
dengan dukungan HTTP dapat dengan mudah memanggil service tersebut dengan
command HTTP GET. Berdasar pada bagaimana cara penyedia service menulis script,
hasil respons HTTP kan menjadi lebih simpel seperti beberapa header standar dan
string teks yang mengandung harga terkini untuk symbol yang diberikan. Atau,
dapat berupa dokumen XML.
Metode antarmuka ini mempunyai
keuntungan signifikan dibanding service berbasis SOAP. Developer dapat
mengetahui bagaimana untuk membuat dan memodifikasi sebuah URI untuk mengakses
resource yang berbeda. SOAP, pada sisi lain, membutuhkan pengetahuan khusus
untuk spesifikasi XML, dan kebanyakan developer akan membutuhkan SOAP toolkit
untuk membentuk request dan menguraikan (parsing) hasilnya.
Penggunaan Bandwidth - REST lebih
ringan
Keuntungan lain dari antarmuka
RESTful adalah request dan respon dapat dipendekkan. SOAP membutuhkan XML
wrapper untuk setiap request dan response. Sekali saja namespace dan penulisan
dideklaraskan, empat atau lima digit stock quote dalam respon SOAP bisa
membutuhkan lebih dari sepuluh kali lipat sebanyak byte-byte respon yang sama
ketika diimplementasikan menggunakan REST.
Para pendukung SOAP berpendapat
bahwa penulisan kode yang rigid (kuat) merupakan fitur yang dibutuhkan dalam
aplikasi terdistribusi. Dalam praktiknya, meskipun, keduanya (aplikasi request
dan service) mengetahui tipe data dari waktu ke waktu, tetapi mengirimkan
informasi tersebut dalam bentuk request dan respon hanyalah sebagai alasan.
Bagaimana seseorang tahu tipe
data dan lokasinya dalam respon-dari waktu ke waktu? Seperti SOAP, REST masih
membutuhkan dokumen yang saling berkaitan yang dapat menguraikan parameter
input dan data output. Kabar baiknya adalah REST cukup fleksibel sehingga
developer dapat menulis file WSDL untuk service-service tersebut jika
dibutuhkan deklarasi secara formal. Jika tidak, deklarasi dapat sesederhana
halaman web yang dapat terbaca manusia (human-readable Web) yang mengatakan
"Berikan service ini sebuah input melali beberapa simbol harga saham,
dalam format q=simbol dan itu akan menghasilkan kembalian harga saat inisebagai
bagian saham sebagai string teks".
Security
Mungkin hal menarik dari
perseteruan REST vs SOAP adalah sudut pandang security (keamanan). Meskipun
SOAP menegaskan bahwa untuk mengirimkan remote procedure calls (RPC) melalui
port standar HTTP adalah cara yang baik untuk memastikan dukungan web service
melalui aturan-aturan yang ada. Namun, para pendukung REST berpendapat bahwa
praktik tersebut adalah sebuah kekurangan utama yang membahayakan keamanan
jaringan. Panggilan-panggilan REST juga dapat melalui HTTP atau HTTPS, tetapi
dengan REST, administrator (firewall) dapat membedakan maksud dari setiap pesan
dengan menganalisis perintah HTTP yang digunakan saat request. Sebagai contoh,
request GET selalu dianggap aman karena ia tidak dapat, menurut definisi,
memodifikasi data apapun. Dan itu hanya dapat meng-query kan data.
Request SOAP secara tipikal akan
menggunakan POST untuk mengkomunikasi dengan service yang diberikan. Dan tanpa
melihat envelope SOAP (tugas yang digunakan untuk mengkonsumsi keduanya dan
tidak disertakan pada kebanyakan firewall) tidak ada cara untuk mengetahui
apakah request tersebut hanya ingin meng-query data atau menghapus seluruh
tabel dari database.
Adapun untuk otentikasi dan
otorisasi, SOAP menempatkan beban pada pengembang aplikasi. Metodologi REST
tidak memperhitungkan fakta bahwa web server sudah memiliki dukungan untuk
tugas-tugas tersebut. Melalui penggunaan sertifikat standar industri dan sistem
manajemen identitas umum, seperti server LDAP, developer-developer dapat
membuat layer jaringan melakukan langkah berat.
Ini tidak hanya memudahkan para
developer, tetapi juga memudahkan administrator, yang dapat menggunakan sesuatu
semudah file ACL untuk mengontrol web service layaknya menggunakan URI yang
lain.
REST tidak Sempurna
Sejujurnya, REST tidaklah
sempurna. REST bukanlah solusi terbaik untuk setiap web service. Data yang
butuh keamanan seharusnya tidak dikirimkan sebagai parameter dalam URI. Dan
data dalam jumlah besar, seperti layanan pembelian, dapat menjadi rumit bahkan
di luar batas URI.
Dan ketika metode web service
diintegrasikan dengan attachment, SOAP adalah juaranya. SOAP dapat mengirimkan
semua teks dan binary-binary tanpa kesalahan. Dalam beberapa kasus, SOAP
sesungguhnya adalah solusi yang tepat. Tetapi sangat penting untuk mencoba REST
terlebih dahulu dan gunakan SOAP hanya bila diperlukan. Ini akan membantu
menjaga pengembangan aplikasi secara sederhana dan mudah diakses.
Untungnya, filosofi REST dapat
ditangkap para developer web service. Versi terbaru dari spesifikasi SOAP saat
ini mengijinkan beberapa tipe service yang dapat dipaparkan melalui URI
(meskipun respon masih berupa pesan SOAP). Demikian pula platform Microsoft
.NET dapat mempublikasikan service-service sehingga dapat menggunakan
request-request GET Semua ini menandakan pergeseran pemikiran tentang bagaimana
membuat interface terbaik untuk web service.
Developer perlu memahami bahwa
pengiriman dan penerimaan pesan SOAL tidak selalu cara terbaik bagi aplikasi
untuk berkomunikasi. Kadang-kadang interface REST sederhana dan respon plain
teks dapat menyelesaikannya dan juga lebih banyak menghemat waktu dan
resource dalam prosesnya.
Type Handling
SOAP menyediakan aturan penulisan
yang ketat sejak mempunyai sekumpulan tipe-tipe data. Oleh karena itu menjamin
bahwa return value (nilai kembalian) aka tersedia secara langsung dalam tipe
native yang berkorespondensi pada platform tertentu. Pengetikan return
value HTTP berbasis API harus diserialisasi dari XML, kemudian baru
disesuaikan cara penulisannya. Ini tidak mewakili banyak usaha, musalnya untuk
bahasa pemrograman dinamis. Faktanya, bahkan pengetikan objek-objek kompleks,
traversing sebuah object sangat mirip dengan traversing XML tree, sehingga
disini tidak ada manfaat yang jelas dalam kemudahan client-side coding.
Kompleksitas Cient-side
Membuat panggilan ke suatu HTTP
API secara signifikan lebih mudah daripada membuat panggilan ke SOAP API.
SOAPAPI membutuhkan library client, membutuhkan pengenalan, dan butuh
kebiasaan. Sedangkan HTTP API adalah asli dari semua bahasa pemrograman dan
hanya melibatkan request HTTP dengan parameter sesuai yang
ditambahkan. Bahkan secara psikologis, tipe yang pertama sedikit tidak
memerlukan usaha.
Testing dan Troubleshooting
HTTP API juga mudah untuk di tes
dan troubleshoot karena dapat membangun pangglan dengan tidak lebih dari
sekedar browser dan memeriksa respon dalam jendela browser itu sendiri. Tidak
ada tool trubleshooting yang dibutuhkan untuk menghasilkan siklus
request/response. Dalam hal ini tidak dapat dipungkiri bahwa HTTP berbasis API
lebih unggul.
Kompleksitas Server-side
Kebanyakan bahasa pemrograman
membuat kompleksitas server-side menjadi sangat mudah untuk menerangkan sebuah
method melalui SOAP. Serialisasi dan deserialisasi ditangani oleh SOAP Server
Library. Untuk menerangkan metode objek sebagai HTTP API dapat secara relatif
lebih menantang karena memerlukan serialisasi output ke XML. Membuat API REST-y
melbatkan pekerjaan tambahan untuk memetakan jalur URI ke handler
spesifik dan untuk mengimpor maksud permintaan HTTP request ke dalam skema.
Banyak framework yang ada membuat tugas ini lebih mudah dilakukan. Namun
demikian, saat ini, hal tersebut masih lebih mudah untuk mengekspos seperangkat
method menggunakan SOAP daripada mengeksposnya menggunakan HTTP biasa.
Caching
Karena berbasis HTTP/Rest-ful API
dapat dikonsumsi menggunakan request GET sederhana, server proxy/reverse-proxy
dapat melakukan cache atas respon tersebut dengan mudah. Di sisi yang lain,
request SOAP menggunakan POST dan membutuhkan request XML kompleks untuk
dibangun yang akan membuat caching-respon terasa sulit.
REST & SOAP Scorecard
KESIMPULAN
Dari penjelasan detail di atas
dapat dikatakan bahwa SOAP tidak semudah itu, SOAP membutuhkan usaha
implementasi yang lebih besar dan pengetahuan di sisi klien, sedangkan web
service berbasis HTTP atau REST-API membutuhkan implementasi yang
lebih besar dan pengetahuan di sisi server. Adopsi API dapat meningkatkan lebih
jauh lagi jika interface berbasis HTTP disediakan. Faktanya, HTTP berbasis API
dengan respon XML/JSON mewakili yang terbaik dari kedua turunan dan mudah
diimplementasikan dalam server semudah mengkonsumsi melalui server.
Untuk mengkonsumsi web service,
kadang-kadang bingung mengimplementasikan mana yang lebih mudah. Sebagai contoh
Google AdWords web service sangat sulit untuk dikonsumsi (dalam CF apapun),
karena menggunakan header SOAP, dan sejumlah hal lain yang membuatnya sulit.
Sebaliknya, web service REST Amazon kadangkala rumit untuk diuraikan (pase)
karena sangat berulang, dan hasil schema dapat sedikit bervariasi sesuai dengan
apa yang Anda cari.
Arsitektur mana yang Anda pilih,
pastikan pilih yang termudah bagi developer untuk mengaksesnya, dan
tersokumentasi dengan baik. Akhirnya ketika Anda meng-host layanan internet,
hal tersebut adalah kompleksitas sisi klien yang paling penting untuk menarik
klien untuk menggunakan web service Anda.
Web Service SOAP dan RESTful
mempunyai filosofi yang berbeda. SOAP sesungguhnya sebuah protokol komputasi
terdistribusi berbasis XML, dimana REST cenderung masih sangat baru, desain
berbass web. Sebagai catatan SOAP tidak sekompleks yang dikatakan banyak
sumber, SOAP dapat dikatakan kompleks ketika digunakan untuk banyak ekstensi.
Summary
Keuntungan SOAP
- bahasa, platform, dan transport agnostic
- dirancang untuk menangani lingkungan komputasi terdistribusi
- merupakan standar yang berlaku untuk web servis, sehingga mempunyai dukungan yang lebih baik dari standar yang lain (WSDL, WS-*) dan tools dari berbagai vendor
- built-in error handling (faults)
- extensibility
Kelemahan SOAP
- secara konseptual lebih sulit, lebih "heavy-weight" dibanding REST
- lebih "verbose" (membutuhkan lebih banyak pernyataan/kode program)
- sulit untuk dikembangkan, mebutuhkan tools
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





No comments:
Post a Comment