REST i SOAP - co to jest? Które wybrać?

0

Witam. Mam takie pytania. Dobrze rozumiem, że REST oraz SOAP są bibliotekami, które oferują dostęp do plików client-server na zewnętrznych serwerach/serwisach ? Jeżeli źle rozumiem, to prosiłbym o wytłumaczenie. Chciałbym też dowiedzieć się, która biblioteka/technologia jest lepsza, łatwiejsza, która jest używana obecnie. (php)
Z góry dziękuję.

1

Nie bibliotekami, a protokołami komunikacji. REST opiera się na tym, że protokół HTTP posiada parę czasowników (GET - pobierz, POST - utwórz, PUT - aktualizuj, DELETE - usuń, oraz parę innych). Do tej pory stosowano głównie pierwsze 2, ale wraz z rozwojem internetu postawiono również na pozostałe. W ten sposób mamy 2 różne rzeczy: identyfikator podmiotu (URI) oraz akcję (czasownik HTTP).

SOAP z kolei opiera się o wymianę dokumentów XML/JSON. Wysyłasz na serwer plik, który serwer parsuje i następnie wykonuje określone akcje.

SOAP jest znacznie bardziej ustandaryzowaną metodą, jednak dla mnie znacznie bardziej naturalny jest REST. Obecnie popularniejszy jest REST, który jest bardziej elastyczny, jednak wiele serwisów dalej używa SOAP (jak Allegro).

0

SOAP pozwala dowiedzieć się jak komunikować się z serwisem za pomocą pewnego ustandaryzowanego kontraktu (WSDL), do RESTa musisz mieć dokumentacje która ci powie co za JSONa ci ten RESTowy serwis wypluje. SOAP daje ci też dużo więcej możliwości takich jak m.in. szyfrowanie, ale jednocześnie jest bardziej skomplikowany i dużo "cięższy".

0

Ostatnio trochę używam REST i jestem zdania, że ten protokół jeśli już go używać to lepiej do rzeczy o lżejszym charakterze. Najbardziej rażące wady RESTa dla mnie:

  1. słabo wspiera transakcje (bo wszystko trzeba do 1 requesta sprowadzać :/)
  2. PUT i DELETE nie są wspierane w formularzach dlatego, trzeba posiłkować się fake'owymi metodami
  3. w URLach określa się zasoby jako rzeczowniki, a i tak to się łamie, gdy trzeba wykonać search :/
  4. niewygodnie idzie obsługiwać zagnieżdżane zasoby w URLach
  5. zbyt skromny zestaw kodów statusu do informowania o błędach
0

SOAP pozwala dowiedzieć się jak komunikować się z serwisem za pomocą pewnego ustandaryzowanego kontraktu (WSDL)

Nie programuje w Java, ale czytałem, że statycznie kompilowane języki mają lepsze wsparcie w tworzeniu SOA. Czy to wynika z tego, że ten kontrakt jest sprawdzany w trakcie kompilacji?

0

W javie mozesz wygenerować sobie klasy potrzebne jako parametry wywołania webservisu na podstawie wsdla ;)

0

do większych serwisów, można użyć SOAP czy raczej lżejszego RESTa ?

0

Można użyć dowolnego. Np. Twitter czy GH używają REST, ale takie Allegro używa SOAP. Wybór należy do Ciebie. A co do tego co mówił @Shalom, to przy RESTful też można użyć WSDL. Pytaniem jest, czy ma to sens.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0