Co to są WSDL, SOAP i REST?

153

Co to jest WSDL ? Jak to się ma do SOAP ? Gdzie w tym wszystkim pasuje REST ?

javaguy
źródło
2
Jakich „przykładów” szukasz? Jak powiedziałem, nie jest to prosta rzecz, na którą można uzyskać „prosty” przykład.
John Saunders,

Odpowiedzi:

180

WSDL to dokument XML opisujący usługę WWW. W rzeczywistości oznacza język opisu usług internetowych.

SOAP to protokół oparty na języku XML, który umożliwia wymianę informacji między aplikacjami za pośrednictwem określonego protokołu (na przykład HTTP lub SMTP). Jest skrótem od Simple Object Access Protocol i używa XML jako formatu wiadomości do przekazywania informacji.

REST to styl architektoniczny systemów sieciowych i oznacza Representational State Transfer. Sam w sobie nie jest standardem, ale używa standardów, takich jak HTTP, URL, XML itp.

keith_c
źródło
4
Chciałem umieścić SMTP lub HTTP jako przykłady protokołów, na których można używać SOAP. Nie zamierzałem przez to oznaczać, że HTTP jest jedynym protokołem, którego można użyć (użyłem go tylko jako przykładu).
keith_c
7
Representational State Transfer (REST) ​​to styl architektoniczny, który określa ograniczenia, takie jak jednolity interfejs, które po zastosowaniu do usługi sieci Web wywołują pożądane właściwości, takie jak wydajność, skalowalność i modyfikowalność, które umożliwiają usługom najlepsze działanie w sieci WWW. W stylu REST dane i funkcje są uważane za zasoby i są dostępne za pomocą jednolitych identyfikatorów zasobów (URI). Zasoby są przetwarzane za pomocą zestawu prostych, dobrze zdefiniowanych operacji. jest zgodny z architekturą klient / serwer i jest zaprojektowany do korzystania z bezstanowego protokołu komunikacyjnego, zazwyczaj HTTP.
kingAm
4
Czy „D” w WSDL nie oznacza „opisu” zamiast „definicji”?
Sparkzz
11
"A WSDL is an XML document that describes a web service. It actually stands for Web Services Definition Language." To naprawdę nie wyjaśnia, co to jest ...
Ojonugwa Jude Ochalifu
2
@Sparkzz według wikipedii:The current version of WSDL is WSDL 2.0. The meaning of the acronym has changed from version 1.1 where the "D" stood for "Definition".
Bochu
106

Przykład: Mówiąc prosto, jeśli masz serwis internetowy kalkulatora.

WSDL: WSDL zawiera informacje o funkcjach, które można zaimplementować lub udostępnić klientowi. Na przykład: dodawanie, usuwanie, odejmowanie i tak dalej.

SOAP: gdzie, tak jak używając SOAP, faktycznie wykonujesz akcje takie jak doDelete (), doSubtract (), doAdd (). Więc SOAP i WSDL to jabłka i pomarańcze. Nie powinniśmy ich porównywać. Oba mają różne funkcje.

Dlaczego używamy SOAP i WSDL: do niezależnej od platformy wymiany danych.

EDYCJA: W normalnym codziennym życiu przykład:

WSDL: Kiedy idziemy do restauracji, widzimy pozycje menu, to są WSDL.

Klasy proxy: Teraz po obejrzeniu pozycji menu podejmujemy decyzję (przetwarzamy nasz umysł na temat tego, co zamówić): Więc zasadniczo tworzymy klasy proxy w oparciu o dokument WSDL.

SOAP: Następnie, kiedy faktycznie zamawiamy jedzenie na podstawie Menu: Oznacza to, że używamy klas proxy do wywoływania metod obsługi, które są wykonywane przy użyciu protokołu SOAP. :)

Niezniszczalny
źródło
38

Za każdym razem, gdy ktoś wspomina o SOAP / WSDL, myślę o obiektach i klasach zdefiniowanych w xml ...

„Używasz protokołu SOAP w taki sam sposób, jak dowolnej klasy PHP. Jednak w tym przypadku klasa nie istnieje w lokalnym systemie plików aplikacji, ale w zdalnej witrynie, do której można uzyskać dostęp przez http.” ... „Jeśli myślimy o używaniu usługi SOAP jako po prostu kolejnej klasy PHP, wówczas dokument WSDL jest listą wszystkich dostępnych metod i właściwości klas”.

http://www.doublehops.com/2009/07/07/quick-tutorial-on-getting-started-with-soap-in-php/comment-page-1/

..i kiedy ktoś mówi o REST, myślę o poleceniach HTTP (metodach żądań), takich jak POST, GET i DELETE

angelcool.net
źródło
19

SOAP -> SOAP (Simple object access protocal) to protokół na poziomie aplikacji stworzony do interakcji między maszynami. Protokół określa standardowe zasady. Wszystkie strony korzystające z danego protokołu powinny przestrzegać zasad protokołu. Podobnie jak TCP, rozwija się w warstwie transportowej. Protokół SOAP będzie rozumiany przez warstwę aplikacji (każda aplikacja obsługująca SOAP - Axis2, .Net).

Komunikat WSDL -> SOAP składa się z SoapEnevelope-> SoapHeader i SoapBody. Nie określa, jaki byłby format wiadomości? jakie są obsługiwane przez niego transporty (HTTP, JMS)? Bez tych informacji każdemu klientowi, który chce korzystać z określonej usługi sieciowej, trudno jest skonstruować komunikat SOAP. Nawet jeśli to zrobią, nie będą pewni, będzie działać przez cały czas. WSDL jest ratunkiem. WSDL (język opisu usługi sieci Web) definiuje operacje, formaty komunikatów i szczegóły transportu dla komunikatu SOAP.

REST -> REST (Reprezentacyjny transfer stanu) jest oparty na transporcie. W przeciwieństwie do SOAP, który jest ukierunkowany na akcje, REST dotyczy bardziej zasobów. REST lokalizuje zasoby za pomocą adresu URL (przykład -http: // {serverAddress} / workers / workersNumber / 12345) i zależy od protokołu transportowego (z HTTP - GET, POST, PUT, DELETE, ...) dla akcji do wykonania na zasobach. Usługa REST lokalizuje zasób na podstawie adresu URL i wykonuje akcję na podstawie zlecenia transportu. Jest bardziej oparty na stylu architektonicznym i konwencjach.

Raj kannan Iyyappan
źródło
16

Nie będziesz „po prostu” rozumieć czegoś złożonego.

WSDL jest językiem opartym na XML do opisu usługi WWW. Opisuje komunikaty, operacje i informacje o transporcie sieciowym używane przez usługę. Te usługi internetowe zwykle używają protokołu SOAP, ale mogą używać innych protokołów.

Kod WSDL jest odczytywalny przez program, więc może być używany do generowania całości lub części kodu klienta niezbędnego do wywołania usługi WWW. To właśnie oznacza nazywanie usług internetowych opartych na SOAP „samoopisującymi się”.

REST nie jest w ogóle powiązany z WSDL.

John Saunders
źródło
11

SOAP to skrót od Simple (sic) Object Access Protocol. Miał być sposobem wykonywania zdalnych wywołań procedur do zdalnych obiektów poprzez wysyłanie XML przez HTTP.

WSDL to język opisu usługi sieci Web. Żądanie kończące się na „.wsdl” skierowane do punktu końcowego spowoduje wyświetlenie komunikatu XML opisującego żądanie i odpowiedź, których może oczekiwać użycie. Opisuje umowę między usługą a klientem.

REST używa protokołu HTTP do wysyłania wiadomości do usług.

SOAP to specyfikacja, REST to styl.

duffymo
źródło
2
-1: przepraszam, ale nie zgadzam się na kojarzenie SOAP z RPC. A co z usługami w stylu wiadomości? Nie ma również standardu, który mówi, że żądanie kończące się na .wsdl lub ?wsdl wygeneruje WSDL.
John Saunders
4
Czy chcesz powiedzieć, że nie możesz zrobić RPC z SOAP? Wiem, że może to nie obejmować całego standardu, ale z pewnością była to pierwotna motywacja. Jeśli chodzi o to, czy URL WSDL jest częścią standardu, przyznaję, że mnie tam masz. Zwykle jest to sposób, w jaki to widzę, ale nie mogę cytować niczego w normie, która to nakazuje.
duffymo
1
Być może myliłeś fakt, że SOAP został wyprowadzony z XML-RPC z myślą, że SOAP był pierwotnie zamierzony jako RPC. Należy jednak zauważyć, że WSDL od samego początku był w stanie opisać usługi w stylu dokumentu, oprócz usług w stylu RPC. Gdyby RPC było oryginalną motywacją stojącą za SOAP i WSDL, można by oczekiwać, że w oryginalnym standardzie nie byłoby usług w stylu dokumentu.
John Saunders
6

Wikipedia podaje, że „Język opisu usług sieci Web jest językiem opartym na XML, który zapewnia model opisu usług internetowych”. Innymi słowy, WSDL jest usługą sieciową, podobnie jak javadoc do biblioteki java.

Jednak naprawdę słodką rzeczą w WSDL jest to, że oprogramowanie może generować klienta i serwer przy użyciu WSDL.

Michael Burrows
źródło
4

REST jest lekki pod względem kodowania, znacznie bardziej przydatny w przypadku lekkich urządzeń, tj. Nieregulowanych API.

REST jest niezależny od formatu. XML, HTML, JSON - wszystkie opcje są dostępne.

REST zapewnia możliwość przesyłania komunikatów w 2 punktach (nie jest to zaskakujące, ponieważ REST oznacza REpresentational State Transfer), w którym interakcja WSDL / SOAP jest interakcją wielopunktową.

REST nie wymaga nowego rozszerzenia dla komunikatów XML, podczas gdy w WSDL / SOAP tak jest.

WSDL / SOAP używa wielu protokołów transportowych, REST opiera się tylko na HTTP. Dlatego WSDL / SOAP może być używany jako sposób RESTful, jednak proste żądania mogą być nadmiernie skomplikowane / ciężkie.

Prosta analogia: REST jest jak motoboy, który dostarcza jedzenie łatwo i szybko. Rozszerzony XML WSDL / SOAP bardziej przypomina dostawę UPS, bardziej ustrukturyzowane i poważne rzeczy, ale wiąże się z kosztami.

Bedi Egilmez
źródło
0

Dokument WSDL opisuje usługę WWW. Określa lokalizację usługi i metody usługi przy użyciu następujących głównych elementów: typy danych używane w usłudze sieciowej elementy danych dla każdej operacji opisują operacje, które mogą być wykonywane, oraz wiadomości.

SOAP (Simple Object Access Protocol) to protokół przesyłania wiadomości, który umożliwia programom działającym w różnych systemach operacyjnych komunikowanie się przy użyciu protokołów http i xml.

Farzaneh
źródło