Biorąc pod uwagę te obszary, mogę podać ogólny zarys, ale nie mogę wyciągnąć dla ciebie wniosków. Istnieją dwa główne obszary, w których oba protokoły różnią się:
- Format wiadomości
- Odkrycie usługi
Format wiadomości jest najłatwiejszy do zrozumienia. Opakowanie SOAP zarówno dla żądań, jak i odpowiedzi ma dość dużą wagę. Istnieje obwiednia SOAP, która zawiera zarówno nagłówek, jak i sekcję treści. Nagłówek może być wykorzystywany przez kilka filtrów w łańcuchu żądań w celu wykonania pewnego rodzaju identyfikacji, autoryzacji itp. Jednak XML jest parsowany, co wiąże się z pewną karą dla skalowalności twojego systemu. To, ile zależy od warstwy przetwarzania SOAP w stosie.
Odkrycie usług to miejsce, w którym prawdopodobnie będziesz miał najwięcej sporów. REST ze swej natury zapewnia przewidywalne punkty końcowe, a treść żądania jest prostym żądaniem HTTP. Zaletą jest to, że nie ma dodatkowych kosztów ogólnych, a użytkownicy końcowi mogą zgadnąć, jak zrobić to, czego potrzebują, gdy zrozumieją strukturę adresu URL witryny. Oczywiście naiwni świadomi bezpieczeństwa ludzie postrzegają to jako słabość. W końcu z SOAP musisz zużyć WSDL, aby wiedzieć, jakie są punkty końcowe. Oczywiście dzięki SOAP otrzymałeś cały format wiadomości, dzięki czemu możesz przeprowadzać bardziej ukierunkowane ataki.
Podział według podanych kategorii:
Bezpieczeństwo
Żadna z nich nie jest z natury bezpieczniejsza niż druga. Stosuj dobre zasady bezpieczeństwa:
- Szyfruj komunikację
- Upewnij się, że uwierzytelniasz i autoryzujesz użytkowników przed przetwarzaniem
- Dobre nawyki kodowania, aby uniknąć bezpośrednich ataków
- A to tylko krótka lista.
Pamiętaj o niejasności! = Bezpieczeństwo.
Występ
Zarówno surowa wydajność, jak i skalowalność przejdzie do REST z powodu żądania zgodnego z prostymi protokołami HTTP. Większość stosów SOAP wykorzystuje parsowanie SAX (parsowanie oparte na zdarzeniach), co znacznie poprawia skalowalność stosów SOAP, ale ma to wymierny wpływ na koszty ogólne. SOAP ma normalny narzut przetwarzania HTTP oprócz narzutu parsowania XML. REST po prostu ma narzut przetwarzania HTTP.
Złożoność
Z perspektywy systemu wygrywa REST. Jest mniej ruchomych części, krótszy łańcuch zapytań itp. Oznacza to, że łatwiej jest zapewnić niezawodność.
Z perspektywy programisty SOAP może wygrać, jeśli używane środowisko IDE lub framework zapewnia dobre wsparcie dla niego. Zasadniczo z REST spoczywa na tobie obowiązek wykonywania czynności wstępnego przetwarzania (uwierzytelnianie / autoryzacja / itp.), Podczas gdy przy SOAP wiele z nich można osiągnąć za pomocą podłączanego łańcucha przetwarzania.
Moja preferencja
Bardzo dobrze czuję się z żądaniami HTTP i wiem, jak działa sieć. W rezultacie podejście REST jest dla mnie bardziej preferowane. Wiem jednak, że niektórym z moich klientów nie podoba się to. Przeczytali artykuł branżowy potępiający bezpieczeństwo REST vs. SOAP itp. Najważniejsze jest to, że żadne podejście nie gwarantuje bezpieczeństwa. Dopilnuj, aby aplikacja była tak bezpieczna, jak to konieczne. Oczywiście społeczna aplikacja internetowa nie wymaga (ani nie pragnie) takiego bezpieczeństwa, jak system bankowy lub rządowy. Wiele stosów SOAP zawiera procesory, które można podłączyć, aby zapewnić pozory bezpieczeństwa, ale nadal Twoim obowiązkiem jest ich przeszukać i zainstalować.