pengembangan-web-mp-pd.com

Mengapa orang menggunakan REST daripada SOAP layanan berbasis?

Menghadiri demo menarik pada REST hari ini, saya tidak bisa memikirkan satu alasan pun (tidak ada satu pun yang disajikan) mengapa REST bagaimanapun juga lebih baik atau lebih mudah digunakan dan diimplementasikan daripada setumpuk Layanan berbasis SOAP.

Apa beberapa alasan Mengapa orang di "dunia nyata" menggunakan REST bukannya Layanan berbasis SOAP?

150
AngryHacker

Lebih sedikit overhead (tidak SOAP amplop untuk membungkus setiap panggilan)

Duplikasi lebih sedikit (HTTP sudah mewakili operasi seperti DELETE, PUT, GET, dll. Yang harus dinyatakan dalam amplop SOAP).

Lebih terstandarisasi - Operasi HTTP dipahami dengan baik dan beroperasi secara konsisten. Beberapa SOAP implementasi bisa menjadi rumit.

Lebih dapat dibaca dan diuji manusia (sulit untuk menguji SOAP hanya dengan browser).

Tidak perlu menggunakan XML (yah Anda tidak perlu untuk SOAP juga tapi itu hampir tidak masuk akal karena Anda sudah melakukan penguraian amplop).

Perpustakaan telah membuat SOAP (agak) mudah. ​​Tetapi Anda mengabstraksikan banyak redundansi di bawah seperti yang telah saya catat. Ya dalam teori SOAP dapat digunakan transportasi lain untuk menghindari naik di atas lapisan melakukan hal serupa, tetapi pada kenyataannya hampir semua SOAP pekerjaan yang pernah Anda lakukan adalah melalui HTTP.

RESTful layanan lebih mudah untuk dikonsumsi daripada [~ # ~] sabun [~ # ~] layanan (reguler) berbasis. Alasan untuk ini adalah bahwa REST didasarkan pada permintaan HTTP normal yang memungkinkan niat untuk disimpulkan dari jenis permintaan yang dibuat (GET = retrive, POST = tulis, HAPUS = hapus, dll ...) dan benar-benar tanpa kewarganegaraan.Di sisi lain Anda bisa berpendapat bahwa itu kurang fleksibel karena tidak jauh dengan konsep amplop pesan yang berisi konteks permintaan.

Dalam pengalaman saya SOAP telah dipilih untuk layanan dalam perusahaan dan REST telah dipilih untuk layanan yang diekspos sebagai API publik).

Dengan alat-alat seperti WCF dalam kerangka NET. Sangat sepele untuk mengimplementasikan layanan sebagai REST atau SOAP.

Beberapa bacaan yang relevan:

36
Eric Schoonover

Saya akan berasumsi bahwa ketika Anda mengatakan "layanan web" yang Anda maksud SOAP dan standar WS- *. (Kalau tidak, saya bisa berpendapat bahwa REST layanan are "layanan web".)

Argumen kanonik adalah bahwa REST layanan lebih cocok dengan desain web - yaitu, desain HTTP dan infrastruktur terkait. Dengan demikian, menggunakan layanan REST akan lebih kompatibel dengan alat dan teknik web yang ada.

Tentu saja, begitu Anda menelusuri spesifik, Anda mengetahui bahwa kedua pendekatan memiliki kekuatan dalam skenario yang berbeda. Apakah itu spesifik yang Anda minati?

13
Bruce

Overhead tidak begitu penting sebagai arsitektur yang baik.

REST bukan protokol, melainkan arsitektur yang mendorong desain skalabel yang baik. Ini sering dipilih karena terlalu banyak kebebasan dalam RPC dapat dengan mudah menyebabkan desain yang buruk.

Alasan lainnya adalah biaya protokol RESTful yang dapat diprediksi melalui HTTP karena dapat meningkatkan teknologi yang ada (terutama proxy). Biaya awal RPC cukup rendah tetapi cenderung meningkat secara signifikan dengan intensifikasi beban.

10
Piotr Czapla

Harus membaca Roy Fielding yang paling baik disertasi pada topik. Dia membuat kasus yang sangat bagus dan jelas [~ # ~] jalan [~ # ~] sebelumnya, ketika dia menulisnya (2000).

7
Piko

REST adalah implementasi-agnostik dan jauh lebih transparan, dan ini membuatnya bagus untuk API publik, terutama untuk situs web besar seperti Flickr, Amazon atau Digg yang menggunakan API mereka sebagai alat pemasaran dan benar-benar ingin orang menggunakan data mereka. Mereka tidak ingin memegang 1000 pengembang pemula yang mencoba men-debug bahasa scripting kereta buggy pilihan mereka SOAP perpustakaan.

Versus SOAP dan WSDL, yang lebih baik untuk aplikasi internal, di mana Anda memiliki perpustakaan drop-in dan orang-orang terkenal yang dikenal di kedua ujungnya. (Dan Anda mungkin tidak perlu peduli tentang hal-hal seperti Internet) -cale load-balancing, caching HTTP dll.) Kemudian Anda mendapatkan API yang didokumentasikan sendiri, melestarikan tipe dll. dengan nol kerja.

7
joelhardi

Blog Steve Vinoski dan artikel terakhirnya pasti patut dibaca. Dia adalah mantan guru CORBA, yang mungkin menulis buku terbaik tentang subjek dengan Michi Henning, "Advanced CORBA® Programming with C++" . Namun, sejak itu ia telah melihat kesalahan cara klien/server, dan sekarang bersumpah dengan REST.

6
Jason Etheridge

REST memungkinkan operasi non-mutasi Anda (yang umumnya menggunakan kata kerja GET) menjadi di-cache. Yaitu, di-cache oleh klien dan/atau di-cache oleh proxy. Ini bisa menjadi kemenangan besar!

5
David

REST pada dasarnya hanyalah cara untuk mengimplementasikan layanan web. Ini hanya cara untuk menggunakan HTTP dengan benar untuk menanyakan layanan web yang Anda coba tekan.

http://www.xfront.com/REST-Web-Services.htmlhttp://en.wikipedia.org/wiki/Representational_State_Transfer

3
Eric Holscher

Berikut ini satu poin data: Amazon menawarkan APInya dalam format REST dan SOAP dan 85% penggunaannya adalah REST.

REST lebih mudah diimplementasikan, lebih mudah dipahami dan kinerja lebih tinggi.

0
pbreitenbach

Ini super sederhana dan ramping. Anda bisa melakukannya dengan browser melalui kata kerja http: GET. Saya belum menemukan browser yang dapat secara manual melakukan http generik POST permintaan dengan mudah

0
Ray Lu