SABUN atau SISA untuk Layanan Web? [Tutup]

384

Apakah REST pendekatan yang lebih baik untuk melakukan Layanan Web atau SOAP? Atau apakah mereka alat yang berbeda untuk masalah yang berbeda? Atau apakah itu masalah yang bernuansa - yaitu, apakah ada yang sedikit lebih baik di arena tertentu daripada yang lain, dll?

Saya akan sangat menghargai informasi tentang konsep-konsep tersebut dan hubungannya dengan PHP-universe dan juga aplikasi web modern kelas atas.

pengguna13276
sumber
6
Di dunia sekarang ini pertimbangkan proses REST berbasis JSON
ErstwhileIII
Utas terkait tetapi tidak terduplikasi: stackoverflow.com/questions/34624813/…
smwikipedia

Jawaban:

561

Saya membangun salah satu server SOAP pertama, termasuk pembuatan kode dan generasi WSDL, dari spesifikasi asli yang sedang dikembangkan, ketika saya bekerja di Hewlett-Packard. Saya TIDAK merekomendasikan menggunakan sabun untuk apa pun.

Singkatan "SABUN" adalah bohong. Ini tidak sederhana, tidak berorientasi objek, tidak mendefinisikan aturan akses. Ini, bisa dibilang, Protokol. Ini adalah spec terburuk Don Box, dan itu cukup luar biasa, karena dialah orang yang melakukan "COM".

Tidak ada yang berguna dalam SOAP yang tidak dapat dilakukan dengan REST untuk transportasi, dan JSON, XML, atau bahkan teks biasa untuk representasi data. Untuk keamanan transportasi, Anda dapat menggunakan https. Untuk otentikasi, auth dasar. Untuk sesi, ada cookie. Versi REST akan lebih sederhana, lebih jelas, berjalan lebih cepat, dan menggunakan lebih sedikit bandwidth.

XML-RPC dengan jelas mendefinisikan protokol permintaan, respons, dan kesalahan, dan ada perpustakaan yang bagus untuk sebagian besar bahasa. Namun, XML lebih berat daripada yang Anda butuhkan untuk banyak tugas.

mdhughes
sumber
51
Anda lupa menyebutkan bahwa menulis pembungkus layanan untuk layanan web REST akan memakan waktu 100000x lebih lama daripada secara instan menghasilkan kelas dari WSDL layanan web SOAP. IMO REST bagus untuk mendapatkan gumpalan data yang tidak perlu Anda kerjakan. Tetapi jika Anda ingin mendapatkan objek, SOAP lebih cepat dan lebih mudah untuk diterapkan. Lihat posting saya di sini untuk info lebih lanjut: stackoverflow.com/questions/3285704/…
Josh M.
40
Jika Anda bermaksud membuat pembungkus, pertimbangkan untuk menggunakan dekoder JSON. Biarkan SOAP beristirahat dengan tenang.
Ivo Danihelka
67
Sangat mengecewakan melihat jawaban ini mendapatkan begitu banyak upvotes dan hadiah. Itu bukan jawaban yang bermanfaat. "Tidak ada yang berguna dalam SOAP yang tidak dapat dilakukan dengan REST ..". Jadi orang ini telah memeriksa setiap masalah yang mungkin harus diselesaikan seseorang dan dapat dengan aman mengatakan bahwa layanan web Anda tidak boleh menggunakan SOAP (WS- * tampaknya tersirat di sini)? Ya benar. Saya lelah mendengar teriakan kuat dari REST> WS- * atau SOAP .. hampir tidak sebanding.
insipid
33
Pembaca harus mencatat bahwa pengalaman bahwa OP telah menulis server untuk versi pertama SOAP memiliki sedikit pengaruh pada versi modern SOAP dan protokol yang terkait.
John Saunders
10
Saya membangun salah satu layanan web SOAP pertama (pada tahun 2002; Google search API). Hanya mengkonfirmasi apa yang dikatakan mdhughes, SOAP bukanlah teknologi yang baik. Untungnya sekarang sudah lampau dan tidak ada yang mempertimbangkan serius menggunakannya di luar konteks perusahaan yang aneh.
Nelson
198

REST adalah arsitektur, SOAP adalah protokol.

Itu masalah pertama.

Anda dapat mengirim amplop SOAP dalam aplikasi REST.

SOAP sendiri sebenarnya cukup mendasar dan sederhana, standar WSS- * yang membuatnya sangat kompleks.

Jika konsumen Anda adalah aplikasi lain dan server lain, ada banyak dukungan untuk protokol SOAP hari ini, dan dasar-dasar memindahkan data pada dasarnya adalah klik mouse pada IDE modern.

Jika konsumen Anda lebih cenderung menjadi klien RIA atau Ajax, Anda mungkin ingin sesuatu yang lebih sederhana daripada SOAP, dan lebih asli untuk klien (terutama JSON).

Paket JSON yang dikirim melalui HTTP tidak harus berupa arsitektur REST, hanya pesan ke URL. Semua bisa diterapkan dengan sempurna, tetapi ada komponen kunci untuk idiom REST. Namun, mudah untuk membingungkan keduanya. Tetapi hanya karena Anda berbicara permintaan HTTP tidak selalu berarti Anda memiliki arsitektur REST. Anda dapat memiliki aplikasi REST tanpa HTTP sama sekali (ingat, ini jarang terjadi).

Jadi, jika Anda memiliki server dan konsumen yang "nyaman" dengan SOAP, SOAP dan WSS stack dapat melayani Anda dengan baik. Jika Anda melakukan lebih banyak hal ad hoc dan ingin antarmuka yang lebih baik dengan browser web, maka beberapa protokol yang lebih ringan melalui HTTP juga dapat bekerja dengan baik.

Will Hartung
sumber
7
Dalam hal ini, saya pikir kita berbicara tentang dua arsitektur melalui protokol. REST benar-benar sebuah arsitektur sedangkan SOAP mencoba mendefinisikan protokol baru pada protokol yang ada, di atasnya Anda harus menerapkan arsitektur RPC. Konyol-OAP.
2
Ini jelas jawaban yang jauh lebih baik daripada kata - kata kasar yang muncul di halaman ini
MickyD
102

REST adalah paradigma yang secara fundamental berbeda dari SOAP. Bacaan yang bagus tentang REST dapat ditemukan di sini: Bagaimana saya menjelaskan REST kepada istri saya .

Jika Anda tidak punya waktu untuk membacanya, inilah versi singkatnya: REST adalah sedikit perubahan paradigma dengan berfokus pada "kata benda", dan menahan jumlah "kata kerja" yang dapat Anda terapkan pada kata benda itu. Satu-satunya kata kerja yang diizinkan adalah "get", "put", "post" dan "delete". Ini berbeda dari SOAP di mana banyak kata kerja yang berbeda dapat diterapkan ke banyak kata benda yang berbeda (yaitu banyak fungsi berbeda)

Untuk REST, empat kata kerja dipetakan ke permintaan HTTP yang sesuai, sementara kata benda diidentifikasi oleh URL. Ini membuat manajemen negara jauh lebih transparan daripada di SOAP, di mana sering tidak jelas status apa yang ada di server dan apa yang ada di klien.

Dalam prakteknya meskipun sebagian besar ini hilang, dan REST biasanya hanya merujuk pada permintaan HTTP sederhana yang mengembalikan hasil dalam JSON , sementara SOAP adalah API yang lebih kompleks yang berkomunikasi dengan melewati XML. Keduanya memiliki kelebihan dan kekurangan, tetapi saya telah menemukan bahwa dalam pengalaman saya REST biasanya merupakan pilihan yang lebih baik karena Anda jarang membutuhkan fungsionalitas penuh yang Anda dapatkan dari SOAP.

toluju
sumber
5
Satu-satunya kata kerja yang diizinkan adalah "get", "put", dan "delete"? Bagaimana dengan POST dan OPSI?
Andrew Swan
2
Maaf, saya lupa menyebutkan POST. OPSI (dan KEPALA) tidak dianggap sebagai bagian dari spesifikasi REST.
toluju
8
@toluju Saya tidak tahu bahwa REST memiliki spesifikasi. Ini adalah gaya arsitektur dan walaupun mungkin benar bahwa PILIHAN jarang digunakan, saya tidak berpikir Anda dapat mengatakan hal yang sama tentang KEPALA.
kosong
6
KEPALA, PILIHAN, dan TRACE adalah semua metode yang menanyakan tentang meta-informasi server dan bukan tentang konten di URL itu sendiri. Karena itu mereka sedikit digunakan untuk aplikasi bergaya REST. Saya berdiri dikoreksi sejauh spesifikasi. Spesifikasi utama yang penting bagi REST adalah spesifikasi HTTP itu sendiri.
toluju
10
Sebagai catatan, "Istirahat biasanya ... mengacu pada ... permintaan yang menghasilkan JSON" - tidak benar. Jenis media yang dikembalikan tidak dibatasi atau tidak diubah ke format apa pun. Memang, banyak layanan REST mengembalikan aplikasi / xml, video atau jenis media lainnya. Dalam pengalaman saya, misalnya di perusahaan, layanan web berbasis REST mengembalikan XML ke JSON. Bagaimanapun, tergantung pada layanan apa yang dikembalikan dan klien dapat berpartisipasi dalam negosiasi jenis konten ini melalui tajuk HTTP "Terima".
Darrell Teague
59

Lowdown cepat untuk pertanyaan 2012:

Area yang REST bekerja dengan sangat baik adalah:

  • Bandwidth dan sumber daya terbatas. Ingat struktur pengembalian benar-benar dalam format apa pun (ditentukan pengembang). Plus, browser apa pun dapat digunakan karena pendekatan REST menggunakan kata kerja GET, PUT, POST, dan DELETE standar. Sekali lagi, ingat bahwa REST juga dapat menggunakan objek XMLHttpRequest yang didukung sebagian besar browser modern saat ini, yang menambahkan bonus tambahan dari AJAX.

  • Operasi yang benar-benar tanpa kewarganegaraan.  Jika suatu operasi perlu dilanjutkan, maka REST bukanlah pendekatan terbaik dan SOAP mungkin lebih cocok. Namun, jika Anda memerlukan operasi CRUD stateless (Buat, Baca, Perbarui, dan Hapus), maka REST itu.

  • Situasi caching.  Jika informasi dapat di-cache karena operasi REST yang sepenuhnya tanpa kewarganegaraan, ini sempurna. Itu mencakup banyak solusi di ketiga di atas.

Jadi mengapa saya bahkan mempertimbangkan SABUN? Sekali lagi, SOAP cukup matang dan terdefinisi dengan baik dan memang datang dengan spesifikasi lengkap. Pendekatan REST hanya itu, sebuah pendekatan dan terbuka lebar untuk pengembangan, jadi jika Anda memiliki yang berikut ini, SOAP adalah solusi yang bagus:

  • Pemrosesan dan pemanggilan asinkron.  Jika aplikasi Anda membutuhkan tingkat keandalan dan keamanan yang terjamin maka SOAP 1.2 menawarkan standar tambahan untuk memastikan jenis operasi ini. Hal-hal seperti WSRM - WS-Reliable Messaging.

  • Kontrak formal.  Jika kedua belah pihak (penyedia dan konsumen) harus menyetujui format pertukaran maka SOAP 1.2 memberikan spesifikasi kaku untuk jenis interaksi ini.

  • Operasi stateful. Jika aplikasi memerlukan informasi kontekstual dan manajemen keadaan percakapan maka SOAP 1.2 memiliki spesifikasi tambahan dalam struktur WS * untuk mendukung hal-hal tersebut (Keamanan, Transaksi, Koordinasi, dll). Relatif, pendekatan REST akan membuat pengembang membangun pipa ledeng kustom ini.

http://www.infoq.com/articles/rest-soap-when-to-use-each

PmanAce
sumber
44

SOAP saat ini memiliki keuntungan dari alat yang lebih baik di mana mereka akan menghasilkan banyak kode boilerplate untuk kedua lapisan layanan serta menghasilkan klien dari WSDL yang diberikan.

REST lebih sederhana, karena itu dapat lebih mudah dipelihara, terletak di jantung arsitektur Web, memungkinkan visibilitas protokol yang lebih baik, dan telah terbukti berskala pada ukuran WWW itu sendiri. Beberapa kerangka kerja di luar sana membantu Anda membangun layanan REST, seperti Ruby on Rails, dan beberapa bahkan membantu Anda dengan menulis klien, seperti Layanan Data ADO.NET. Tetapi untuk sebagian besar, dukungan alat kurang.

Mark Cidade
sumber
32
REST lebih mudah dikelola - yang harus Anda lakukan adalah memantau dokumentasi API untuk setiap perubahan kecil pada struktur metode REST atau struktur data yang mereka kembalikan. Jika Anda melihat perubahan, Anda hanya perlu secara manual membuat perubahan dalam kode tulisan tangan Anda yang mem-parsing respons metode. Dengan SOAP Anda memiliki beban mengklik kanan pada referensi Anda dan memilih "perbarui" dan kemudian memperbaiki beberapa kesalahan kompilasi. (Sarkasme termasuk gratis.)
Josh M.
10
@JoshM: Jika Anda memiliki kode tulisan tangan untuk mengurai respons dari respons yang dihasilkan berdasarkan spesifikasi lunak dan fleksibel, Anda tidak menggunakan REST; Anda telah hardcoded ke pohon sumber daya. Itu sama dengan pengkodean ke c: \ windows \ temp atau apa pun, yang bertentangan dengan permintaan untuk lokasi PROPER untuk digunakan. Karena itu berfungsi untuk sementara waktu, tidak menjadikannya hal yang benar untuk dilakukan, juga bukan praktik pengkodean yang baik.
Paul Sonier
1
@ PaulSonier: apa cara yang tepat untuk mem-parsing respons dari apa yang sering merupakan spesifikasi lunak dan fleksibel? Saya mendapatkan bahwa kode rapuh hardcoded tidak bagus, tapi saya sedang mencari saran atau contoh di akhir klien RESTful APIs dan datang singkat sejauh ini. Saya pikir inilah maksud Josh - SOAP membutuhkan banyak kode boilerplate tetapi apa yang Anda dapatkan untuk itu adalah kontrak yang terlihat dan dapat diterapkan pada format dokumen dan jenis keamanan; RESTful APIs meninggalkan kontrak dan boilerplate dan seringkali terlihat cukup sederhana tidak masalah, tapi ... bagaimana Anda tidak melakukan hardcode ke pohon sumber daya?
metamatt
(Saya mendapatkan argumen HATEOAS, tetapi menggunakan, katakanlah, martinfowler.com/articles/richardsonMaturityModel.html sebagai contoh - masih ada cukup banyak interpretasi semantik yang diperlukan, setelah menguraikan XML, sebelum Anda sampai ke elemen tautan yang "kontrol hypermedia".)
metamatt
5
Jika Anda menggali fitur-fitur canggih SOAP (semua hal WS- *), Anda akan segera menemukan bahwa alat tidak mendukung ini dengan baik (termasuk produk EAI dan ESB) dan bahwa kerangka kerja dapat berperilaku berbeda tergantung (seperti Metro vs C # ) untuk seluk-beluk seperti "" dan null. Dan kode boilerplate yang dihasilkan biasanya hanya untuk mengatasi beban yang ditimbulkan oleh SOAP itu sendiri.
rds
40

SOAP berguna dari perspektif perkakas karena WSDL sangat mudah dikonsumsi oleh perkakas. Jadi, Anda bisa mendapatkan klien Layanan Web yang dihasilkan untuk Anda dalam bahasa favorit Anda.

REST bermain baik dengan halaman web AJAX'y. Jika Anda menjaga permintaan Anda tetap sederhana, Anda dapat membuat panggilan layanan langsung dari JavaScript Anda, dan itu sangat berguna. Cobalah untuk menjauh dari memiliki ruang nama apa pun di XML respons Anda, saya telah melihat browser mencekiknya. Jadi, xsi: type mungkin tidak akan bekerja untuk Anda, tidak ada skema XML yang terlalu rumit.

REST cenderung memiliki kinerja yang lebih baik juga. Persyaratan CPU dari kode yang menghasilkan respons REST cenderung lebih rendah daripada yang diperlihatkan kerangka kerja SOAP. Dan, jika Anda memiliki bebek generasi XML yang berjejer di sisi server, Anda dapat mengalirkan XML secara efektif ke klien. Jadi, bayangkan Anda membaca deretan kursor basis data. Saat Anda membaca satu baris, Anda memformatnya sebagai elemen XML, dan Anda menulisnya langsung ke konsumen layanan. Dengan cara ini, Anda tidak harus mengumpulkan semua baris basis data dalam memori sebelum mulai menulis output XML Anda - Anda membaca dan menulis pada saat yang sama. Lihatlah ke mesin templating novel atau XSLT untuk membuat streaming bekerja untuk REST.

SOAP di sisi lain cenderung dihasilkan oleh layanan yang dihasilkan alat sebagai gumpalan besar dan baru kemudian ditulis. Ini bukan kebenaran mutlak, ingatlah, ada cara untuk mendapatkan karakteristik streaming dari SOAP, seperti dengan menggunakan lampiran.

Proses pengambilan keputusan saya adalah sebagai berikut: jika saya ingin layanan saya mudah digunakan oleh konsumen, dan pesan yang saya tulis akan berukuran sedang hingga kecil (10MB atau kurang), dan saya tidak keberatan membakar beberapa CPU tambahan siklus di server, saya pergi dengan SOAP. Jika saya perlu melayani ke AJAX di browser web, atau saya perlu hal untuk streaming, atau tanggapan saya sangat besar, saya pergi REST.

Akhirnya, ada banyak standar hebat yang dibangun di sekitar SOAP, seperti WS-Security dan mendapatkan Layanan Web yang canggih, yang bisa Anda pasang jika Anda menggunakan alat yang tepat. Hal-hal semacam itu benar-benar membuat perbedaan, dan dapat membantu Anda memenuhi beberapa persyaratan berbulu.

Tim Cooper
sumber
29

Saya tahu ini adalah pertanyaan lama tetapi saya harus memposting jawaban saya - mungkin seseorang akan merasakan manfaatnya. Saya tidak bisa percaya berapa banyak orang yang merekomendasikan REST atas sabun. Saya hanya bisa berasumsi orang-orang ini bukan pengembang atau belum pernah benar-benar mengimplementasikan layanan REST dengan ukuran yang masuk akal. Menerapkan layanan REST membutuhkan waktu lebih lama daripada menerapkan layanan SOAP. Dan pada akhirnya keluar juga lebih berantakan. Inilah alasan saya memilih SOAP 99% dari waktu:

1) Menerapkan layanan REST membutuhkan waktu yang jauh lebih lama daripada menerapkan layanan SOAP. Ada alat untuk semua bahasa / kerangka / platform modern untuk membaca di WSDL dan kelas dan klien proksi keluaran. Menerapkan layanan REST dilakukan dengan tangan dan - dapatkan ini - dengan membaca dokumentasi. Selain itu, saat menerapkan kedua layanan ini, Anda harus membuat "tebakan" tentang apa yang akan kembali ke pipa karena tidak ada skema nyata atau dokumen referensi.

2) Mengapa menulis layanan REST yang mengembalikan XML? Satu-satunya perbedaan adalah bahwa dengan REST Anda tidak tahu jenis yang diwakili oleh setiap elemen / atribut - Anda sendiri yang mengimplementasikannya dan berharap suatu hari suatu string tidak menemukan bidang yang Anda pikir selalu int. SOAP mendefinisikan struktur data menggunakan WSDL jadi ini adalah no-brainer.

3) Saya pernah mendengar keluhan bahwa dengan SOAP Anda memiliki "overhead" dari Amplop SOAP. Di zaman sekarang ini, apakah kita benar-benar perlu khawatir tentang beberapa byte?

4) Saya pernah mendengar argumen bahwa dengan REST Anda bisa memasukkan URL ke browser dan melihat datanya. Tentu, jika layanan REST Anda menggunakan otentikasi sederhana atau tidak ada. Layanan Netflix, misalnya, menggunakan OAuth yang mengharuskan Anda untuk menandatangani sesuatu dan menyandikan hal-hal sebelum Anda bahkan dapat mengirimkan permintaan Anda.

5) Mengapa kita membutuhkan URL yang "dapat dibaca" untuk setiap sumber daya? Jika kami menggunakan alat untuk mengimplementasikan layanan, apakah kami benar-benar peduli dengan URL yang sebenarnya?

Perlu saya lanjutkan?

Josh M.
sumber
23
Itu jawaban yang bagus tapi jujur, Anda tidak mengerti apa itu REST. Anda dapat membaca 2 jawaban terbaik dalam pertanyaan ini untuk mengetahuinya. Anda membandingkannya sebagai arsitektur yang serupa, sementara REST hanya sebuah paradigma. Itu sama dengan membandingkan "etiket restoran" dengan "pizza". Apakah lebih baik makan dengan garpu dan pisau atau makan pizza? "Aku akan pergi dengan pizza" - katamu. Dan seperti jawaban pertama menyarankan, Anda dapat dengan mudah menggunakan keduanya - makan pizza dengan garpu dan pisau.
bezmax
3
"Di zaman sekarang ini, apakah kita benar-benar perlu khawatir tentang beberapa byte?" Umm, ya kita lakukan! Dari tempat saya berada sekarang, saya dapat memainkan banyak game komputer online, tetapi World of Warcraft Developers Blizzard berlangganan pandangan Anda dan tidak pernah repot-repot untuk mengoptimalkan lalu lintas jaringan, maka itu satu-satunya game yang saya dapatkan dari terputusnya koneksi konstan. Untuk menjadi game yang lama, WoW memiliki lalu lintas jaringan yang sangat berat. Itu tidak baik di setiap hari dan usia, karena akan selalu ada orang-orang dengan koneksi marjinal di mana pendekatan boros untuk menghemat waktu pengembangan Anda hanya akan merusaknya.
Tsais
11
Singkatnya, Anda tampaknya mengatakan, "SABUN lebih baik karena ada lebih banyak alat untuk membantu Anda dengannya". Meskipun ini adalah poin yang valid, berhati-hatilah untuk tidak menghapus REST hanya karena ini; lebih mudah untuk membuat halaman web di editor WYSIWYG daripada kode HTML dengan tangan, tetapi itu tidak berarti itu selalu jawaban yang tepat. Nilai REST adalah bahwa ia mengenali spesifikasi HTTP yang dibuat pada awal 90-an yang telah memecahkan banyak masalah yang berusaha diselesaikan oleh SOAP lagi.
keithjgrant
@JoshM Jadi jawaban Anda di atas sama dengan pertanyaan Anda dari " stackoverflow.com/questions/3285704/… "?
Mukus
@Mukus - bersalah seperti yang dituduhkan ...?
Josh M.
19

Sebagian besar aplikasi yang saya tulis adalah server-side C # atau Java, atau aplikasi desktop di WinForms atau WPF. Aplikasi ini cenderung membutuhkan API layanan yang lebih kaya daripada yang dapat diberikan REST. Plus, saya tidak ingin menghabiskan lebih dari beberapa menit membuat klien layanan web saya. Alat generasi klien pemrosesan WSDL memungkinkan saya untuk mengimplementasikan klien saya dan beralih ke menambahkan nilai bisnis.

Sekarang, jika saya menulis layanan web secara eksplisit untuk beberapa panggilan ajax javascript, itu mungkin berada di REST; hanya demi mengetahui teknologi klien dan memanfaatkan JSON. Menurut pendapat saya, API layanan web yang digunakan dari javascript mungkin seharusnya tidak terlalu rumit, karena jenis kompleksitas itu tampaknya lebih baik ditangani di sisi server.

Dengan itu, ada beberapa klien SOAP untuk javascript; Saya tahu jQuery memilikinya. Dengan demikian, SOAP dapat dimanfaatkan dari javascript; tidak sebaik layanan REST mengembalikan string JSON. Jadi jika saya memiliki layanan web yang saya ingin cukup kompleks sehingga fleksibel untuk sejumlah teknologi dan penggunaan klien, saya akan menggunakan SOAP.

Travis Heseman
sumber
17

Saya akan merekomendasikan Anda pergi dengan REST pertama - jika Anda menggunakan Java lihat JAX-RS dan implementasi Jersey . REST jauh lebih sederhana dan mudah diinterupsi dalam banyak bahasa.

Seperti yang orang lain katakan di utas ini, masalah dengan SOAP adalah kerumitannya ketika spesifikasi WS- * lainnya masuk dan ada banyak masalah interop jika Anda menyimpang ke bagian WSDL, XSD, SOAP, WS-Addressing dll yang salah.

Cara terbaik untuk menilai debat REST v SOAP adalah melihat di internet - hampir semua pemain besar di ruang web, google, amazon, ebay, twitter, dan lain-lain - cenderung menggunakan dan lebih suka API yang tenang daripada SOAP.

Pendekatan lain yang bagus untuk menggunakan REST adalah Anda dapat menggunakan kembali banyak kode dan infrastruktur antara aplikasi web dan front end REST. misalnya rendering HTML versus XML versus JSON dari sumber daya Anda biasanya cukup mudah dengan kerangka kerja seperti JAX-RS dan tampilan tersirat - plus mudahnya untuk bekerja dengan sumber daya tenang menggunakan browser web

James Strachan
sumber
1
+1 adalah "Cara terbaik untuk menilai ..." contoh yang bagus adalah Google Javascript API. Awalnya dalam SOAP, kemudian sebagai tanggapan terhadap keluhan pengembang, retooled di REST. Tidak lama setelah itu menjadi Google # 1 API (dengan no. Permintaan) - terkejut bahwa itu mengalahkan peta API tetapi ternyata memang demikian (menurut pengembang utama di JS API).
doug
16

Saya yakin Don Box menciptakan SABUN sebagai lelucon - 'lihat, Anda dapat memanggil metode RPC melalui web' dan hari ini mengeluh ketika dia menyadari betapa mengerikannya standar web yang telah membengkak itu menjadi :-)

REST itu baik, sederhana, diterapkan di mana-mana (jadi lebih 'standar' daripada standar) cepat dan mudah. Gunakan REST.

gbjbaanb
sumber
5
"Saya yakin Don Box menciptakan SOAP sebagai lelucon - 'lihat Anda dapat memanggil metode RPC melalui web'" mungkin benar. +1
Mukus
15

Saya pikir keduanya memiliki tempat sendiri. Menurutku:

SOAP : Pilihan yang lebih baik untuk integrasi antara sistem warisan / kritis dan sistem web / layanan web, pada lapisan dasar, di mana WS- * masuk akal (keamanan, kebijakan, dll.).

Tenang : Pilihan yang lebih baik untuk integrasi antara situs web, dengan API publik, di TOP of layer (LIHAT, yaitu, javascript mengambil panggilan ke URI).

irobson
sumber
13

Satu hal yang belum disebutkan adalah bahwa amplop SABUN dapat berisi tajuk serta bagian-bagian tubuh. Ini memungkinkan Anda menggunakan ekspresi penuh XML untuk mengirim dan menerima informasi band. REST, sejauh yang saya tahu, membatasi Anda ke HTTP Header dan kode hasil.

(otoh, bisakah Anda menggunakan cookie dengan layanan REST untuk mengirim "header" -tipe data band?)

John Saunders
sumber
6
Mungkin karena Anda salah? REST dapat menggunakan tajuk HTTP standar atau kustom yang Anda butuhkan, plus badan permintaan.
Chris Broski
Mungkin tidak. Lihatlah apa yang bisa Anda masukkan ke dalam header SOAP vs apa yang bisa Anda masukkan ke dalam header HTTP. Berapa lama satu baris bisa?
John Saunders
1
Spesifikasi HTTP tidak memberikan batasan pada data yang disertakan dalam header dan setiap nilai bidang header dapat menjangkau beberapa baris. Masing-masing server web dapat menetapkan batas moderat, tetapi implikasi Anda bahwa Anda tidak dapat memasukkan informasi penting dalam header HTTP terbukti palsu.
Chris Broski
@protonfish: Saya tidak menyiratkan bahwa Anda tidak dapat memasukkan informasi penting ke dalam header HTTP. Saya bertanya-tanya apakah Anda dapat menempatkan sebanyak informasi ke HTTP header seperti dapat ditempatkan ke dalam header SOAP. Ketika saya bertanya berapa lama satu baris, itu karena saya ingin tahu jawabannya.
John Saunders
@protonfish: Saya juga berpikir bahwa perbedaannya jelas antara "ekspresi penuh XML" di satu sisi dan "HTTP Header dan kode hasil" di sisi lain. Mungkin itu tidak sejelas yang saya kira.
John Saunders
10

Jangan mengabaikan XML-RPC. Jika Anda hanya mencari solusi yang ringan maka ada banyak yang bisa dikatakan untuk protokol yang dapat didefinisikan dalam beberapa halaman teks dan diimplementasikan dalam jumlah kode yang minimal. XML-RPC telah ada selama bertahun-tahun tetapi keluar dari mode untuk sementara waktu - tetapi daya tarik minimalis tampaknya memberikannya sesuatu kebangkitan akhir-akhir ini.

Cruachan
sumber
10

Menjawab pertanyaan 2012 yang diperbarui (dengan hadiah kedua), dan meninjau hasil hari ini (jawaban lain).


SABUN, pro dan kontra

Tentang SOAP 1.2, kelebihan dan kekurangan saat membandingkan dengan "REST" ... Ya, sejak 2007 Anda dapat menggambarkan layanan Web REST dengan WSDL , dan menggunakan protokol SOAP ... Artinya, jika Anda bekerja sedikit lebih keras, semua standar W3C dari tumpukan protokol layanan web bisa TETAP !

Ini adalah titik awal yang baik, karena kita dapat membayangkan sebuah skenario di mana semua diskusi filosofis dan metodologis dihindari sementara. Kami dapat membandingkan secara teknis "SOAP-REST" dengan "NON-SOAP-REST" di layanan serupa,

  • SOAP-REST (= "REST-SOAP"): seperti yang ditunjukkan oleh L.Mandel , WSDL2 dapat menggambarkan layanan web REST, dan, jika kita mengira bahwa XML yang dicontohkan dapat dimasukkan ke dalam SOAP, semua implementasi akan menjadi "SOAP-REST" .

  • NON-SOAP-REST : sembarang layanan web REST yang tidak bisa menjadi SABUN ... Yaitu, "90%" dari contoh REST yang terkenal. Beberapa tidak menggunakan XML (mis. REST AJAX khas menggunakan JSON sebagai gantinya), beberapa menggunakan struktur XML lain, tanpa header atau aturan SOAP. PS: untuk menghindari informalitas, kita bisa mengira REST level 2 dalam perbandingan.

Tentu saja, untuk membandingkan lebih konseptual, bandingkan "NON-REST-SOAP" dengan "NON-SOAP-REST", karena pendekatan pemodelan yang berbeda. Jadi, selesaikan taksonomi layanan web ini:

  • NON-REST-SOAP : setiap layanan web SOAP yang tidak dapat REST ... Yaitu, "90%" dari contoh-contoh SOAP yang terkenal.

  • NON-REST-NEITHER-SOAP : ya, semesta "pemodelan layanan web" terdiri dari hal-hal lain (mis. XML-RPC ).

SABUN dalam kondisi REST

Membandingkan hal-hal yang sebanding: SOAP-REST dengan NON-SOAP-REST .

PROS

Menjelaskan beberapa istilah,

  • Stabilitas kontrak : untuk semua jenis kontrak (seperti "perjanjian tertulis"),

    • Dengan menggunakan standar : semua tingkat tumpukan W3C saling memenuhi. REST, sebaliknya, bukan W3C atau standar ISO, dan tidak memiliki rincian normal tentang periferal layanan. Jadi, seperti yang saya , @DaveWoldrich (20 suara), @cynicalman (5), @Exitos (0) katakan sebelumnya, dalam konteks di mana DIPERLUKAN UNTUK STANDAR, Anda perlu SABUN.

    • Dengan menggunakan praktik terbaik : "aspek verbose" dari implementasi tumpukan W3C , menerjemahkan perjanjian manusia / hukum / yuridis yang relevan.

  • Robustness : keamanan struktur dan header SABUN. Dengan komunikasi metada (dengan ekspresi penuh XML) dan verifikasi Anda memiliki "polis asuransi" terhadap segala perubahan atau kebisingan.
    SOAP memiliki "keandalan transaksional (...) berurusan dengan kegagalan komunikasi. SOAP memiliki lebih banyak kontrol di sekitar coba lagi logika dan dengan demikian dapat memberikan lebih banyak keandalan end-to-end dan jaminan layanan", E. Terman .

Mengurutkan pro berdasarkan popularitas,

  • Alat yang lebih baik (~ 70 suara): SOAP saat ini memiliki keunggulan alat yang lebih baik, sejak 2007 dan masih 2012, karena merupakan standar yang didefinisikan dengan baik dan diterima secara luas. Lihat @MarkCidade (27 suara), @DaveWoldrich (20), @JoshM (13), @TravisHeseman (9).

  • Kepatuhan standars (25 suara): seperti yang saya , @DaveWoldrich (20 suara), @cynicalman (5), @Exitos (0) katakan sebelumnya, dalam konteks di mana DIPERLUKAN UNTUK STANDAR, Anda perlu SABUN.

  • Kekokohan : asuransi header SOAP, @JohnSaunders (8 suara).

Kon

  • Strucuture SOAP lebih kompleks (lebih dari 300 suara): semua jawaban di sini, dan sumber-sumber tentang "SOAP vs REST", menunjukkan beberapa tingkat ketidaksukaan dengan redundansi dan kompleksitas SOAP. Ini adalah konsekuensi alami dari persyaratan untuk verifikasi formal (lihat di bawah), dan untuk ketahanan (lihat di atas). "REST NON-SOAP" (dan XML-RPC, pencetus SOAP ) bisa lebih sederhana dan informal.

  • Pembatasan "hanya XML" adalah hambatan kinerja saat menggunakan layanan kecil (~ 50 suara): lihat json.org/xml dan pertanyaan ini , atau yang lain ini . Poin ini ditunjukkan oleh @toluju (41), dan lainnya.
    PS: JSON bukan standar IETF , tetapi kita dapat mempertimbangkan standar de facto untuk komunitas perangkat lunak web.


Layanan pemodelan dengan SOAP

Sekarang, kita dapat menambahkan SOAP-NON-REST dengan perbandingan NON-SOAP-REST , dan menjelaskan kapan lebih baik menggunakan SOAP :

  • Kebutuhan akan standar dan kontrak yang stabil (lihat bagian "PROS"). PS: lihat tipikal "Kebutuhan B2B untuk standar" yang dijelaskan oleh @saille .

  • Perlu alat (lihat bagian "PROS"). PS: standar , dan keberadaan verifikasi formal (lihat di bawah), adalah masalah penting untuk otomatisasi alat.

  • Pemrosesan berat paralel (lihat bagian "Konteks / Yayasan" di bawah): dengan proses yang lebih besar dan / atau lebih lambat, tidak masalah dengan kompleksitas SOAP yang sedikit lebih banyak, keandalan dan stabilitas adalah investasi terbaik.

  • Butuh keamanan lebih : ketika lebih dari HTTPS diperlukan, dan Anda benar-benar membutuhkan fitur tambahan untuk perlindungan, SOAP adalah pilihan yang lebih baik ( lihat @Bell , 32 suara). "Mengirim pesan di sepanjang jalur yang lebih rumit daripada permintaan / tanggapan atau melalui transportasi yang tidak melibatkan HTTP", S. Seely . XML adalah masalah inti, menawarkan standar untuk Enkripsi XML , Tanda Tangan XML , dan Kanonikalisasi XML , dan, hanya dengan SOAP Anda dapat menanamkan mekanisme ini ke dalam pesan dengan standar yang diterima dengan baik sebagai WS-Security .

  • Perlu lebih banyak fleksibilitas (pembatasan kurang): SOAP tidak perlu korespondensi yang tepat dengan URI; tidak perlu membatasi ke HTTP; tidak perlu membatasi hingga 4 kata kerja. Seperti yang dikatakan @TravisHeseman (9 suara), jika Anda menginginkan sesuatu "fleksibel untuk sejumlah teknologi dan penggunaan klien", gunakan SOAP.
    PS: ingat bahwa XML lebih universal / ekspresif daripada JSON (et al).

  • Perlu verifikasi formal : penting untuk memahami bahwa tumpukan W3C menggunakan metode formal , dan REST lebih informal. Deskripsi layanan WSDL Anda ( bahasa formal ) adalah spesifikasi formal antarmuka layanan web Anda, dan SOAP adalah protokol yang kuat yang menerima semua kemungkinan resep WSDL.

KONTEKS

Historis

Untuk menilai tren diperlukan perspektif historis. Untuk subjek ini, perspektif 10 atau 15 tahun ...

Sebelum standardisasi W3C, ada beberapa anarki. Sulit untuk mengimplementasikan layanan yang dapat dioperasikan dengan kerangka kerja yang berbeda, dan lebih sulit, mahal, dan memakan waktu untuk mengimplementasikan sesuatu yang dapat dioperasikan antar perusahaan. Standar stack W3C telah menjadi cahaya, utara untuk interoperasi set layanan web yang kompleks.

Untuk tugas sehari-hari, seperti mengimplementasikan AJAX, SOAP sangat berat ... Jadi, kebutuhan akan pendekatan sederhana perlu memilih kerangka teori baru ... Dan "pemain perangkat lunak Web" yang besar, seperti Google, Amazon, Yahoo, dkk, memilih alternatif terbaik, yaitu pendekatan REST. Apakah dalam konteks ini bahwa konsep REST tiba sebagai "kerangka bersaing", dan, hari ini (2012), alternatif ini adalah standar de facto untuk programmer.

Yayasan

Dalam konteks Parallel Computing , layanan web menyediakan subtugas paralel; dan protokol, seperti SOAP, memastikan sinkronisasi dan komunikasi yang baik. Bukan "tugas apa pun": layanan web dapat diklasifikasikan sebagai
paralelisme kasar dan memalukan .

Ketika tugas bertambah besar, itu menjadi "debat kompleksitas" yang kurang signifikan, dan menjadi lebih relevan dengan kekuatan komunikasi dan soliditas kontrak.

Peter Krauss
sumber
Saya tidak berpikir ini menambah apa pun. Itu tidak menjawab pertanyaan asli atau tiga pertanyaan di karunia saya: Fitur apa dari masalah membuat SOAP pilihan yang lebih baik? Apa yang membuat SOAP lebih mudah / sulit? Apa yang memungkinkan SABUN untuk Anda lakukan yang tidak dapat Anda lakukan dengan REST?
Sam Hasler
Terima kasih atas peringatannya! ... Yah saya hanya mencoba "2012's UPDATE" (!) Yang merupakan hal utama, karena tidak perlu mengulangi semua argumen tentang "fitur ... SOAP pilihan yang lebih baik ... buat lebih mudah / lebih sulit. .. tidak dapat dilakukan dengan REST ". Anda tidak melihat jawaban yang lain? Saya punya 5 hari lagi, mungkin Anda perlu kesimpulan / ringkasan "untuk melihat tandingan ke @mdhughes jawab", hanya itu? PS: Saya akan menghapus komentar ini setelah diedit.
Peter Krauss
Saya ingin tahu apakah sabun berguna untuk apa pun, atau apakah Anda harus selalu menggunakan istirahat. Jika seseorang memposting alasan yang masuk akal untuk menggunakan SOAP alih-alih REST, saya akan memberikan jawaban itu. Jika seseorang dapat menjelaskan mengapa dan bagaimana REST dapat melakukan segalanya, SABUN, saya akan memberi mereka hadiah. Kalau tidak, saya tidak akan memberikan hadiah untuk jawaban apa pun, dan akan menambahkan komentar pada pertanyaan yang mencatat bahwa saya mengirim hadiah dan jawaban untuk pertanyaan saya tidak diberikan. (Seperti yang saya pikir berguna untuk mengetahui apa yang tidak diketahui.)
Sam Hasler
Bukan itu yang saya inginkan. Dan saya tidak melihat bagaimana WSDL relevan. WSDL dapat menggambarkan layanan web SOAP atau REST, Anda tampaknya bertentangan dengan diri Anda sendiri.
Sam Hasler
Untuk diskusi serupa di "REST vs JSON-RPC" , lihat stackoverflow.com/a/41686155/287948
Peter Krauss
9

Itu bernuansa.

Jika Anda perlu memiliki antarmuka sistem lain dengan layanan Anda, banyak klien akan lebih senang dengan SOAP, karena lapisan "verifikasi" yang Anda miliki dengan kontrak, WSDL, dan standar SOAP.

Untuk sistem sehari-hari yang memanggil sistem, saya pikir SOAP adalah banyak overhead yang tidak perlu ketika panggilan HTML sederhana akan dilakukan.

sinis
sumber
9

Saya melihat hal yang sama, dan saya pikir, mereka adalah alat yang berbeda untuk masalah yang berbeda .

Standar Simple Object Access Protocol (SOAP) bahasa XML yang mendefinisikan arsitektur pesan dan format pesan, digunakan oleh layanan Web yang berisi deskripsi operasi. WSDL adalah bahasa berbasis XML untuk menggambarkan layanan Web dan cara mengaksesnya. akan berjalan pada SMTP, HTTP, FTP, dll. Membutuhkan dukungan middleware, mekanisme yang terdefinisi dengan baik untuk mendefinisikan layanan seperti WSDL + XSD, SOAP Kebijakan WS akan mengembalikan data berbasis XML, SOAP memberikan standar keamanan dan keandalan

Layanan web State Representative Transfer (RESTful). mereka adalah Layanan Web generasi kedua. Layanan web yang tenang, berkomunikasi melalui HTTP daripada layanan berbasis SOAP dan tidak memerlukan pesan XML atau definisi layanan-API WSDL. untuk REST, middleware tidak diperlukan, hanya dukungan HTTP yang diperlukan. StandardADAD, REST dapat mengembalikan XML, teks biasa, JSON, HTML dll.

Lebih mudah bagi banyak jenis klien untuk mengkonsumsi layanan web RESTful sembari memungkinkan sisi server untuk berkembang dan berkembang. Klien dapat memilih untuk mengkonsumsi beberapa atau semua aspek layanan dan menumbuhkannya dengan layanan berbasis web lainnya.

  1. REST menggunakan HTTP standar sehingga sederhana untuk menciptakan klien, mengembangkan API
  2. REST memungkinkan banyak format data yang berbeda seperti XML, teks biasa, JSON, HTML sedangkan SOAP hanya mengizinkan XML.
  3. REST memiliki kinerja dan skalabilitas yang lebih baik.
  4. Istirahat dan bisa di-cache dan SOAP tidak bisa
  5. Penanganan kesalahan bawaan di mana SOAP memiliki Tidak ada penanganan kesalahan
  6. REST adalah PDA yang sangat berguna dan perangkat seluler lainnya.

REST adalah layanan yang mudah diintegrasikan dengan situs web yang ada.

SOAP memiliki seperangkat protokol, yang menyediakan standar untuk keamanan dan keandalan, antara lain, dan beroperasi dengan klien dan server yang sesuai dengan WS lainnya. Layanan Web SOAP (seperti JAX-WS) berguna dalam menangani pemrosesan dan pemanggilan asinkron.

Untuk SOAP API Kompleks akan lebih bermanfaat.

kapil das
sumber
8

REST adalah arsitektur yang ditemukan oleh Roy Fielding dan dijelaskan dalam disertasinya Gaya Arsitektur dan Desain Arsitektur Perangkat Lunak Berbasis Jaringan . Roy juga penulis utama HTTP - protokol yang mendefinisikan transfer dokumen melalui World Wide Web. HTTP adalah protokol yang tenang. Ketika pengembang berbicara tentang "menggunakan layanan Web REST", mungkin lebih akurat untuk mengatakan "menggunakan HTTP."

SOAP adalah protokol berbasis XML yang terowongan di dalam permintaan / respons HTTP, jadi bahkan jika Anda menggunakan SOAP, Anda juga menggunakan REST. Ada beberapa perdebatan tentang apakah SOAP menambahkan fungsionalitas signifikan ke HTTP dasar.

Sebelum membuat layanan Web, saya akan merekomendasikan mempelajari HTTP. Kemungkinannya adalah persyaratan Anda dapat diimplementasikan dengan fungsionalitas yang sudah ditentukan dalam spesifikasi, sehingga protokol lain tidak diperlukan.

Chris Broski
sumber
7

Saya melihat masalah yang sama. Menurut saya REST sebenarnya cepat dan mudah dan bagus untuk panggilan dan respons yang ringan dan bagus untuk debugging (apa yang bisa lebih baik daripada memompa URL ke browser dan melihat responsnya).

Namun di mana REST tampaknya jatuh berkaitan dengan fakta bahwa itu bukan standar (meskipun terdiri dari standar). Sebagian besar perpustakaan pemrograman memiliki cara memeriksa WSDL untuk secara otomatis menghasilkan kode klien yang diperlukan untuk mengkonsumsi layanan berbasis SOAP. Sejauh ini, mengkonsumsi layanan web berbasis REST tampaknya merupakan pendekatan yang lebih adhoc dalam menulis antarmuka agar sesuai dengan panggilan yang dimungkinkan. Membuat permintaan http manual lalu mem-parsing respons. Ini sendiri bisa berbahaya.

Keindahan SOAP adalah bahwa sekali WSDL dikeluarkan maka bisnis 'dapat menyusun logika mereka atau mengatur kontrak perubahan apa pun pada antarmuka akan mengubah wsdl. Tidak ada ruang untuk manouvre. Anda dapat memvalidasi semua permintaan terhadap WSDL itu. Namun karena WSDL tidak menggambarkan layanan REST dengan benar maka Anda tidak memiliki cara yang disepakati untuk menyetujui antarmuka untuk komunikasi.

Dari perspektif bisnis, hal ini tampaknya membuat komunikasi terbuka untuk interpretasi dan perubahan yang tampaknya seperti ide yang buruk.

Top 'Answer' di utas ini tampaknya mengatakan bahwa SOAP singkatan dari Simple Access-oriented Access Protocol, namun melihat wiki O berarti Object tidak Object-oriented. Mereka adalah hal yang berbeda.

Saya tahu posting ini sangat lama tetapi saya pikir saya harus merespons dengan temuan saya sendiri.

Exitos
sumber
6

Ini pertanyaan yang bagus ... Saya tidak ingin menyesatkan Anda, jadi saya terbuka untuk jawaban orang lain sebanyak Anda. Bagi saya, itu benar-benar turun ke biaya overhead dan apa gunanya API. Saya lebih suka mengkonsumsi layanan web saat membuat perangkat lunak klien, namun saya tidak suka bobot SOAP. REST, saya percaya, lebih ringan tetapi saya tidak menikmati bekerja dengan itu dari perspektif klien hampir sebanyak.

Saya ingin tahu apa yang dipikirkan orang lain.

Cranley
sumber
6

Dengarkan podcast ini untuk mencari tahu. Jika Anda ingin tahu jawabannya tanpa mendengarkan, maka OK, REST-nya. Tapi saya sangat merekomendasikan mendengarkan.

Mark Beckwith
sumber
6

Aturan umum saya adalah bahwa jika Anda ingin klien web browser untuk langsung terhubung ke layanan maka Anda mungkin harus menggunakan REST. Jika Anda ingin meneruskan data terstruktur antara layanan back-end kemudian gunakan SOAP.

SOAP bisa sangat menyulitkan untuk diatur kadang-kadang dan sering kali terlalu berat untuk klien web dan pertukaran data server sederhana. Sayangnya, sebagian besar contoh pemrograman sederhana yang saya lihat (dan pelajari) agaknya memperkuat persepsi ini.

Yang mengatakan, SOAP benar-benar bersinar ketika Anda mulai menggabungkan beberapa layanan SOAP bersama sebagai bagian dari proses yang lebih besar yang didorong oleh alur kerja data (pikirkan perangkat lunak perusahaan). Ini adalah sesuatu yang banyak contoh pemrograman SOAP gagal untuk menyampaikan karena operasi SOAP sederhana untuk melakukan sesuatu, seperti mengambil harga saham, umumnya terlalu rumit untuk apa yang dilakukannya dengan sendirinya kecuali disajikan dalam konteks menyediakan mesin API yang dapat dibaca merinci fungsi-fungsi khusus dengan mengatur format data untuk input dan output yang, pada gilirannya, ditulis oleh proses yang lebih besar.

Ini menyedihkan, dalam satu hal, karena ini benar-benar memberi SOAP reputasi buruk karena sulit untuk menunjukkan keuntungan dari SOAP tanpa menghadirkannya dalam konteks penuh tentang bagaimana produk akhir digunakan.

Rick Sarvas
sumber
4

SOAP mewujudkan pendekatan berorientasi layanan ke layanan Web - di mana metode (atau kata kerja) adalah cara utama Anda berinteraksi dengan layanan. REST mengambil pendekatan berorientasi sumber daya di mana objek (atau kata benda) menjadi pusat perhatian.

Vibha Sanskrityayan
sumber
4

Sehubungan dengan "PHP-universe", dukungan PHP untuk SOAP tingkat lanjut sangat menyebalkan. Anda akhirnya akan menggunakan sesuatu seperti http://wso2.com/products/web-services-framework/php/ segera setelah Anda melewati kebutuhan dasar, bahkan untuk mengaktifkan WS-Security atau WS-RM tanpa dukungan inbuilt.

Pembuatan amplop SOAP saya merasa sangat berantakan di PHP, cara itu menciptakan ruang nama, xsd: nil, xsd: anytype dan layanan sabun gaya lama yang menggunakan SOAP Encoding (Tuhan tahu bagaimana itu berbeda) dengan dalam pesan SOAP.

Hindari semua kekacauan ini dengan tetap berpegang pada REST, REST bukanlah hal besar yang telah kita gunakan sejak awal WWW. Kami menyadari hanya ketika kertas http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm ini keluar, ini menunjukkan bagaimana kita dapat menggunakan kemampuan HTTP untuk mengimplementasikan Layanan RESTFul. HTTP secara inheren REST, itu tidak berarti hanya menggunakan HTTP membuat layanan Anda RESTFul.

SOAP mengabaikan kemampuan inti HTTP dan menganggap HTTP hanya sebagai protokol transport, maka itu adalah protokol transport yang independen secara teori (dalam praktiknya bukankah Anda pernah mendengar tentang header Action SOAP? Jika bukan google sekarang!).

Dengan peningkatan adaptasi JSON dan HTML5 dengan pematangan javascript REST dengan JSON telah menjadi cara paling umum untuk berurusan dengan layanan. Skema JSON juga telah didefinisikan dapat digunakan untuk solusi tingkat perusahaan (masih dalam tahap awal) bersama dengan WADL jika diperlukan.

Dukungan PHP untuk REST dan JSON jelas lebih baik daripada dukungan SOAP inbuilt yang dimilikinya.

Menambahkan beberapa kata BUZZ di sini SOA, WOA, ROA

http://blog.dhananjaynene.com/2009/06/rest-soa-woa-or-roa/

http://www.scribd.com/doc/15657444/REST-White-Paper

omong-omong saya sangat suka SOAP terutama untuk spesifikasi WS-Security, ini adalah salah satu spesifikasi yang bagus dan jika seseorang berpikir dalam adaptasi Enterprise JSON pasti perlu datang dengan sesuatu yang serupa untuk JSON, seperti enkripsi level lapangan dll.

shivaspk
sumber
3

Satu titik cepat - protokol transmisi dan orkestrasi;

Saya menggunakan SOAP melalui TCP untuk kecepatan, keandalan, dan alasan keamanan, termasuk mesin yang dirancang untuk layanan mesin (ESB) dan layanan eksternal. Ubah definisi layanan, orkestrasi memunculkan kesalahan dari perubahan WSDL dan segera jelas dan dapat dibangun kembali / digunakan.

Tidak yakin Anda dapat melakukan hal yang sama dengan REST - Saya menunggu diperbaiki atau tentu saja! Dengan REST, ubah definisi layanan - tidak ada yang tahu tentang hal itu sampai mengembalikan 400 (atau apa pun).

BlueChippy
sumber
2

Jika Anda mencari interoperabilitas antara berbagai sistem dan bahasa, saya pasti akan mencari REST. Saya punya banyak masalah ketika mencoba menjalankan SOAP antara .NET dan Java, misalnya.

neu242
sumber
2

saya membuat tolok ukur untuk menemukan mana di antara mereka yang lebih cepat! saya melihat hasil ini:

untuk 1000 permintaan:

  • REST memakan waktu 3 detik
  • SABUN butuh 7 detik

untuk 10.000 permintaan:

  • REST mengambil 33 detik
  • SABUN membutuhkan waktu 69 detik

untuk 1.000.000 permintaan:

  • REST mengambil 62 detik
  • SABUN membutuhkan 114 detik
Sonador
sumber
0

Sebuah pertanyaan lama tapi masih relevan hari ini .... karena banyak pengembang di ruang perusahaan masih menggunakannya.

Pekerjaan saya melibatkan merancang dan mengembangkan solusi IoT (Internet of Things). Yang termasuk mengembangkan kode untuk perangkat tertanam kecil yang berkomunikasi dengan Cloud.

Jelas REST sekarang diterima secara luas dan bermanfaat, dan cukup banyak standar defacto untuk web, bahkan Microsoft memiliki dukungan REST yang disertakan di seluruh Azure. Jika saya perlu mengandalkan SOAP saya tidak bisa melakukan apa yang harus saya lakukan, karena terlalu besar, tebal dan menjengkelkan untuk perangkat tertanam kecil.

REST sederhana dan bersih dan kecil. Menjadikannya ideal untuk perangkat tertanam kecil. Saya selalu berteriak ketika saya bekerja dengan pengembang web yang mengirimi saya WSDL. Karena saya harus memulai kampanye pendidikan tentang mengapa ini tidak akan berhasil dan mengapa mereka harus belajar REST.

Remixed123
sumber
0

1. Dari pengalaman saya. Saya akan mengatakan REST memberi Anda opsi untuk mengakses URL yang sudah dibangun. misalnya-> pencarian kata di google. URL itu dapat digunakan sebagai layanan web untuk REST. Dalam SOAP, Anda dapat membuat layanan web Anda sendiri dan mengaksesnya melalui klien SOAP.

  1. REST mendukung teks, JSON, format XML. Karenanya lebih fleksibel untuk berkomunikasi antara dua aplikasi. Sementara SOAP hanya mendukung format XML untuk komunikasi pesan.
Shalini Baranwal
sumber