Definisi Web Service
Web service adalah suatu sistem
perangkat lunak yang dirancang untuk mendukung interoperabilitas dan interaksi
antar sistem pada suatu jaringan. Web service digunakan sebagai suatu fasilitas
yang disediakan oleh suatu web site untuk menyediakan layanan (dalam bentuk informasi)
kepada sistem lain, sehingga sistem lain dapat berinteraksi dengan sistem
tersebut melalui layanan-layanan (service) yang disediakan oleh suatu sistem yang
menyediakan web service. Web service menyimpan data informasi dalam format XML,
sehingga data ini dapat diakses oleh sistem lain walaupun berbeda platform,
sistem operasi, maupun bahasa compiler.
Web service bertujuan untuk
meningkatkan kolaborasi antar pemrogram dan perusahaan, yang memungkinkan
sebuah fungsi di dalam Web Service dapat dipinjam oleh aplikasi lain tanpa
perlu mengetahui detil pemrograman yang terdapat di dalamnya.
Beberapa
alasan mengapa digunakannya web service adalah sebagai berikut:
1. Web service
dapat digunakan untuk mentransformasikan satu atau beberapa bisnis logic atau
class dan objek yang terpisah dalam satu ruang lingkup yang menjadi satu,
sehingga tingkat keamanan dapat ditangani dengan baik.
2. Web service
memiliki kemudahan dalam proses deployment-nya, karena tidak memerlukan
registrasi khusus ke dalam suatu sistem operasi. Web service cukup di-upload ke
web server dan siap diakses oleh pihak-pihak yang telah diberikan otorisasi.
3. Web service
berjalan di port 80 yang merupakan
protokol standar HTTP, dengan demikian web service tidak memerlukan konfigurasi
khusus di sisi firewall.
Arsitektur Web Service
Web
service memiliki tiga entitas dalam arsitekturnya, yaitu:
1. Service
Requester (peminta layanan)
2. Service
Provider (penyedia layanan)
4. Service
Registry (daftar layanan)
·
Service Provider: Berfungsi untuk menyediakan layanan/service
dan mengolah sebuah registry agar layanan-layanan tersebut dapat tersedia.
·
Service Registry: Berfungsi sebagai lokasi
central yang mendeskripsikan semua layanan/service yang telah di-register.
·
Service Requestor: Peminta layanan yang mencari
dan menemukan layanan yang dibutuhkan serta menggunakan layanan tersebut.
Operasi-Operasi Web Service
Secara
umum, web service memiliki tiga operasi yang terlibat di dalamnya, yaitu:
1.
Publish/Unpublish: Menerbitkan/menghapus layanan ke
dalam atau dari registry.
2.
Find: Service requestor mencari dan menemukan layanan yang
dibutuhkan.
3.
Bind: Service requestor setelah menemukan layanan yang
dicarinya, kemudian melakukan binding ke service provider untuk melakukan
interaksi dan mengakses layanan/service yang disediakan oleh service provider.
Komponen-Komponen Web Service
Web
service secara keseluruhan memiliki empat layer komponen seperti pada gambar di
atas, yaitu:
1.
Layer 1: Protokol internet standar seperti HTTP, TCP/IP
2.
Layer 2: Simple Object Access Protocol (SOAP),
merupakan protokol akses objek berbasis XML yang digunakan untuk proses
pertukaran data/informasi antar layanan.
3.
Layer 3: Web Service Definition Language (WSDL), merupakan
suatu standar bahasa dalam format XML yang berfungsi untuk mendeskripsikan seluruh
layanan yang tersedia.
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.
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.
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.
http://www.adityarizki.net/2012/06/web-service-soap-vs-rest-mana-yang-lebih-baik/
http://id.wikipedia.org/wiki/WSDL
tulisanya bermanfaaat.
ReplyDeletesilahkan agan2 yang lagi pada cari2 komputer build up
klik aja di www.richnetcompsolo.com