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.