Odpowiedzi na odświeżone w 2012 r. Pytanie (drugą nagrodą) i przegląd dzisiejszych wyników (inne odpowiedzi).
MYDŁO, plusy i minusy
O SOAP 1.2, zaletach i wadach w porównaniu z „REST” ... Cóż, od 2007 roku
możesz opisywać usługi REST Web za pomocą WSDL i używając protokołu SOAP ... To znaczy, jeśli pracujesz trochę ciężej, wszystkie standardy W3C stos protokołów usług WWW może być REST !
To dobry punkt wyjścia, ponieważ możemy sobie wyobrazić scenariusz, w którym tymczasowo unika się wszelkich dyskusji filozoficznych i metodologicznych. Możemy porównać technicznie „SOAP-REST” z „NON-SOAP-REST” w podobnych usługach,
ODPOWIEDZIALNOŚĆ (= „REST-SOAP”): jak pokazuje L.Mandel , WSDL2 może opisać usługę REST, a jeśli przypuszczamy, że przykładowy kod XML może być zawarty w SOAP, cała implementacja będzie „SOAP-REST” .
ODPOCZYNEK NA MYDŁO : dowolna usługa internetowa REST, która nie może być SOAP ... To znaczy „90%” dobrze znanych przykładów REST. Niektórzy nie używają XML (np. Typowe REST AJAX używają JSON zamiast tego), inni używają innej struktury XML, bez nagłówków lub reguł SOAP. PS: aby uniknąć nieformalności, możemy założyć REST poziom 2 w porównaniach.
Oczywiście, aby porównać bardziej koncepcyjnie, porównaj „NON-REST-SOAP” z „NON-SOAP-REST”, jako różne podejścia do modelowania. Uzupełniając taksonomię usług sieciowych:
MYDŁO BEZ ODPOCZYNKU : dowolna usługa internetowa SOAP, która nie może być REST ... To znaczy „90%” dobrze znanych przykładów SOAP.
NON-REST-NEITHER-SOAP : tak, wszechświat „modelowania usług sieciowych” obejmuje inne rzeczy (np. XML-RPC ).
MYDŁO w warunkach REST
Porównywanie porównywalnych rzeczy: SOAP-REST z NON-SOAP-REST .
PROS
Wyjaśniając niektóre warunki,
Stabilność umowy : dla wszystkich rodzajów umów (jako „umowy pisemne”),
Dzięki zastosowaniu norm : wszystkie poziomy stosu W3C są wzajemnie zgodne. REST, z drugiej strony, nie jest standardem W3C ani ISO i nie zawiera żadnych znormalizowanych szczegółów na temat urządzeń peryferyjnych usługi. Tak więc, jak powiedziałem wcześniej @DaveWoldrich (20 głosów), @cynicalman (5), @Exitos (0), w kontekście, w którym POTRZEBUJESZ STANDARDÓW, potrzebujesz mydła.
Dzięki zastosowaniu najlepszych praktyk : „pełny aspekt” implementacji stosu W3C tłumaczy stosowne porozumienia ludzkie / prawne / prawne.
Solidność : bezpieczeństwo struktury SOAP i nagłówków. Dzięki metadzie komunikacji (z pełną ekspresją XML) i weryfikacji masz „polisę ubezpieczeniową” na wypadek jakichkolwiek zmian lub hałasu.
SOAP ma „niezawodność transakcyjną (...) zajmującą się awariami komunikacji. SOAP ma więcej kontroli wokół logiki ponownych prób, a tym samym może zapewnić więcej kompleksowych gwarancji niezawodności i usług”, E. Terman .
Sortowanie profesjonalistów według popularności,
Lepsze narzędzia (~ 70 głosów): SOAP ma obecnie zaletę lepszych narzędzi, od 2007 r. I nadal 2012 r., Ponieważ jest to dobrze zdefiniowany i powszechnie akceptowany standard. Patrz @MarkCidade (27 głosów), @DaveWoldrich (20), @JoshM (13), @TravisHeseman (9).
Zgodność z normami (25 głosów): jak powiedziałem wcześniej , @DaveWoldrich (20 głosów), @cynicalman (5), @Exitos (0), w kontekście, w którym POTRZEBUJESZ STANDARDÓW, potrzebujesz mydła.
Solidność : ubezpieczenie nagłówków SOAP, @JohnSaunders (8 głosów).
CONS
Struktura SOAP jest bardziej złożona (ponad 300 głosów): wszystkie odpowiedzi tutaj i źródła o „SOAP vs REST”, wykazują pewien stopień niechęci z redundancją i złożonością SOAP. Jest to naturalna konsekwencja wymagań dotyczących formalnej weryfikacji (patrz poniżej) i solidności (patrz wyżej). „REST NON-SOAP” (i XML-RPC, twórca SOAP ) może być prostszy i nieformalny.
Ograniczenie „tylko XML” stanowi przeszkodę w wydajności podczas korzystania z małych usług (~ 50 głosów): patrz json.org/xml i to pytanie lub to drugie . Wskazuje na to @toluju (41) i inni.
PS: ponieważ JSON nie jest standardem IETF , ale możemy uznać go za standard dla społeczności oprogramowania sieciowego.
Usługi modelowania za pomocą SOAP
Teraz możemy dodać SOAP-NON-REST z porównaniami NON-SOAP-REST i wyjaśnić, kiedy lepiej jest używać SOAP :
Potrzeba standardów i stabilnych umów (patrz sekcja „PROS”). PS: zobacz typową „potrzebę B2B dotyczącą standardów” opisaną przez @saille .
Potrzebujesz narzędzi (patrz sekcja „PROS”). PS: Standardy i istnienie weryfikacji formalnej (patrz poniżej), to ważne kwestie dla automatyzacji narzędzia.
Równoległe ciężkie przetwarzanie (patrz sekcja „Kontekst / podstawy” poniżej): przy większych i / lub wolniejszych procesach, bez względu na nieco większą złożoność SOAP, niezawodność i stabilność są najlepszymi inwestycjami.
Potrzebujesz większego bezpieczeństwa : gdy wymagany jest więcej niż HTTPS i naprawdę potrzebujesz dodatkowych funkcji do ochrony, SOAP jest lepszym wyborem ( patrz @Bell , 32 głosy). „Wysłanie wiadomości ścieżką bardziej skomplikowaną niż żądanie / odpowiedź lub transport, który nie wymaga HTTP”, S. Seely . XML jest kluczową kwestią, oferując standardy XML Encryption , XML Signature i XML kanonizacją , a jedynie z mydłem można osadzić te mechanizmy do wiadomości przez dobrze przyjętym standardem jak WS-Security .
Potrzebujesz większej elastyczności (mniej ograniczeń): SOAP nie potrzebuje dokładnej korespondencji z URI; nie wymaga ograniczenia do HTTP; nie trzeba ograniczać się do 4 czasowników. Jak mówi @TravisHeseman (9 głosów), jeśli chcesz czegoś „elastycznego dla dowolnej liczby technologii i zastosowań klienta”, użyj SOAP.
PS: pamiętaj, że XML jest bardziej uniwersalny / ekspresyjny niż JSON (i in.).
Potrzeba formalnych weryfikacji : ważne, aby zrozumieć, że stos W3C korzysta z metod formalnych , a REST jest bardziej nieformalny. Opis usługi WSDL ( język formalny ) jest formalną specyfikacją interfejsów usług sieciowych, a SOAP to solidny protokół, który akceptuje wszystkie możliwe recepty WSDL.
KONTEKST
Historyczny
Aby ocenić trendy, konieczna jest perspektywa historyczna. W tym temacie perspektywa 10 lub 15 lat ...
Przed standaryzacją W3C istnieje pewna anarchia. Trudno było wdrożyć interoperacyjne usługi z różnymi strukturami, a trudniej, kosztowniej i czasochłonnie wdrożyć coś interoperacyjnego między firmami. Standardy stosu W3C to lekka, północna do współpracy zestawów złożonych usług internetowych.
W przypadku codziennych zadań, takich jak wdrażanie AJAX, SOAP jest ciężkie ... Tak więc potrzeba prostych rozwiązań wymaga wyboru nowej struktury teorii ... I dużych „odtwarzaczy oprogramowania sieciowego”, takich jak Google, Amazon, Yahoo i wsp. Wybrali najlepszą alternatywę, czyli podejście REST. Czy w tym kontekście koncepcja REST pojawiła się jako „konkurencyjne środowisko”, a dziś (2012 r.) Ta alternatywa jest de facto standardem dla programistów.
Podwaliny
W kontekście przetwarzania równoległego usługi sieciowe udostępniają podzadania równoległe; a protokoły, takie jak SOAP, zapewniają dobrą synchronizację i komunikację. Nie „jakiekolwiek zadanie”: usługi sieciowe można zaklasyfikować jako
gruboziarniste i krępujące paralelizm .
W miarę jak zadanie staje się coraz większe, staje się ono mniej znaczącą „debatą na temat złożoności”, a bardziej istotne staje się solidność komunikacji i solidność umów.