Suatu web service merupakan sistem perangkat lunak yang dirancang untuk mendukung interoperabilitas dari interaksi antar mesin melalui jaringan komputer. Web Service merupakan sistem layanan yang menggunakan protokol komunikasi internet standar untuk menyediakan sebuah arsitektur berbasis standar yang mudah untuk ditemukan dengan tujuan mengintegrasikan beberapa aplikasi di dalam suatu lingkungan yang terdesentralisasi. Pengguna layanan web service dapat mengimplementasikan web service dan mengaksesnya tanpa perlu khawatir bagaimana teknologi untuk mengimplementasikan service tersebut.
Ada beberapa protokol standar yang digunakan dalam web service sebagaimana tergambar pada Gambar 1. Untuk pengiriman pesan, web service bisa menggunakan standar format XML, JSON, Atom atau protokol SOAP untuk pertukaran pesan. Transport pengiriman pesan bisa melalui protokol HTTP, FTP, HTTPS, dan FTP di mana protokol tersebut telah banyak digunakan dan menjadi standar industri. Deskripsi dan publikasi dari suatu web service yang mendefinisikan layanan dan menjelaskan bagaimana berkomunikasi dengan web service dapat menggunakan dokumen WSDL, service document AtomPub, CSDL, ataupun mekanisme dari UDDI.
Gambar 1 Web service protocol stack
Web service menyelesaikan dua masalah utama, yaitu suatu enterprise yang ingin mempublikasikan API dan suatu enterprise yang ingin mengintegrasikan operasional di dalamnya. Web service memberikan kesempatan pengembang sistem mempublikasikan API yang dimiliki agar dapat digunakan pihak lain sehingga pengguna layanan dapat memakai layanan dari pengembang, bahkan dimungkinkan menyewa layanan dengan fungsi komputasi tertentu yang diinginkan klien. Perusahaan seperti Facebook, Twitter, termasuk Google API, dan Microsoft Azure telah menerapkan model ini. Mengenai masalah integrasi enterprise, web service menyediakan fungsi bisnis dari aplikasi dalam bentuk layanan sehingga aplikasi bisnis suatu departemen dimungkinkan terhubung dengan aplikasi dari departemen lain secara B2B melalui web service. Solusi tersebut memungkinkan integrasi antar departemen tanpa perlu membangun suatu sistem enterprise baru.
Web service memiliki beberapa ragam yang dibedakan ke dalam 3 jenis Application Programming Interface (API) yaitu Resource API, RPC API, Message API (Daignaeu dkk., 2012). Suatu Resource API menyediakan akses ke resource serta menggunakan kombinasi URI yang di-request dan HTTP method (atau server method dari protokol selain HTTP) bersamaan dengan data yang disubmit untuk menentukan permintaan klien. Suatu service contract dari resource API tersusun atas definisi dari protokol aplikasi yang digunakan, media type yang diterima saat request dan dihasilkan dari respon service, status code dari respon, serta URI atau skema URI atau pola dari URI yang dapat digunakan untuk mengidentifikasi suatu resource. Contoh jenis resource API adalah layanan yang menggunakan pendekatan REST seperti OData Service.
Berbeda dengan resource API, suatu RPC API menyelesaikan masalah bagaimana suatu klien dapat memanggil prosedur remot melalui jaringan atau address space yang berbeda. Teknologi remoting lama dari RPC seperti CORBA dan DCOM memang mudah digunakan tetapi ada isu interoperabilitas ketika diterapkan pada platform yang berbeda-beda. HTTP dapat memitigasi isu-isu tersebut karena berbasis open standard yang berjalan di semua platform. Konsep dari RPC API ada Remote Procedure Call di mana klien mengirim pesan ke proses yang ada di server remot kemudian menunggu sampai diperoleh respon dari server, pesan tersebut berisi nama prosedur yang akan dieksekusi dan sekumpulan data parameter yang dapat dipetakan ke parameter dari prosedur remot, selanjutnya server membaca pesan yang diterima dan mengeksekusi prosedur sesuai nama yang diminta pada pesan, hasil eksekusi prosedur dikirimkan kembali ke klien sebagai respon untuk diproses oleh klien. Framework layanan yang populer seperti WCF atau JAX-WS dapat dengan mudah digunakan untuk mengembangkan web service model RPC API.
Model web service yang ke tiga adalah Message API (ada juga yang menyebut dengan Document API), memungkinkan klien mengirimkan pesan berisi perintah, notifikasi, atau informasi ke server remot melalui jaringan namun pesan tersebut tidak harus terikat dengan prosedur remot tertentu sehingga API pada server remot harus mengenali sekumpulan jenis pola pesan tertentu. Dengan model message API maka klien dapat mengirim pesan ke URI yang telah ditentukan, ketika terjadi perubahan logik dan struktur data di sisi server remot tidak akan berpengaruh di sisi klien karena klien dapat mengirimkan jenis pesan yang berbeda-beda ke lokasi URI yang sama di server remot, sementara server remotlah yang bertugas menentukan handler / prosedur aktual untuk menangani pesan dari klien.
Referensi:
Daigneau, R., 2012, Service Design Patterns : Fundamental Design Solutions for SOAP/WSDL and RESTful Web Services, Addison-Wesley, New Jersey.