Dlaczego zamiast usług opartych na SOAP można użyć usługi REST? [zamknięte]

Uczestniczyłem dziś w ciekawym demie na REST, jednak nie mogłem wymyślić jednego powodu (ani nie został przedstawiony), dlaczego REST jest w każdym razie lepszy lub prostszy w użyciu i wdrożeniu niż stos usług oparty na SOAP.

Jakie są niektóre z powodów, dla których ktoś w "realnym świecie" używa REST zamiast usług opartych na SOAP?

Author: tugberk, 2008-09-18

11 answers

Mniej nad głową (brak koperty z mydłem do zawijania każdego połączenia)

Mniej duplikacji (HTTP reprezentuje już operacje takie jak DELETE, PUT, GET, itp. które muszą być inaczej przedstawione w kopercie mydła).

Bardziej znormalizowane - operacje HTTP są dobrze zrozumiałe i działają konsekwentnie. Niektóre implementacje mydła mogą być wybredne.

Bardziej czytelny i testowalny (trudniej przetestować SOAP tylko za pomocą przeglądarki).

Nie musisz używać XML (no cóż nie masz do mydła albo, ale to nie ma sensu, ponieważ już robisz parsowanie koperty).

Biblioteki uczyniły SOAP (swego rodzaju) łatwym. Ale jak już zauważyłam, odkładasz sporo zbędności pod spodem. tak w teorii SOAP może przejść przez inne transporty tak, aby uniknąć jazdy na szczycie warstwy robiąc podobne rzeczy, ale w rzeczywistości prawie wszystko soap pracy będziesz kiedykolwiek zrobić jest na HTTP.

 154
Author: Kendall Helmstetter Gelner,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-18 06:18:19

Usługi RESTful są znacznie prostsze w obsłudze niż usługi oparte na SOAP (zwykłe). Powodem tego jest to, że REST opiera się na zwykłych żądaniach HTTP, co umożliwia wywnioskowanie intencji na podstawie typu żądania (GET = retrieve, POST = write, DELETE = remove, itp...) i jest całkowicie bezpaństwowcem. Z drugiej strony można argumentować, że jest mniej elastyczny, ponieważ odchodzi od koncepcji koperty wiadomości zawierającej kontekst żądania.

In my experience SOAP jest preferowane w przypadku usług w przedsiębiorstwie, a REST jest preferowane w przypadku usług, które są ujawniane jako publiczne interfejsy API.

Z narzędziami takimi jak WCF w. NET framework jest bardzo trywialne zaimplementowanie usługi jako REST lub SOAP.

Niektóre istotne lektury:

 34
Author: Eric Schoonover,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-22 18:33:24

Zakładam, że mówiąc "Usługi internetowe" masz na myśli SOAP i zestaw standardów WS -*. (W przeciwnym razie mógłbym argumentować, że usługi REST to "Usługi internetowe".)

Kanonicznym argumentem jest to, że usługi REST są bliższe projektowi sieci - czyli projektowi HTTP i powiązanej infrastruktury. W ten sposób korzystanie z usługi REST będzie bardziej kompatybilne z istniejącymi narzędziami i technikami sieciowymi.

Oczywiście, gdy już się zagłębisz w szczegóły, przekonasz się, że oba podejścia mają mocne strony w różnych scenariuszach. Czy to te szczegóły, które Cię interesują?

 12
Author: Bruce,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-18 06:16:45

Nad głową nie jest tak ważne jak dobra architektura.

REST nie jest protokołem, ale architekturą, która zachęca do skalowalnego projektowania. Jest często wybierany, ponieważ zbyt duża swoboda w RPC może łatwo prowadzić do słabego projektu.

Innym powodem jest przewidywalny koszt protokołów RESTful przez HTTP, ponieważ może wykorzystywać istniejące technologie (głównie proxy). Początkowy koszt RPC jest dość niski, ale ma tendencję do znacznego wzrostu wraz z intensyfikacją obciążenia.

 9
Author: Piotr Czapla,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-25 21:15:44

REST to implementacja-agnostyczna i znacznie bardziej przejrzysta, a to sprawia, że świetnie nadaje się do publicznych interfejsów API, szczególnie dla dużych stron internetowych, takich jak Flickr, Amazon lub Digg, które używają swoich interfejsów API jako narzędzi marketingowych i naprawdę chcą, aby ludzie konsumowali ich dane. Oni nie chcą trzymać za rękę 1000 początkujących programistów, którzy próbują debugować swoją bibliotekę SOAP w wybranym języku skryptowym.

Kontra SOAP i WSDL, które są lepsze dla aplikacji wewnętrznych, gdzie masz biblioteki i znane osoby na obu końcach. (I może nie musisz przejmować się takimi rzeczami, jak równoważenie obciążenia w skali Internetu, buforowanie HTTP itp.) Następnie dostajesz API, które są samo-udokumentowane, typy zachowania itp. bez pracy.

 6
Author: joelhardi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-18 06:43:37

Muszę przeczytać najwspanialszą rozprawę Roya Fieldinga na ten temat. Jest znakomitym przykładem i zdecydowanie wyprzedził swój czas, kiedy to napisał (2000).

 6
Author: Piko,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-03-13 23:37:48

Blog Steve ' a Vinoskiego i jego najnowsze artykuły są zdecydowanie warte przeczytania. Jest byłym Guru Corby, który napisał prawdopodobnie najlepszą książkę na ten temat z Michi Henning, "Advanced Corba ® Programming with C++" . Jednak od tego czasu widział błąd swoich sposobów klient / serwer, a teraz przysięga na odpoczynek.

 5
Author: Jason Etheridge,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-18 06:24:37

REST pozwala operacjom nie mutującym (które zazwyczaj używają czasownika GET) być buforowane. Oznacza to, że buforowane przez Klienta i / lub buforowane przez proxy. To może być ogromna wygrana!

 4
Author: David,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-23 20:16:45

REST to w zasadzie tylko sposób na implementację usług internetowych. Jest to po prostu sposób prawidłowego użycia HTTP do odpytywania usług internetowych, które próbujesz trafić.

Http://www.xfront.com/REST-Web-Services.html http://en.wikipedia.org/wiki/Representational_State_Transfer

 2
Author: Eric Holscher,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-18 06:16:29

Jest super prosty i smukły. Można to zrobić za pomocą przeglądarki poprzez HTTP verb: GET. Nie znalazłem przeglądarki, która może ręcznie wykonać ogólne żądanie HTTP POST z łatwością

 0
Author: Ray Lu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-18 06:38:38

Oto jeden punkt danych: Amazon oferuje swoje interfejsy API zarówno w formatach REST, jak i SOAP, a 85% wykorzystania to reszta.

Reszta jest łatwiejsza do wdrożenia, łatwiejsza do zrozumienia i wyższa wydajność.

 0
Author: pbreitenbach,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-04 05:53:22