Untuk apa SOAP diciptakan?

8

Pertanyaan ini terinspirasi oleh pertanyaan ini . Apa tujuan awal menciptakan SOAP? Mengapa itu ditemukan ketika kami memiliki HTTP dan REST jenis lama?

SiberianGuy
sumber
1
Pertanyaan serupa: programmers.stackexchange.com/questions/111932/…
Gilbert Le Blanc
@ Gilbert - pertanyaan yang menyebutkan itu sudah sebagai inspirasi . Menurut saya, ini lebih filosofis, bukan praktis. Apa yang mengarah pada penemuan, alih-alih, mana yang harus saya pilih.
sdg
2
Mencuci? <G>
Loren Pechtel
2
Seorang konsultan di suatu tempat menggunakan sistem informasi perusahaan yang cepat dan responsif, melihat pendapatan mereka menguap, mereka menciptakan standar dengan overhead yang sangat lambat untuk merekomendasikan kepada manajemen. Ini memiliki XML, kata mereka! XML itu bagus, dan perusahaan! Pengembang permanen tidak berdaya untuk menolak. Sekarang konsultan memiliki aliran pendapatan tanpa henti membuat kinerja tweak pada ESB seperti gletser dan dunia benar lagi.
Terjadi

Jawaban:

8

REST bukan standar, itu adalah arsitektur (didefinisikan secara longgar). Dan itu terkait dengan HTTP, yang dilihat banyak orang di dunia korporat sebagai batasan. Jadi mereka pikir mereka membutuhkan standar umum yang tepat, yang berfungsi di atas lapisan transfer lainnya juga.

Dan btw SOAP didefinisikan sebelum REST (setidaknya menurut Wikipedia :-)

Péter Török
sumber
Banyak hal yang tenang pasti digunakan sebelum SOAP ditemukan, mereka hanya menyebutnya GET dan POST pada umumnya.
Wyatt Barnett
4

SOAP jauh lebih cocok daripada HTTP biasa untuk bertukar struktur data yang kompleks. REST dirancang secara praktis terbatas pada operasi CRUD, sementara SOAP memungkinkan pemanggilan metode sewenang-wenang, yang mungkin merupakan sesuatu yang tidak dapat ditekan ke dalam skema REST.

pengguna281377
sumber
4
REST tidak terbatas pada CRUD, secara praktis atau teoritis. HATEOAS, misalnya, berputar di sekitar interaksi / representasi yang dapat ditemukan - infoq.com/articles/webber-rest-workflow .
FinnNk
1
FinnNK: Masih tidak yakin ... Tentu, Anda bisa membuat apa saja menjadi GET atau PUT, tapi saya tidak yakin itu sangat tenang dalam setiap kasus. Misalnya, bayangkan layanan web yang menerima daftar catatan, menggabungkannya dengan catatan yang ada di database (memasukkan yang baru dan memperbarui catatan yang ada, tetapi tidak menghapus apa pun) dan mengembalikan daftar semua catatan yang tidak up-to-date. Bagaimana cara membuat RESTfull itu?
user281377
Sumber daya REST dapat berupa sumber daya 'pemrosesan' sebanyak sumber daya 'kata benda'. Di sini Anda akan memaparkan beberapa titik akhir yang menerima pembaruan ditambah semacam id - Anda kemudian dapat melakukan kueri menggunakan id itu untuk mendapatkan catatan yang tidak terkini (dan lokasi kueri itu sendiri dapat ditemukan melalui tautan). Itu mengatakan pembaruan batch adalah salah satu skenario klasik untuk SOAP - menggunakan apa pun yang paling cocok adalah pendapat saya.
FinnNk
@ammoQ: Salah satu cara layanan Anda kemungkinan akan dilakukan dengan POST dari daftar catatan. Sebagai imbalannya, Anda dapat, antara lain, memiliki URL untuk MENDAPATKAN yang mencantumkan catatan kedaluwarsa.
sdg
4

Dari Wikipedia :

SOAP, awalnya didefinisikan sebagai Simple Object Access Protocol, adalah spesifikasi protokol untuk bertukar informasi terstruktur dalam implementasi Layanan Web dalam jaringan komputer. ... SOAP memiliki tiga karakteristik utama: Extensibility (keamanan dan WS-routing adalah di antara ekstensi yang sedang dikembangkan), Netralitas (SOAP dapat digunakan pada protokol transportasi apa pun seperti HTTP, SMTP atau bahkan TCP), dan Independence (SOAP memungkinkan untuk model pemrograman apa pun).

SOAP tidak terbatas pada HTTP dan menyediakan keamanan langsung dari kotak.

Jika Anda menggunakan HTTP dan Anda tidak memerlukan keamanan (layanan web Anda terbuka untuk umum), maka Anda tidak perlu SOAP.

Gilbert Le Blanc
sumber
4

Saya tidak di dalam ruangan, tetapi saya biasanya mengatakan SOAP adalah ide yang sangat, sangat bagus dan respon yang sangat masuk akal untuk opsi RPC lain yang ada pada pertengahan hingga akhir 90-an. Seperti CORBA , binatang buas yang aku tidak bisa bilang aku harus berurusan dengan itu secara pribadi, tetapi penyebutan yang hanya bisa membuat pria dewasa mengotori diri mereka sendiri. Pilihan di luar CORBA sebenarnya lebih menakutkan dalam banyak kasus dan ada sedikit standarisasi dan banyak protokol pengiriman pesan yang terjadi. Sistem terintegrasi adalah hal yang sangat, sangat sulit. Ada alasan bagus untuk tidak mengandalkan HTTP sebagai transportasi. Pada akhir 90-an, kecepatan LAN tipikal adalah 10 megabit atau kurang, kecepatan WAN seringkali diukur dalam baud. Seluruh infrastruktur caching tepi yang melakukan begitu banyak untuk REST tidak ada.

Yang membawa kita ke SABUN - yang dengan sendirinya tidak menentukan media transportasi. Saya percaya seseorang berhasil menerapkan panggilan SOAP melalui merpati pos. Atau mungkin burung walet Afrika. Bagaimanapun, itu adalah jauh lebih sederhana untuk menerapkan opsi olahpesan daripada apa yang datang sebelumnya. Dan jika Anda memiliki toolkit SABUN yang layak, itu jauh, lebih mudah dikonsumsi daripada apa pun yang pernah ada sebelumnya. Dan lebih mudah untuk membuat alat. Sangat mudah sehingga mereka pikir mereka perlu memperpanjang protokol. Dan di situlah WS- * masuk. Di situlah roda jatuh dari truk itu. . .

Wyatt Barnett
sumber
+1. Jawaban Anda adalah satu-satunya jawaban yang menghubungkan SOAP dengan sumbernya - komputasi terdistribusi. SOAP tidak banyak tentang HTTP, tetapi tentang Application to Application talk - di mana binatang buas seperti CORBA gagal!
Dipan Mehta
2

SOAP adalah protokol pengiriman pesan, yang dibuat untuk alasan yang sama dengan protokol pengiriman pesan lainnya; untuk membakukan cara informasi objek dilewatkan. Seperti yang dinyatakan oleh halaman Wikipedia , ini berasal dari Microsoft, dan sekarang merupakan standar terbuka yang dikelola oleh W3C.

Pertanyaan yang lebih baik adalah mengapa memilih antara SOAP atau skema XML-flavored atau JSON atau apa pun, dan jawabannya muncul untuk menggunakan apa pun yang paling mudah / paling praktis dalam situasi khusus Anda.

eykanal
sumber
1

Menurut pendapat saya, SOAP adalah pilihan lain di RPC . Coba lihat bagaimana Anda mengekspos WebService hari ini. Satu pihak menandai metode sebagai WebService dan yang lainnya hanya mengambil WSDL dan menggunakan metode jarak jauh seolah-olah mereka lokal. Saya cukup menyadari semua masalah SOAP, tetapi pada tingkat abstraksi SOAP / WS memenuhi janji RPC-nya. Tentu saja Anda dapat membuat API berdasarkan arsitektur REST, tetapi masih membutuhkan pihak lain untuk mengkode beberapa bit yang entah bagaimana menentang definisi RPC.

Jacek Prucia
sumber