Apa pentingnya SOAP saat ini?

51

Terakhir saya temui layanan berbasis SOAP adalah selama magang di sebuah perusahaan keuangan pada tahun 2013. Itulah saat ketika saya memulai karir saya di bidang TI. Saya ingat memiliki beberapa bahan studi tentang SOAP di salah satu kursus teknik saya. Di luar itu, saya belum banyak menggunakan sabun selama karier saya.

Saya menanyakan hal ini karena pertanyaan "Perbedaan antara SOAP dan REST" muncul dalam salah satu wawancara saya baru-baru ini. Dari apa yang saya tahu (dan apa yang saya temukan di Google) SOAP adalah protokol dengan kopling ketat antara klien dan server untuk pertukaran informasi yang terkait erat dengan logika bisnis. Sedangkan REST adalah arsitektur stateless yang lebih fleksibel untuk transfer data.

Dapatkah seseorang tolong perbaiki saya jika saya salah tentang perbedaan antara SOAP dan REST ini? Juga, apa arti SOAP saat ini? Apakah orang masih mengembangkan API berbasis SOAP baru, atau sebagian besar adalah warisan sekarang?

Abhas Tandon
sumber
2
lihat juga: Masa Depan SABUN, dengan REST
nyamuk
14
@gnat: Untuk apa nilainya, jawaban di kedua pertanyaan itu semuanya mengerikan.
Robert Harvey
7
Apakah Anda pernah benar-benar melihat layanan REST? Yang saya lihat adalah "layanan web yang akhirnya mempelajari arti kata kerja HTTP". Mengapa tiba-tiba kita memanggil HTTP REST?
Luaan
8
@Luaan: Tidak ada yang tiba-tiba tentang hal itu; orang telah menyalahgunakan istilah "REST" selama bertahun-tahun.
Lightness Races with Monica

Jawaban:

59

REST memang gaya arsitektur. SOAP adalah protokol data. Perbedaan itu penting; Anda tidak dapat membandingkannya secara langsung.

Tujuan utama REST adalah untuk mewakili sumber daya di Internet, dan untuk menyediakan mekanisme untuk menemukannya. Sebaliknya, SOAP digunakan untuk mengkomunikasikan data terstruktur antar komputer, dan hanya itu yang dilakukannya.

Perhatikan bahwa Anda sebenarnya tidak perlu REST untuk membuat hubungan klien / server antara dua komputer di Internet. Yang Anda butuhkan adalah mekanisme yang mentransfer JSON atau XML, dan Anda bahkan tidak memerlukannya jika Anda bersedia tidak kompatibel dengan orang lain.

Namun demikian, SOAP telah tidak disukai untuk API baru yang menghadap publik, meskipun masih umum digunakan untuk aplikasi B2B karena Anda dapat mendefinisikan "kontrak data" dengannya. Layanan web JSON memiliki kelebihan yaitu agak ringan dan fleksibel, dan karena Javascript mengenali JSON secara asli, itu adalah pilihan alami untuk browser.

Tapi tidak ada yang berhubungan dengan REST, sungguh.

Bacaan Lebih Lanjut
Apakah SISA lebih baik daripada SABUN? (artikel bagus, meskipun salah menyebut SISA protokol).
Model Kematangan Richardson

Robert Harvey
sumber
3
Saya akan mengatakan fitur pembunuh dari layanan web JSON adalah fakta bahwa browser memiliki dukungan yang buruk untuk XML dan SOAP, sementara mereka memiliki (hampir) dukungan asli untuk JSON. SOAP memiliki banyak manfaat, tetapi jika Anda tidak dapat membuat permintaan AJAX terhadap layanan SOAP, itu sudah mati. Javascript / JSON menjadi common denominator terendah dari internet, sehingga Anda akan perlu manfaat besar untuk tidak menggunakannya, dan SOAP tidak yang jauh lebih baik.
Luaan
3
@Luaan Saya tidak akan mengatakan browser memiliki dukungan yang buruk untuk XML. Bahkan, sulit untuk mendapatkan yang lebih baik daripada melakukan XML HttpRequest dan mengakses atribut yang memiliki DOM yang diuraikan. Hanya saja jika yang diinginkan adalah struktur data yang khas, dan bukan dokumen, JSON lebih cocok, apakah Anda berada di browser atau di lingkungan lain.
André Paramés
4
Yang Anda butuhkan adalah mekanisme yang mentransfer JSON atau XML, dan Anda bahkan tidak memerlukannya jika Anda bersedia tidak kompatibel dengan orang lain. -1: Jika Anda ingin menghubungkan klien dan server, Anda hanya perlu protokol arbitrer yang dipahami oleh kedua belah pihak tidak ada hubungannya dengan menggunakan xml, JSON atau kompatibel dengan orang lain. Bahkan menggunakan json atau xml tidak menjamin bahwa Anda kompatibel dengan semua orang atau bahkan seseorang. Json dan xml hanyalah format data yang tidak lebih.
Paul Wasilewski
6
@ PaulWasilewski: Ya, itulah yang saya katakan. Jangan terpaku pada kata-kata. Ada alasan mengapa semua orang menggunakan JSON; itu standar. Menggunakannya menjamin bahwa Anda menggunakan sesuatu yang dapat dikenali oleh orang lain.
Robert Harvey
3
@RobertHarvey, tidak bukan itu yang Anda tulis mungkin Anda bersungguh-sungguh. JSON standar jadi apa? CSV, Protcol Buffer, BSON distandarisasi serta banyak lainnya. Jadi alasan mengapa semua orang menggunakan JSON banyak ragamnya. Dan bahkan ada beberapa yang menggunakan JSON karena semua orang menggunakan JSON;)
Paul Wasilewski
29

REST jauh lebih terbatas daripada SOAP, yang merupakan kekuatan dan alasan popularitasnya.

Dalam SOAP, set operasi diizinkan dan set tipe data yang diizinkan pada dasarnya tidak terbatas. SOAP adalah protokol prosedur jarak jauh, yang Anda gunakan untuk mengekspos API lokal di seluruh jaringan tanpa kehilangan kesetiaan. Ini membuat SOAP populer di lingkungan perusahaan di mana sistem transaksional yang kompleks diperlukan untuk berinteraksi di seluruh jaringan tanpa kehilangan kesetiaan di sepanjang jalan. Kekayaan dalam kemampuan ini juga merupakan kejatuhan SOAP, karena membuat SOAP API sangat sulit untuk dipahami dan digunakan sehingga diperlukan tooling otomatis dalam bentuk WSDL dan pustaka klien SOAP untuk memahami sesuatu. Terlebih lagi, mengekspos kekayaan penuh dari sistem yang mendasarinya tidak menarik di API publik, di mana Anda ingin memberikan abstraksi yang memungkinkan Anda mengembangkan sistem yang mendasarinya tanpa harus merusak atau versi API Anda.

REST + JSON mendapatkan popularitas secara khusus karena kesederhanaannya. Ini mendefinisikan serangkaian operasi terbatas dengan serangkaian tipe data terbatas, mengharuskan desainer API untuk hati-hati merancang abstraksi yang sesuai dengan kosa kata terbatas ini dan benar-benar berpikir melalui pemetaan domain bisnis ke sumber daya REST. API REST mudah dimengerti dan mudah digunakan tanpa alat khusus. Untuk API yang menghadap publik di mana pengguna API Anda mungkin memiliki semua tingkat keterampilan dan pengetahuan, inilah yang Anda inginkan, itulah sebabnya mengapa semua API yang Anda lihat di web telah beralih ke REST. SOAP diturunkan ke situasi perusahaan di mana masih ada keinginan dan kebutuhan untuk berbagi API yang kompleks antara sistem. Namun,

Pada dasarnya, apa yang orang sadari adalah bahwa sekumpulan kendala yang harus Anda terapkan pada desain API Anda untuk membuat API sederhana dan abstrak sehingga dapat dipelihara dan mudah digunakan adalah sekumpulan kendala yang diperkenalkan REST, yang secara efektif menetralkan SOAP. manfaat hanya menyisakan kerugian bagi Anda. Anda bisa membangun API yang disederhanakan dengan SOAP, tetapi itu tidak akan pernah semudah digunakan sebagai REST, jadi dalam praktiknya semua orang hanya memilih REST.

Joeri Sebrechts
sumber
4
Perdebatan mengetik statis dan dinamis tua yang baik, yay: D Rapi dan keras vs simpang dan sederhana, perang yang tidak pernah berakhir.
Luaan
@Luaan ... dan dinamis selalu menang untuk pertukaran data. youtube.com/watch?v=ROor6_NGIWU
Jared Smith
6
@ JaredSmith, saya sangat tidak setuju. Kontrak seharusnya diikuti sehingga kedua titik akhir memetakan data dengan benar, jika Anda dapat melakukannya melalui penerbitan metadata alih-alih halaman dokumentasi rawan kesalahan, mengapa Anda tidak melakukannya?
drake7707
1
REST praktis adalah protokol; Tesis dan agama adalah 'gaya arsitektur'. Jawaban ini dengan benar membandingkan istirahat praktis dengan sabun praktis.
bmargulies
1
Jawaban Anda sudah menunjukkan bahwa Anda tidak mengerti REST dan komentar Anda menggarisbawahi hal itu.
Paul Wasilewski
5

Anda tidak dapat membandingkan REST dan SABUN. REST adalah gaya arsitektur sedangkan SOAP adalah protokol.

Sayangnya, REST menjadi bahasa sehari-hari yang diucapkan sebagai sinonim untuk layanan HTTP RESTful, yang berarti realisasi arsitektur gaya REST dengan HTTP sebagai protokol (aplikasi).

REST didasarkan pada prinsip-prinsip berikut (kendala dan elemen) (dalam kurung realisasi dalam HTTP tenang) [1] .

  • Stateless (HTTP adalah protokol stateless)
  • Sumberdaya (diidentifikasi oleh URI)
  • Uniform Interface (Metode HTTP)
  • Representasi (MIME-TYPE)
  • HATEOS (Hyperlink)
  • Cache (HTTP Cache)

Di sisi lain banyak orang bermaksud mengatakan SOAP layanan web berdasarkan WSDL dan SOAP yang merupakan bagian dari arsitektur layanan web W3C [2] .

  • SOAP digunakan sebagai protokol untuk bertukar informasi (pada dasarnya nama metode, parameter, nilai balik, tipe data, ...).
  • WSDL bahasa definisi antarmuka untuk menggambarkan layanan web.

Apa arti penting SOAP saat ini?

SOAP adalah standar W3C dan digunakan sebagai format pertukaran informasi dalam layanan web W3C. Layanan web itu - terutama selama hype SOA (arsitektur berorientasi layanan) sekitar 2008 (+ - 3 tahun) - dan (sayangnya) masih diimplementasikan sebagian besar dalam aplikasi perusahaan.

Ini memiliki beberapa alasan. Saat itu HTTP tenang tidak dikenal, dan itu disalahpahami. Sayangnya, masih disalahpahami melihat jawaban lain

"[...] ISTIRAHAT jauh lebih terbatas daripada sabun [...]."

"Tujuan utama REST adalah untuk mewakili sumber daya di Internet [...]."

Selain itu, SOAP (dan WSDL) adalah bagian dari tumpukan protokol layanan web W3C yang bahkan memberikan lebih banyak standar untuk mengimplementasikan Layanan Web.

Apakah orang masih mengembangkan API berbasis SOAP baru, atau sebagian besar adalah warisan sekarang?

Jadi ya, masih ada dan akan ada juga dalam sistem masa depan di luar sana yang menggunakan SOAP (setidaknya dalam sistem perusahaan, kebanyakan di belakang pintu). Tetapi mayoritas berusaha melakukan semacam "REST" saat ini.

Dapatkah seseorang tolong perbaiki saya jika saya salah tentang perbedaan antara SOAP dan REST ini?

Mengatakan REST adalah arsitektur stateless yang lebih fleksibel untuk transfer data bukanlah penjelasan yang baik. Cukup diucapkan REST adalah gaya arsitektur dengan batasan dan elemen tertentu. Sedangkan SOAP adalah protokol pertukaran informasi.

Seperti yang sudah saya tulis, Anda tidak dapat membandingkannya. Tetapi Anda dapat membandingkan Layanan Web HTTP RESTful dengan Layanan Web SOAP / WSDL.

Paul Wasilewski
sumber
"Tetapi Anda dapat membandingkan Layanan Web HTTP RESTful dengan Layanan Web SOAP / WSDL." Tapi itulah yang diminta OP. Adakah yang sudah menjawabnya?
RoboJ1M