Monday, April 21, 2014

Web Service



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.

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

WSDL

WSDL (Web Services Description Language) adalah fromat XML yang diterbitkan untuk menerangkan web service.
WSDL mendefinisikan:
  • pesan-pesan (baik yang abstrak dan kongkrit) yang dikirim ke dan menuju web service
  • koleksi-koleksi digital dari pesan-pesan (port type, antarmuka)
  • bagaimana port type yang ditentukan dijadikan wire protokol
  • di mana servis ditempatkan
WSDL menyediakan sebuah kamus XML untuk menjabarkan detail-detail ini. WSDL digunakan di mana skema XML tidak digunakan lagi dengan menyediakan jalur pesan-pesan grup menjadi operasi-operasi dan operasi-operasi menjadi antarmuka. Ini juga menyediakan jalur untuk medefinisikan binding-binding untuk setiap antamuka dan kombinasi protokol sepanjang alamat titik akhir utnuk setiap kalinya. Definisi WSDL yang lengkap terdiri dari seluruh informasi yang dibutuhkan untuk meminta web service. Pengembang yang mau mempermudah yang lain untuk mengakses service-servicenya harus menyediakan defisi-definisi WSDL.
WSDL memainkan peranan penting pada seluruh arsitektur web service semenjak menjabarkan kontrak lengkap pada komunikasi aplikasi (sama seperti peran IDL pada arsitektur DCOM). Walaupun teknik-teknik lain untuk menjabarkan Web service ada, WS-I Basic Profile Versi 1.0 memadati penggunaan WSDL dan skema XML untuk menjabarkan web service. Ini membantu untuk memastikan interoperbilitas pada layer deskripsi servis.
Karena WSDL adalah mesin yang dapat dibaca (misalnya hanya file XML), tool-tool dan infrastruktur dan dengan mudah dibuat seputar ini. Saat ini pengembang-pngembang dapat definisi-definisi WSDL untuk membangun kode yang tahu dengan tepat bagaimana berinteraksi dengan web service yang menjabrkan. Pembangunan code tipe ini menyembunyikan detail-detail membosankan yang terlibat pada pengiriman dan penrimaan pesan-pesan SOAP pada protokol-protokol yang berbeda-beda dan menyebabkan web service dapat dicapai oleh massa. Microsoft® .NET Framework menggunakan utilitas command-line bernama wsdl.exe yang mengenerasi kelas-kelas dari definsi WSDL. Wsdl.exe dapat meng-generasi satu kelas untuk menggunakanservice dan yang lainnya untuk mengimplementasikan service.(Apache axis menggunkaan utilitas yang sama bernama WSDL2Java yang melakukan fungsi yang sama pada kelas-kelas java.) Kelas-kelas digenerasi dari definisi WSDL sama harus mampu berkomunikasi dengan yang lain sepanjang antarmuka WSDL yang tersedia, tanpa memperhatikan bahasa pemrograman yang digunakan
WSDL 1.1 mempertimbangkan standar de facto saat ini karena dukungan industri yang luas. Kebanyakan toolkit-toolkit web service mendukung WSDL 1.1, tapi ada sedikit masalah interoperabilitas pada implementasi berbeda. Kebanyakan pembangun-pembangun percaya bahwa fleksibilitas yang luas dari WSDL (dan kompleksitas hasil) adalah sumber fundamental dari masalah ini. WS-I telah membantu memecahkan beberapa dari masalah ini dengan memkasakan pengembang-pengembang untuk menggunakan bagian-bagian tepat dari spesifikasi dan tidak menganjurkan mereka untuk menggunakan yang lainnya.


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

1 comment:

  1. tulisanya bermanfaaat.
    silahkan agan2 yang lagi pada cari2 komputer build up
    klik aja di www.richnetcompsolo.com

    ReplyDelete