Web xidmətləri üçün SOAP və ya REST?

REST web xidmətlərinə və ya SOAP-ə ən yaxşı yanaşma mıdır? Yoxsa fərqli problemlər üçün fərqli vasitələr var? Yoxsa bir incə problemdir, yəni biri arenalarda bir-birindən daha yaxşıdır və s.

Bounty-Edit:

İndi, demək olar ki, üç ildən sonra bu sualları bir daha soruşmaq istərdim - dərin cavab vermək üçün cömertlik təklif edir. Xüsusilə PHP kainatına aid olan bu anlayışlar və onların müasir yüksək keyfiyyətli web tətbiqləri ilə əlaqəli məlumat almaq istərdim.

357
16 сент. user13276 tərəfindən təyin 16 sentyabr 2008-09-16 23:26 '08 at 11:26 pm 2008-09-16 23:26
@ 28 cavab

Hewlett-Packard'da çalıştığımda, orijinal belirtimden kodu oluşturma ve WSDL nesilini de kapsayan ilk SOAP sunucularından birini qurdum. SOAP-ı hər şey üçün istifadə etməyi məsləhət görmürəm.

"SOAP" kısaltması yalan. Bu asan deyil, obyektə yönəldilmir, giriş qaydalarını müəyyən etmir. Bu ehtimal protokoldur. Bu ən pis spesifikasiyadır "Don-box" və bu, "COM" adını verən şəxs kimi real bir feat.

SOAP-da nəqliyyat vasitəsi üçün REST ilə, həmçinin JSON, XML və ya məlumatların təqdim edilməsi üçün düz mətni ilə heç bir şeyin faydası yoxdur. Taşıma təhlükəsizliyi üçün https istifadə edə bilərsiniz. Doğrulama üçün, əsas auth. Oturumlar üçün çerezlər var. REST versiyası daha sadə, daha aydın, sürətli işləmək və daha az bant genişliyi istifadə edəcək.

XML-RPC, sorğu, cavab və səhv protokolları açıq şəkildə müəyyən edir və ən çox dildə yaxşı kitabxana var. Ancaq XML bir çox vəzifə üçün lazım olduğundan daha çətindir.

544
16 сент. Cavab 16 sentyabr mdhughes verilir 2008-09-16 23:59 '08 at 11:59 pm 2008-09-16 23:59

REST bir memarlıq, SOAP bir protokoldur.

Bu ilk problemdir.

SOAP zərflərini REST proqramında göndərə bilərsiniz.

SOAP özü həqiqətən olduqca sadə və sadədir, bunlar çox mürəkkəbdir ki, WSS- * standartlarıdır.

border=0

Müştəriləriniz digər proqram və digər serverlərdirsə, bu gün SOAP protokolu üçün bir çox dəstək var və məlumat hərəkatının əsasları faktiki olaraq müasir IDE'lərdə siçanın bir klikidir.

Müştəriləriniz RIA və ya Ajax müştərilərinin daha çox olma ehtimalı varsa, ehtimal ki, SOAP-dan daha sadə bir şey və müştəri (xüsusilə, JSON) daha çox tanış olmaq lazımdır.

HTTP vasitəsilə göndərilən JSON paketləri mütləq REST arxitekturası deyil, onlar URL-lər üçün sadəcə mesajlardır. Hər şey yaxşı işləyir, amma REST idiom üçün əsas komponentlər var. Ancaq asanlıqla qarışırlar. Ancaq HTTP istəkləri dediyinizdə, mütləq bir REST arxitekturası olduğu anlamına gəlmir. HTTP olmadan REST tətbiqiniz ola bilər (ağıl, bu nadir).

Beləliklə, SOAP ilə "rahat" olan serverlər və istehlakçılar varsa, SOAP və WSS yığını sizə yaxşı xidmət edə bilər. Daha xüsusi tədbirlər edirsinizsə və veb brauzerləri ilə daha yaxşı qarşılıqlı əlaqə qurmaq istəyirsinizsə, daha sonra yüngül HTTP protokolu işə yarayır.

190
16 сент. Will Hartung tərəfindən verilmiş cavab 16 sentyabr 2008-09-16 23:37 '08 at 11:37 pm 2008-09-16 23:37

REST əsasən fərqli bir SOAP paradiqmasıdır. REST-də yaxşı oxu burada tapa bilərsiniz: Mən REST mənim həyat yoldaşı izah kimi .

Bunu oxumaq üçün vaxtınız yoxdursa, burada qısa versiya var: REST, "isimlərə" odaklanan və bu isimlərə müraciət edə biləcəyiniz "fiil" sayını məhdudlaşdıran bir paradiqma kökündən ibarətdir. Yalnız etibarlı fe'llər "getmək", "qoymaq", "poçt" və "silmək" dir. Bu, bir çox fərqli fe'lin bir çox müxtəlif isimlərə (yəni, bir çox fərqli funksiyalara) tətbiq oluna biləcəyi SOAP-dan fərqlənir.

REST üçün, dördüncü fe'llər müvafiq HTTP müraciətləri ilə eşleşir, isimlər isə URL ünvanları ilə müəyyən edilir. Bu, dövlət idarəçiliyinin SOAP-da olduğundan daha şəffaf olduğunu göstərir. Burada dövlətin hansı serverdə olduğunu və müştəri üzərində nə olduğunu dəqiqləşdirmir.

Praktikada, bunun əksəriyyəti aradan qaldırılsa da, REST, sadəcə sadəcə, JSON-da nəticələrə dönən sadə HTTP sorğularına istinad edir, SOAP isə XML göndərməklə ünsiyyət quran daha kompleks bir APIdir. Hər ikisinin də üstünlükləri və mənfi cəhətləri var, amma gördüm ki, mənim təcrübəmdə REST adətən ən yaxşı seçimdir, çünki nadir hallarda SOAP-dan əldə etdiyiniz tam funksiyaya ehtiyac var.

99
16 сент. Cavab 16 sentyabr toluju verilir 2008-09-16 23:42 '08 at 11:42 pm 2008-09-16 23:42

2012-ci il üçün tez bir həll:

REST'in yaxşı çalıştığı alanlar:

  • Məhdud bant genişliyi və resursları. Geri dönüş strukturunun hər hansı formatda etibarlı olduğunu unutmayın (geliştirici müəyyən edilir). Bundan əlavə, hər hansı bir brauzer istifadə oluna bilər, çünki REST yanaşması standart GET, PUT, POST və DELETE əmrləri istifadə edir. Yenə unutmayın ki, REST həmçinin ən çox müasir brauzerlər tərəfindən dəstəklənən XMLHttpRequest obyektini də istifadə edə bilər ki, bu da əlavə bonus AJAX əlavə edir.

  • Tamamilə məhdudiyyətsiz əməliyyatlar. Əməliyyat davam etdirilməlidirsə, REST ən yaxşı yanaşma deyil və SOAP daha uyğun ola bilər. Lakin, CRATE olmaması ilə əməliyyatlara ehtiyacınız varsa (yaradın, oxuyun, yeniləyin və silin), sonra REST.

  • Caching hallar. REST əleyhinə yanaşmanın tamamilə məhdudlaşdırılmasından ötəri məlumatlar önlənə bilərsə, bu idealdır. Bu, əvvəlki üç ildə bir çox həlli əhatə edir.

Niyə SOAP haqqında düşünürəm? Yenə SOAP olduqca yetkin və yaxşı müəyyən edilmiş və tam xüsusiyyətlərə malikdir. REST yanaşması yalnız bir yanaşma və geniş inkişaf üçün açıqdır, buna görə də aşağıdakılar varsa, SOAP böyük bir həlldir:

  • Asynchronous emal və zəng. Ərizənizin zəmanətli səviyyədə etibarlılığı və təhlükəsizliyinə ehtiyacı varsa, SOAP 1.2 bu əməliyyatın dəstəklənməsi üçün əlavə standartlar təklif edir. WSRM kimi şeylər WS-etibarlı Mesajlaşma.

  • Formal müqavilələr. Hər iki tərəf (tədarükçü və istehlakçı) mübadilə formatında razılaşmalı olduqda, SOAP 1.2 bu cür qarşılıqlı əlaqə üçün ciddi spesifikasiyalar verir.

  • Dövlət İfadə Əməliyyatları. . Ərizə kontekstual məlumat və dialoq dövlət idarəçiliyinə ehtiyac duyarsa, SOAP 1.2 bu işlərə (təhlükəsizlik, əməliyyatlar, koordinasiya və s.) Dəstək olmaq üçün WS * strukturunda əlavə bir təsvirə malikdir. Müqayisəli olaraq, REST yanaşması inkişafçıları bu adi santexnika qurmağa məcbur edəcəkdir.

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

56
24 дек. Cavab PmanAce tərəfindən verilir 24 dekabr. 2012-12-24 06:08 '12 at 6:08 2012-12-24 06:08

SOAP hazırda xidmət səviyyəsinə görə bir çox şablon kodunun yaradılacağı və hər hansı bir WSDL-dən müştərilərin yaranması üçün daha yaxşı alətlərdə üstünlük əldə edir.

REST sadədir, nəticədə qorumaq daha asandır, veb-arxitekturasının əsasında, daha yaxşı protokol görünürlüğünü təmin edir və təsdiqlənmişdir ki, WWW-nin özü üçün ölçülüdür. Bəzi çərçivələr Ruby on Rails kimi REST xidmətlərini yaratmağa kömək edir, ADO.NET Data Services kimi müştərilərə yazmağa kömək edir. Lakin əksər hallarda heç bir vasitə dəstəyi yoxdur.

45
16 сент. Mark Cidade tərəfindən 16 sentyabrda verilən cavab 2008-09-16 23:36 '08 at 11:36 pm 2008-09-16 23:36

SOAP, alətlər baxımından faydalıdır, çünki WSDL vasitələrlə asanlıqla tükənir. Bu yolla, sizin üçün yaradılmış Web xidməti müştərilərini sevdiyiniz dildə əldə edə bilərsiniz.

REST AJAX veb səhifələrində böyük işləyir. İstekleriniz basitse, javascriptinizden birbaşa iş zəngləri yapabilirsiniz ve bu çox rahatdır. XML cavabında hər hansı bir addan uzaqlaşmağa çalışın, brauzerləri onlara boğduğunu gördüm. Beləliklə, xsi: növü, ehtimal ki, sizin üçün işləməyəcək, çox mürəkkəb XML sxemləri.

REST də daha yaxşı bir performansa sahibdir. REST cədvəlləri yaratan bir prosessor üçün tələblər, ümumiyyətlə, SOAP strukturları tərəfindən göstərilənlərdən aşağıdır. Əgər, server yaratdığınız ördəkləriniz varsa, serverin üzərinə qurulmuş, XML-i səmərəli şəkildə müştərinə ötürə bilərsiniz. Belə ki, bir verilənlər bazası imlecinin xətlərini oxuduğunuzu təsəvvür edin. Bir simli oxuduğunuzda, bunu bir XML elementi olaraq formatlaşdırırsınız və onu birbaşa xidmət istifadəçisinə yazırsınız. Beləliklə, XML çıxışınızı yazmağa başlamazdan əvvəl yaddaşda bütün verilənlər bazası satırlarını yığmaq lazım deyil - eyni zamanda oxumaq və yazmaq. REST üçün işləmək üçün axın üçün yeni mühərrik nümunələrini və ya XSLT-ləri araşdırın.

Digər tərəfdən SOAP, alətlər tərəfindən böyük bir blob kimi yaradılan xidmətləri yaratmağı planlaşdırır və yalnız sonra qeyd olunacaq. Bu, mütləq bir həqiqət deyil, ağılsanız, SOAPdan axının xüsusiyyətlərini əldə etmək yolları var, məsələn, faylları istifadə edin.

Mənim qərar vermə prosesi belədir: mənim xidmətimin istehlakçılar tərəfindən asanlıqla istifadəsini istəyirsən və yazdığım mesajlar kiçikdən kiçik olacaqdır (10 MB və ya daha az) və mən serverdə bəzi əlavə prosessor dövrünün yandırılmasına fikir vermirəm. SOAP ilə gedirəm. AJAX-a veb-brauzerlərdə xidmət etməliyəmsə və ya bir şey köçürməliyəmsə və ya cavablarım böyükdürsə, mən REST-ə gedəcəyəm.

Nəhayət, WS-Security kimi SOAP ətrafında yaradılmış bir çox standartlar var və doğru vasitələrdən istifadə edərsiniz ki, İnternetə qoşulmaq imkanı verə bilərlər. Bu material həqiqətən vacibdir və bəzi tüylü tələblərə cavab verməyə kömək edə bilər.

40
16 сент. Cavab 16 sentyabrda Dave Woldrich tərəfindən verilir . 2008-09-16 23:50 '08 at 11:50 pm 2008-09-16 23:50

Bilirəm ki, bu köhnə bir məsələdir, amma cavabımı dərc etməliyəm - bəlkə kimsə faydalı ola bilər. Neçə nəfərin SOAP üzərində REST təklif etməsinə inanmıram. Mən yalnız bu insanları inkişaf etdirməyənlər və ya heç bir əsaslı ölçülü REST xidmətini tətbiq etməmişəm. Bir REST xidmətinin həyata keçirilməsi SOAP xidmətini tətbiq etməkdən daha çox LOT alır. Və sonunda, bu da çox pis. SOAP-ın vaxtının 99% -ni seçəcəyəm.

1) REST xidmətinin həyata keçirilməsi bir SOAP xidmətinin həyata keçirilməsindən daha çox vaxt alır. Tools WSDL-də oxumaq və proksi sinifləri və müştərilərini çıxarmağa dair bütün müasir dil / çərçivələr / platformalar üçün mövcuddur. REST xidmətinin həyata keçirilməsi əl ilə aparılır və əldə etmək - sənədləri oxuyaraq. Bundan əlavə, bu iki xidmətləri həyata keçirərkən, heç bir real sxem və ya istinad sənəd olmadığı üçün boru vasitəsilə qaytarılacaqlar haqqında "təxmin etməliyik".

2) Niyə hər hansı bir XML-ni qaytarır bir REST xidmət yazmaq? Tək fərq, REST ilə hər bir elementin / atributun təmsil etdiyinin növlərini bilmirsiniz, onu həyata keçirmək üçün tək qalırsınız və ümid edirəm ki, simli bir gün sizinlə bir sahədə görüşməyəcəkdir fikir həmişə bir int olmuşdur. SOAP, WSDL istifadə edərək məlumat strukturunu müəyyənləşdirir, buna görə problem yoxdur.

3) SOAP proqramı ilə bir SOAP zərfində "üstündə" olduğunuz bir şikayət eşitdim. Bu gün və yaşda, həqiqətən bir neçə baytdan narahat olmaq lazımdırmı?

4) REST ilə URL-i brauzerinizə sadəcə yerləşdirə və məlumatları görmək olar. Əlbəttə ki, REST xidmətiniz sadə və ya heç bir identifikasiyası yoxdursa. Məsələn, Netflix OAuth-dan istifadə edir ki, bu da bir sorğu göndərə bilmək üçün şeylər imzalamalı və kodları tələb etməlidir.

5) Nə üçün hər bir resurs üçün "oxunaqlı" bir URL lazımdır? Bir xidmətin həyata keçirilməsi üçün bir vasitə istifadə etsək, həqiqətən, faktiki URL-yə diqqət yetiririkmi?

Davam etməliyəmmi?

28
24 июля '10 в 0:19 2010-07-24 00:19 Cavab 24 iyul 2010-cu il tarixində, 0:19 2010-07-24 00:19 Josh M. tərəfindən verilmişdir

Yazdığım tətbiqlərin əksəriyyəti WinForms və ya WPF-də server C # və ya Java və ya masa üstü proqramlarıdır. Bu tətbiqlər adətən REST təmin edə biləndən daha zəngin bir xidmətə ehtiyac duyur. Bundan əlavə, web xidmət müştəri yaratmaqdan bir neçə dəqiqədən çox vaxt sərf etmək istəmirəm. WSDL müştəri nəsil alətləri mənim müştəri həyata keçirmək və iş dəyəri əlavə etmək üçün getmək üçün imkan verir.

İndi, web xidmətini bəzi javascript ajax zəngləri üçün açıq şəkildə yazıramsa, ehtimalla REST-də olacaq; yalnız müştərinin texnologiyasını bilmək və JSON istifadə etmək naminə. Mənim fikrimcə, javascriptdən istifadə edilən web xidmətlərinin API'ları, ehtimal ki, çox mürəkkəb olmamalıdır, çünki bu cür mürəkkəblik server tərəfində daha yaxşı işlənmiş görünür.

Bununla birlikdə javascript üçün bəzi SOAP müştəriləri var; JQuery'nin bir tanış olduğunu bilirəm. Beləliklə, SOAP javascriptdən istifadə edilə bilər ; JSON dizələrini döndürən bir REST xidməti kimi yaxşı deyil. Buna görə, bir web xidmətinə sahib olsam, kefi bir sıra müştəri texnologiyaları və tətbiqləri üçün çevik olmaq üçün kifayət qədər kompleks olmaq istərdim, SOAP ilə gedərdim.

19
22 сент. Travis Heseman tərəfindən verilmiş cavab 22 sentyabr 2009-09-22 18:36 '09 da saat 18:36 'də, 2009-09-22 18:36

İlk olaraq REST'i çalıştırmanı tavsiye ederim - JAX-RS ve Jersey'i görüntülemek üçün Java kullanıyorsanız. REST çox daha asan və bir çox dildə asanlıqla əlaqə saxlayır.

Digər istifadəçilər bu axında dedilər ki, SOAP ilə bağlı problem WSDL, XSD, SOAP, WS-Addressing və s. Yanlış hissələrinə daxil olsanız, digər WS- * spesifikasiyalarının görünüşü və çoxsaylı əməkdaşlıq problemləri ilə bağlıdır.

REST v SOAP müzakirəsini qiymətləndirmək üçün ən yaxşı yoldur - İnternet məkanında, google, amazon, ebay, twitter və başqalarından - demək olar ki, bütün böyük oyunçulara baxmaq - onların SOAP proqramı üzərində RESTful API istifadə etməyi və üstünlük təşkil etməyi nəzərdə tutur.

REST ilə işləmək üçün başqa bir gözəl yanaşma, veb tətbiqi ilə REST interfeysi arasında bir çox kod və infrastrukturu yenidən istifadə edə bilərsiniz. məsələn, resurslarınızı JSON ilə müqayisədə HTML və XML vermək, adətən JAX-RS və örtük nümayəndəliklər kimi çərçivələrdə və veb brauzeri istifadə edərək RESTful resurslarla işləməyin sadəliyində olduqca sadədir.

17
17 сент. Cavab 17 sentyabrda James Strachan tərəfindən verilir . 2008-09-17 14:18 '08 at 2:18 pm 2008-09-17 14:18

Mən əminəm ki, Don Box SOAP-ı "zarafat" kimi yaradıb - "İnternetin RPC üsullarını necə araşdıracağınıza baxın", və bu gün o, veb standartlarının necə qorxulu olduğunu necə başa düşdüyünə görə ürkmüşdür: -)

REST yaxşı, sadə, hər yerdə tətbiq olunur (standartlardan daha çox "standart") tez və sadəcə. REST istifadə edin.

16
16 сент. Cavab 16 sentyabr, gbjbaanb tərəfindən verilir 2008-09-16 23:54 '08 at 11:54 pm 2008-09-16 23:54

Hər ikisinin də yeri var. Mənim fikrimcə:

SOAP - mühüm sistemlər və əsas səviyyəli web / web xidmət sistemi arasında inteqrasiya üçün ən yaxşı seçim, burada WS- * mənalıdır (təhlükəsizlik, siyasət və s.),

RESTful : təbəqənin yuxarı hissəsindəki açıq API ilə web saytları arasında inteqrasiya üçün ən yaxşı seçimdir (VIEW, yəni URI çağırışlarını qəbul edən javascripts).

15
21 нояб. Cavab verildi irobson Nov 21 2011-11-21 18:57 '11 at 18:57 2011-11-21 18:57

Qeyd edilməmiş bir şey SOAP zərfinin başlıqları və bədən hissələrindən ibarət olmasıdır. Bu, qrupdan kənar məlumatların göndərilməsi və alınması üçün tam XML ifadəsini istifadə etməyə imkan verir. REST, bildiyiniz qədər HTTP başlıqlarına və nəticə kodlarına məhdudlaşdırır.

(otoh, REST çerezlərindən kənar məlumatlardan "başlıq" göndərmək üçün istifadə edə bilərsiniz?)

13
19 авг. John Saunders tərəfindən verilmiş cavab 19 Avqust 2009-08-19 12:51 '09 da 12:51 'da 2009-08-19 12:51

2012-ci ildə qeyd olunan bir sualın cavablandırılması (ikinci sual) və bu günün nəticələrini (digər cavablar) nəzərdən keçirin.


SOAP Pros və Cons

SOAP 1.2 haqqında, "REST" ilə müqayisə edərkən üstünlükləri və mənfi cəhətləri ... 2007-ci ildən bəri, WSDL istifadə edərək REST web xidmətlərini təsvir edə bilərsiniz və SOAP protokolunu istifadə edirlər ... Yəni bir az daha çox işləsəniz, bütün standartlar W3C web xidmət protokol yığınında REST ola bilər !

Bu yaxşı bir başlanğıc nöqtəsidir, çünki biz bütün fəlsəfi və metodoloji müzakirələrin müvəqqəti olaraq aradan qaldırıldığı bir ssenari təsəvvür edə bilərik. Biz "SOAP-REST" xidmətini "NON-SOAP-REST" ilə oxşar xidmətləri müqayisə edə bilərik,

  • SOAP-REST (= "REST-SOAP"): L.Mandel tərəfindən göstərildiyi kimi, WSDL2 REST web xidmətini təsvir edə bilər və XML nümunəsinin SOAP-da saxlandığını varsayarsak, bütün tətbiq "SOAP-REST" olacaqdır.

  • NON-SOAP-REST : SOAP oluna bilməyən hər hansı bir REST web xidməti ... Yəni, tanış REST nümunələrinin "90%". Bəziləri XML istifadə etmir (məsələn, tipik AJAX REST JSON istifadə edir), bəziləri digər XML strukturlarını istifadə edir, SOAP başlıqları və qaydaları olmadan. PS: qeydiyyatdan keçməmək üçün REST səviyyəsini 2 müqayisə edə bilərik.

Əlbəttə, daha konseptual olaraq müqayisə etmək üçün, "NON-REST-SOAP" ı "NON-SOAP-REST" ilə müqayisə edin, modelləşdirməyə müxtəlif yanaşmalar kimi. Beləliklə, bu web xidmətlərinin taksonomisini başa çatdırmaq üçün:

  • NON-REST-SOAP : REST ola bilməyən hər hansı bir SOAP veb xidməti ... Yəni tanıdılmış SOAP nümunələrinin "90%".

  • NON-REST-NEITHER-SOAP : Bəli, "web services modeling" kainatında başqa şeylər (məsələn, XML-RPC ) daxildir.

REST altında SOAP

Nədir-SOAP-REST ilə SOAP-REST müqayisə şeyi müqayisə.

PROFI

Bəzi şərtləri izah edin

  • Müqavilənin sabitliyi: müqavilənin bütün növləri üçün ("yazılı razılaşmalar" kimi)

    • Standartları istifadə edərkən: W3C yığının bütün səviyyələri bir-birinə uyğun gəlir. Digər tərəfdən REST, W3C və ya ISO standartı deyil və normallaşdırılmış xidmət periferik məlumatlarına malik deyil. Daha əvvəl, qeyd etdiyim @DaveWoldrich (20 səs), @cynicalman (5), @Exitos (0), STANDARTLAR İSTƏYƏNLƏŞDİRİLƏN bir kontekstdə olduğu kimi, SOAP lazımdır.

    • Ən yaxşı təcrübələrdən istifadə etməklə: W3C yığın tətbiqlərinin "ətraflı aspekti" müvafiq hüquqi / hüquqi / hüquqi müqavilələri çevirir.

  • Etibarlılıq: SOAP quruluşunun və başlıqlarının təhlükəsizliyi. Metadata rabitəsi (tam XML ifadəliyi ilə) və yoxlama ilə hər hansı bir dəyişiklik və səs-küyə qarşı "sığorta polisi" var. SOAP "əməliyyatın etibarlılığı" (...) ilə əlaqəli uğursuzluqlarla bağlıdır. SOAP təkrarlama məntiqini nəzarət etmək üçün daha çox imkanlara malikdir və beləliklə, əlavə etibarlılıq və texniki təminatın əlavə son təminatını təmin edə bilər ". E. Termana

Populyarlıqla sıralanma prosesini,

  • Üstün Vasitələr (~ 70 səs): SOAP hazırda 2007-ci ildən 2012-ci ilə qədər ən yaxşı alətlərin üstünlüyünə malikdir, çünki bu, yaxşı və geniş şəkildə qəbul edilmiş standartdır. @MarkCidade (27 səs), @DaveWoldrich (20), @JoshM (13), @TravisHeseman (9) baxın.

  • Standartlara uyğunluq (25 səs): I , @DaveWoldrich (20 səs), @cynicalman (5), əvvəllər qeyd olunan @Exitos (0), STANDARTLAR İSTƏYƏNLƏŞMƏSİNƏ lazım olan kontekstdə, SOAP lazımdır.

  • Надежность : страхование заголовков SOAP, @JohnSaunders (8 голосов).

CONS

  • Структура SOAP более сложна (более 300 голосов): все ответы здесь и источники о SOAP vs REST проявляют некоторую степень неприязни к избыточности и сложности SOAP. Это является естественным следствием требований к формальной проверке (см. Ниже) и надежности (см. Выше). "REST NON-SOAP" (и XML-RPC, создатель SOAP ) может быть более простым и неформальным.

  • Ограничение "только XML" - это препятствие производительности при использовании крошечных сервисов (~ 50 голосов): см. json.org/xml и этот вопрос , или этот другой . Этот момент проявляется @toluju (41) и другими.
    PS: as JSON не является стандартом IETF , но мы можем рассмотреть стандарт де-факто для сообщества веб-разработчиков.


Моделирование сервисов с помощью SOAP

Теперь мы можем добавить SOAP-NON-REST с сравнениями NON-SOAP-REST и объяснить , когда лучше использовать SOAP :

  • Необходимость стандартов и стабильных контрактов (см. раздел "PROS" ). PS: см. типичную "потребность в B2B для стандартов" , описанную @saille .

  • Необходимость в инструментах (см. раздел "PROS" ). PS: стандарты и наличие формальных проверок (см. Ниже) являются важными проблемами для автоматизации инструментов.

  • Параллельная интенсивная обработка (см. ниже раздел "Контекст/Основы" ): с большими и/или медленными процессами, независимо от сложности SOAP, надежность и стабильность - лучшие инвестиции.

  • Требуется дополнительная защита: если требуется больше HTTPS, и вам действительно нужны дополнительные функции для защиты, SOAP - лучший выбор ( см. @Bell , 32 голоса). "Отправка сообщения по пути, более сложному, чем запрос/ответ или транспорт, который не связан с HTTP ", S. Сили . XML является основной проблемой, предлагая стандарты для шифрования XML, подписи XML и канонизации XML, и только с помощью SOAP вы можете внедрить эти механизмы в сообщение по хорошо принятому стандарту WS-Security.

  • Требуется больше гибкости (меньше ограничений): SOAP не нуждается в точном соответствии с URI; not nedd ограничивает HTTP; не нужно ограничивать до 4 глаголов. Как говорит @TravisHeseman (9 голосов), если вы хотите что-то "гибкое для произвольного количества клиентских технологий и использования", используйте SOAP. PS: помните, что XML более универсален/выразителен, чем JSON (и др.).

  • Необходимость официальных проверок : важно понимать, что стек W3C использует формальные методы , а REST более неформальный. Ваш официальный документ WSDL ( ) описывает описание формальная спецификация ваших интерфейсов веб-сервисов, а SOAP - надежный протокол, который принимает все возможные предписания WSDL.

КОНТЕКСТ

Исторический

Для оценки тенденций необходима историческая перспектива. Для этого предмета перспектива 10 или 15 лет...

До стандартизации W3C существует некоторая анархия. Было сложно реализовать совместимые сервисы с различными структурами, а также более сложные, дорогостоящие и трудоемкие для реализации чего-то совместимого между компаниями. Стандарты стека W3C были легкими, севернее для взаимодействия наборов сложных веб-сервисов.

Для повседневных задач, таких как реализация AJAX, SOAP тяжелый... Итак, необходимость простых подходов должна избрать новую теорию-структуру... И большие "игроки веб-программного обеспечения", как Google, Amazon, Yahoo и др., Выбрали лучшую альтернативу, то есть подход REST. В этом контексте концепция REST появилась как "конкурирующая структура", и сегодня (2012 год) эта альтернатива - это de facto standard для программисты.

Əsaslar

В контексте параллельных вычислений веб-службы предоставляют параллельные подзадачи; и протоколы, такие как SOAP, обеспечивают хорошую синхронизацию и связь. Не "любая задача": веб-сервисы можно классифицировать как грубый и неудобный parallelism .

По мере того как задача становится больше, она становится менее значимой "дискуссией по сложности" и становится более актуальной в отношении надежности сообщения и прочности контрактов.

10
ответ дан Peter Krauss 19 дек. '12 в 15:38 2012-12-19 15:38

Не забывайте об XML-RPC. Если вы только после легкого решения, то многое нужно сказать о протоколе, который может быть определен на нескольких страницах текста и реализован в минимальном количестве кода. XML-RPC существует уже много лет, но некоторое время выходит из моды - но минималистичное обращение, похоже, дает ему нечто вроде возрождения в последнее время.

9
ответ дан Cruachan 16 сент. '08 в 23:34 2008-09-16 23:34

Он нюансирован.

Если вам нужно иметь другие системные интерфейсы с вашими услугами, чем много клиентов будет более счастливым с SOAP, из-за уровней "проверки", которые у вас есть с контрактами, WSDL и стандартом SOAP.

Для ежедневных системных вызовов в системах я думаю, что SOAP - это много лишних накладных расходов, когда будет выполняться простой вызов HTML.

9
ответ дан cynicalman 16 сент. '08 в 23:28 2008-09-16 23:28

Я смотрю на то же самое, и я думаю, это разные инструменты для различных задач .

Стандартный протокол доступа к объектам (SOAP), язык XML, определяющий архитектуру сообщений и форматы сообщений, используется веб-службами, содержащими описание операций. WSDL - это язык, основанный на XML, для описания веб-сервисов и способов доступа к ним. будет работать на SMTP, HTTP, FTP и т.д. Требуется поддержка промежуточного программного обеспечения, четко определенный механизм для определения сервисов, таких как WSDL + XSD, WS-Policy SOAP вернет данные на основе XML. SOAP обеспечивает стандарты безопасности и надежности

Веб-службы репрезентативного переноса состояния (RESTful). это веб-службы второго поколения. Веб-службы RESTful, обмениваются данными через HTTP, чем службы на основе SOAP, и не требуют XML-сообщений или определений WSDL-сервиса-API. для REST не требуется промежуточное ПО, требуется только поддержка HTTP. Стандарт WADL, REST может возвращать XML, обычный текст, JSON, HTML и т.д.

Клиентам разных типов проще использовать веб-службы RESTful, позволяя серверной стороне развиваться и масштабироваться. Клиенты могут выбирать некоторые или все аспекты обслуживания и перетаскивать их с помощью других веб-сервисов.

  • REST использует стандартный HTTP, поэтому он упрощает создание клиентов, разрабатывая API.
  • REST позволяет использовать много разных форматов данных, таких как XML, обычный текст, JSON, HTML, где SOAP разрешает только XML.
  • REST имеет лучшую производительность и масштабируемость.
  • Отдых и может быть кэширован, а SOAP не может
  • Встроенная обработка ошибок, в которой SOAP отсутствует Обработка ошибок
  • REST - особенно полезный КПК и другие мобильные устройства.

REST - это услуги, которые легко интегрировать с существующими веб-сайтами.

SOAP имеет множество протоколов, которые, помимо прочего, обеспечивают стандарты безопасности и надежности и взаимодействуют с другими клиентами и серверами, соответствующими WS. Веб-службы SOAP (такие как JAX-WS) полезны при обработке асинхронной обработки и вызова.

Для сложного API SOAP будет более полезным.

8
ответ дан kapil das 19 окт. '13 в 10:04 2013-10-19 10:04

REST - это архитектура, изобретенная Роем Филдингом и описанная в его диссертации Архитектурные стили и дизайн сетевых архитектурных решений . Рой также является основным автором HTTP - протокола, который определяет передачу документа по Всемирной паутине. HTTP - протокол RESTful. Когда разработчики говорят о "использовании веб-служб REST", вероятно, более точно сказать "использование HTTP".

SOAP - это протокол на основе XML, который туннелирует внутри HTTP-запроса/ответа, поэтому, даже если вы используете SOAP, вы также используете REST. Существует некоторая дискуссия о том, добавляет ли SOAP какие-либо существенные функциональные возможности для базового HTTP.

Прежде чем создавать веб-службу, я бы рекомендовал изучить HTTP. Коэффициенты - ваши требования могут быть реализованы с функциональностью, уже определенной в спецификации, поэтому другие протоколы не понадобятся.

8
ответ дан Chris Broski 17 авг. '11 в 2:03 2011-08-17 02:03

Я рассматриваю ту же проблему. Мне кажется, что на самом деле REST является быстрым и легким и хорошим для легких вызовов и @ и отлично подходит для отладки (что может быть лучше, чем перекачка URL-адреса в браузер и просмотр ответа).

Однако, когда REST, похоже, падает, это связано с тем, что он не является стандартом (хотя он и состоит из стандартов). Большинство библиотек программирования имеют способ проверки WSDL, чтобы автоматически генерировать код клиента, необходимый для использования служб на основе SOAP. До сих пор использование веб-сервисов, основанных на REST, кажется более суровым подходом к написанию интерфейса для соответствия возможным вызовам. Выполнение ручного HTTP-запроса, а затем анализ ответа. Это само по себе может быть опасным.

Красота SOAP заключается в том, что после выпуска WSDL бизнес может структурировать свою логику aorund, которая устанавливает контракт на любое изменение интерфейса, изменит wsdl. Там нет комнаты для манувра. Вы можете проверить все запросы против этого WSDL. Однако, поскольку WSDL неправильно описывает услугу REST, у вас нет определенного способа согласования интерфейса для связи.

С точки зрения бизнеса это, похоже, оставляет сообщение открытым для интерпретации и изменений, которые кажутся плохими.

Верхний "ответ" в этом потоке, похоже, говорит о том, что SOAP означает Simple Object-oriented Access Protocol, однако, глядя на wiki, O означает Object not Object-oriented. Это разные вещи.

Я знаю, что этот пост очень старый, но я думал, что должен ответить своими собственными выводами.

7
ответ дан Exitos 17 июня '11 в 20:16 2011-06-17 20:16

Прослушайте этот подкаст , чтобы узнать. Если вы хотите узнать ответ без прослушивания, то ОК, его ОТДЫХ. Но я действительно рекомендую слушать.

6
ответ дан Mark Beckwith 20 дек. '08 в 22:58 2008-12-20 22:58

Это хороший вопрос... Я не хочу сбивать тебя с пути, поэтому я открыт для других людей так же, как и ты. Для меня это действительно сводится к издержкам накладных расходов и использованию API. Я предпочитаю использовать веб-службы при создании клиентского программного обеспечения, однако мне не нравится вес SOAP. REST, я считаю, имеет меньший вес, но мне не нравится работать с ним с точки зрения клиента почти так же.

Мне любопытно, что думают другие.

6
ответ дан cranley 16 сент. '08 в 23:29 2008-09-16 23:29

Мое общее правило заключается в том, что если вы хотите, чтобы веб-клиент браузера напрямую подключался к службе, вам следует, вероятно, использовать REST. Если вы хотите передать структурированные данные между фоновыми службами, используйте SOAP.

SOAP может быть реальной болью для настройки иногда и часто переполняется для простых обменов веб-клиентов и серверов. К сожалению, большинство простых примеров программирования, которые я видел (и учил), несколько усиливают это восприятие.

Тем не менее, SOAP действительно сияет, когда вы начинаете комбинировать несколько SOAP-сервисов вместе как часть более крупного процесса, управляемого рабочим процессом данных (подумайте о корпоративном программном обеспечении). Это то, что многие из примеров программирования SOAP не могут передать, потому что простая операция SOAP, чтобы что-то сделать, например, выбор цены акции, как правило, сложна для того, что она делает сама по себе, если она не представлена ​​в контексте предоставления машины читаемый API, описывающий конкретные функции с установленными форматами данных для входов и выходов, которые, в свою очередь, обрабатываются более крупным процессом.

Это печально, так как это действительно дает SOAP плохую репутацию, потому что трудно показать преимущества SOAP, не представляя его в полном контексте того, как используется конечный продукт.

6
ответ дан Rick Sarvas 15 мая '13 в 18:33 2013-05-15 18:33

SOAP воплощает сервисно-ориентированный подход к веб-сервисам - тот, в котором методы (или глаголы) являются основным способом взаимодействия с сервисом. REST использует ресурсо-ориентированный подход, в котором объект (или существительное) занимает центральное место.

4
ответ дан Vibha Sanskrityayan 07 янв. '13 в 10:00 2013-01-07 10:00

В смысле с поддержкой PHP-юниверса PHP для любого продвинутого SOAP затягивает большое время. В результате вы получите что-то вроде http://wso2.com/products/web-services-framework/php/ , как только вы перейдете основные потребности, даже если WS-Security или WS-RM не встроены поддержка.

Создание конверта SOAP. Я чувствую, что PHP очень запутан, как он создает пространства имен, xsd: nil, xsd: anytype и старые стильные сервисы, которые используют SOAP-кодирование (Бог знает, как это отличается) в сообщениях SOAP.

Избегайте всего этого беспорядка, придерживаясь REST, REST - это не что-то большое, что мы использовали с самого начала WWW. Мы поняли, что только когда этот документ http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm вышел, он показывает, как мы можем использовать возможности HTTP для реализации служб RESTFul. HTTP по сути является REST, что не означает, что просто использование HTTP делает ваши сервисы RESTFul.

SOAP игнорирует основные возможности HTTP и рассматривает HTTP так же, как транспортный протокол, следовательно, он является независимым от транспортного протокола в теории (на практике это не так, вы слышали о заголовке SOAP Action, если не google сейчас!).

С повышением адаптации JSON и HTML5 с javascript созревание REST с JSON стало наиболее распространенным способом работы с сервисами. Также была определена схема JSON, которая может быть использована для решения на уровне предприятия (все еще на ранних стадиях) вместе с WADL, если это необходимо.

Поддержка PHP для REST и JSON определенно лучше, чем существующая встроенная поддержка SOAP.

Добавление нескольких слов BUZZ здесь SOA, WOA, ROA

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

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

Кстати, я действительно люблю SOAP, особенно для спецификации WS-Security, это одна хорошая спецификация, и если кто-то, думая в адаптации Enterprise JSON, определенно должен прийти с чем-то похожим на JSON, например, на шифрование на уровне поля и т.д.

4
ответ дан shivaspk 26 февр. '13 в 20:03 2013-02-26 20:03

Один быстрый протокол передачи и оркестровка;

Я использую SOAP over TCP для обеспечения скорости, надежности и безопасности, в том числе для аппаратных служб (ESB) и внешних служб. Измените определение службы, оркестровка вызывает ошибку из-за изменения WSDL и сразу же становится очевидной и может быть восстановлена ​​/развернута.

Не уверен, что вы можете сделать то же самое с REST - я жду исправления или курса! С помощью REST измените определение сервиса - ничего не известно об этом, пока он не вернет 400 (или что-то еще).

3
ответ дан BlueChippy 12 нояб. '13 в 14:55 2013-11-12 14:55

Если вы ищете возможность взаимодействия между различными системами и языками, я бы определенно пошел на REST. У меня было много проблем с попыткой заставить SOAP работать между .NET и Java, например.

2
ответ дан neu242 16 сент. '08 в 23:34 2008-09-16 23:34

Я создаю ориентир, чтобы найти, какие из них быстрее! Я вижу этот результат:

для 1000 запросов:

  • REST занял 3 секунды
  • SOAP занял 7 секунд

для 10 000 запросов:

  • REST занял 33 секунды.
  • SOAP занял 69 секунд

для 1 000 000 запросов:

  • REST занял 62 секунды
  • SOAP занял 114 секунд
2
ответ дан Sonador 23 янв. '16 в 14:53 2016-01-23 14:53

Старый вопрос, но по-прежнему актуальный сегодня.... из-за того, что многие разработчики на корпоративном пространстве все еще используют его.

Моя работа включает в себя разработку и разработку решений IoT (Internet of Things). К ним относится разработка кода для небольших встроенных устройств, которые взаимодействуют с облаком.

Ясно, что REST теперь широко признан и полезен, и в значительной степени стандарт defacto для Интернета, даже Microsoft имеет поддержку REST, включенную в Azure. Если бы мне нужно было полагаться на SOAP, я не мог бы делать то, что мне нужно, просто слишком большой, громоздкий и раздражающий для небольших встроенных устройств.

REST прост, чист и мал. Идеально подходит для небольших встроенных устройств. Я всегда кричу, когда я работаю с веб-разработчиком, который отправляет мне WSDL. Поскольку мне придется начать образовательную кампанию, почему это просто не сработает и почему они должны будут изучить REST.

0
ответ дан Remixed123 12 марта '15 в 5:46 2015-03-12 05:46

1. Из моего опыта. Я бы сказал, что REST дает вам возможность получить доступ к уже созданному URL. eg- > поиск слов в google. Этот URL-адрес можно использовать как веб-сервис для REST. В SOAP вы можете создать свой собственный веб-сервис и получить доступ к нему через клиент SOAP.

  1. REST поддерживает текст, JSON, формат XML. Следовательно, он более универсален для связи между двумя приложениями. Хотя SOAP поддерживает только формат XML для обмена сообщениями.
0
ответ дан Shalini Baranwal 30 сент. '15 в 10:01 2015-09-30 10:01

Другие вопросы по меткам или Задайте вопрос