Co jest nieodłącznym elementem wszystkich wysoko funkcjonujących aplikacji? To oczywiście wymiana danych, bez których systemy nie mogłyby poprawnie funkcjonować. Jednak, aby była ona możliwa, niezbędne jest określenie odpowiednich reguł i formatów komunikacji. W ich skład wchodzą m.in. protokoły komunikacji i usystematyzowane struktury danych takie jak SOAP i REST. Którą z nich i w jakim wypadku wybrać? Podpowiadamy. 

 

Co to jest SOAP?

SOAP, czyli Simple Object Transfer Protocol, to jak sama nazwa skazuje, protokół komunikacyjny, który został stworzony z inicjatywy Microsoftu po to, by umożliwić komunikację pomiędzy aplikacjami, używając języka XML. Protokół powstał w 1998 roku, odpowiadając potrzeby firmy Microsoft. Jednak jego przydatność docenia się także dzisiaj. Nadal często używany jest ze względu na swoją standaryzację, gwarancję bezpieczeństwa oraz prostą obsługę, umożliwiającą kontrolę zawartości przekazywanych dalej danych. 

 

Czym jest REST?

Representational State Transfer, w skrócie REST, jest stylem architektonicznym i wzorcem narzucającym dobre praktyki, który umożliwia definiowanie formatu przesyłanych danych. Stanowi też element standaryzacji protokołu HTTP. REST został stworzony przez Roya Fieldinga w ramach jego rozprawy doktorskiej w 2000 roku. Z racji swojej elastyczności, szybkości działania i prostoty konstrukcji jest bardzo chętnie używany przez programistów. W przeciwieństwie do SOAP, REST nie jest protokołem. Można określić go jako usługę – serwis komunikujący się na relacji klient – serwer. Jest bezstanowy i cache’owany. 

 

Różnice pomiędzy SOAP i REST

Mimo że zarówno SOAP i REST są usystematyzowanymi strukturami danych, istnieją pomiędzy nimi zasadnicze różnice. Dotyczą one kilku parametrów, które należy wziąć pod uwagę, wybierając dla siebie najlepsze rozwiązanie. Należy do nich format, wydajność, bezpieczeństwo, rozmiar danych, sposób pracy z danymi, stanowość i zastosowanie.

 

Format

Jeśli zależy Ci na dużej liczbie formatów, powinieneś zdecydować się na REST. Dzięki niemu dane można wymieniać w formacie JSON, XML, HTML, YAML, a także jako zwykły tekst. Daje więc Ci to duże pole manewru. 

 

SOAP umożliwia komunikację tylko przy użyciu XML. Jednak dostępny jest dla zdecydowanie większej ilości protokołów niż REST, który uwzględnia jedynie HTTP. Tak więc SOAP wykorzystasz łącznie z SMTP, UDP i oczywiście z HTTP. 

 

Zanim więc dokonasz ostatecznego wyboru, zastanów się, który parametr jest dla Ciebie najważniejszy. 

 

Wydajność rozwiązań

Które rozwiązanie jest najbardziej wydajne? Okazuje się, że REST. Ze względu na swój mały rozmiar wymaga mniejszej przepustowości łącza niż SOAP. Co więcej, dla takiej samej ilości danych wymaga mniejszej mocy obliczeniowej. Dzięki temu działa szybciej, nawet o kilkadziesiąt procent, od SOAP. Wydajność różni się także ze względu na cache’owanie wywołań API, które, w przeciwieństwie do SOAP, umożliwia REST. 

 

Bezpieczeństwo

Poszukujesz rozwiązania, które zagwarantuje Ci ułatwienie w kwestii bezpieczeństwa? W takim razie powinieneś wybrać SOAP. Dzięki niemu otrzymasz wsparcie dla WS-Security, który jest rozszerzeniem elementów bezpieczeństwa, zapewniającym dołączanie tokenów do komunikatów, oferującym poufność oraz integralność. Co więcej, wybierając SOAP, zyskujesz też budowaną logikę, która wspomaga komunikację o błędach w integracji, a także prostszą komunikację poprzez proxy i firewall. 

 

Z kolei decydując się na REST wdrożenie podobnych rozwiązań, jak w przypadku SOAP, może okazać się trudniejsze i mniej wygodne. Mimo to, jedno i drugie rozwiązanie wspiera SSL. 

 

Rozmiar danych

W zakresie rozmiaru danych oba rozwiązania również znacząco różnią się pomiędzy sobą. SOAP wymusza format XML oraz określone definicje w dokumencie. Wszystko to powoduje narzut na przesyłane zapytanie. Natomiast formaty dostępne dla REST, czyli wspomniane już np. JSON i YAML, mimo że są ustandaryzowane, w przypadku rozmiaru są zdecydowanie bardziej elastyczne i optymalne. Z przeprowadzonych testów wynika, że różnica w rozmiarze XML i JSON dla testowanych danych wynosi około 25% (Joni Makkonen Aalto University School of Science, 2017).

 

Sposób pracy z danymi

Jeśli chodzi o dane, rozwiązanie SOAP umożliwia udostępnianie elementów logiki aplikacji jako usługi. Są one definiowane zgodnie ze standardem WSLD, który został opracowany przez IBM oraz Microsoft. Dzięki temu to plik definiuje, które informacje i w jaki sposób można wydobyć z danego serwisu. 

 

W przypadku REST dane traktowane są jako zasoby. Można więc udostępnić je przy użyciu standardu Uniform Resource Identifier, w skrócie URI. Dane zasoby są więc opisane w dokumentacji serwisu. 

 

Stanowość

W zakresie stanowości również istnieją spore różnice. W przypadku SOAP jego działanie może być zarówno bezstanowe, jak i z wykorzystaniem sesji. Z koeli, jeśli chodzi o REST to jednym z jego założeń jest komunikacja bezstanowa. Konsekwencją tego jest brak tworzenia i przechowywania sesji po stronie serwera. Dzięki temu w łatwy sposób można powiększyć i rozbudować system, a także go unowocześnić. 

 

Zastosowanie rozwiązań

Patrząc pod kątem funkcjonalności, w zasadzie każdą usługę sieciową można oprzeć na SOAP i REST. Jednak ze względu na wydajność i wygodę rozwiązań, o wiele częściej wykorzystuje się RESTful API niż SOAP. 

  

Okazuje się, że nawet niektóre istniejące już webserwisy oparte o rozwiązanie SOAP, są przepisywane na REST. Także pomimo próby zachowania ich obecnej funkcjonalności działania. Dlaczego tak się dzieje? Z praktyki wynika, że zastosowanie SOAP jest zdecydowanie bardziej wyspecjalizowane i może ono mieć przewagę w aplikacjach, w których najważniejszym parametrem jest bezpieczeństwo. Wykorzystuje się to np. w usługach finansowych oraz w bramkach płatności.  

 

 

Po przeanalizowaniu różnic dotyczących SOAP i REST wciąż nie jest możliwe wybranie najlepszego rozwiązania. Nawet słabnąca popularność usług opierających się o protokół SOAP i licznych zalet REST nie są wystarczającymi argumentami. Jak więc dokonać właściwego wyboru? Przede wszystkim powinieneś wziąć pod uwagę rodzaj wdrażanej aplikacji. Mimo że w przeważającej części będzie to prawdopodobnie REST, może okazać się, że SOAP jest również bardzo przydatny. Jeśli jednak będziesz mieć wątpliwości, zasięgnij opinii specjalistów!