2013-09-01 12 views
18

Czy SOAP przez HTTP jest podzbiorem XML przez HTTP, ponieważ zakładam SOAP również xml, który potwierdza schemat (schemat SOAP)? Zakładam, że do usługi XML over HTTP można uzyskać dostęp za pomocą metody GET lub POST. Czy SOAP przez HTTP zawsze używa metody POST? W przypadku XML przez HTTP przyjmuję wadę polegającą na tym, że plik schematu musi być udostępniany wszystkim konsumentom, podczas gdy w przypadku protokołu SOAP przez HTTP będzie to pojedynczy plik WSDL. Czy pomogłoby mi w informowaniu mnie o różnicy, a także o przewadze jednej nad drugą?Różnica między XML przez HTTP i SOAP przez HTTP

Odpowiedz

21

SOAP to specjalizacja XML, ponieważ ma schemat, taki jak http://www.xmlsoap.org/soap/envelope/, podczas gdy XML jest bardziej ogólny.

Aby użyć GET, można przeczytać tę dyskusję: http://www.coderanch.com/t/463869/Web-Services/java/SOAP-request-HTTP, ale zasadniczo SOAP odbywa się za pośrednictwem POST, choć wydaje się, że Axis obsługuje GET, jako sposób na działanie SOAP w świecie, w którym REST wydaje się rządzić.

I zgodnie z tym artykułem IBM (http://www.ibm.com/developerworks/xml/library/x-tipgetr/index.html) SOAP 1.2 wprowadza GET.

Jak już wspomniano, SOAP jest standardem, więc istnieją narzędzia, które mogą z nim łatwo pracować, w tym dynamiczne generowanie klientów, jak pokazano w tym pytaniu, dynamic proxy soap web service client in java?, w którym klient generuje odcinki potrzebne przy połączeniu.

Jeśli używasz XML przez http, może być lepiej, w zależności od potrzeby, jako sposób przesyłania danych, ale w przypadkach użycia mogę pomyśleć, że lepiej byłoby po prostu użyć JSON i REST, ale, jeśli chcesz przesłać XML lub wysłać XML, możesz spojrzeć na użycie usługi REST.

POST byłby lepszym rozwiązaniem, ponieważ GET ma ograniczenia rozmiaru (maximum length of HTTP GET request?), prawdopodobnie dlatego SOAP jest prawie zawsze POST.

WSDL niekoniecznie jest pojedynczym plikiem, w WCF, jeśli pamiętam, istnieje wiele plików xml, które należy połączyć, aby WSDL był kompletny.

Zaleta zależy od tego, jaki jest twój przypadek użycia, ale uważam, że użycie REST i umożliwienie użytkownikowi wyboru typu jest użyteczne, ponieważ na przykład może być trywialne przełączanie się między JSON i XML i jest lepszym wyborem dla XML przez HTTP.

SOAP jest najlepszy w przypadku integracji ze starszymi technologiami, ponieważ może to być wszystko, czego mogą łatwo użyć. Na przykład, kiedy zrobiłem webservices dla integracji SAP, może być więcej pracy, aby nie używać SOAP, w zależności od umiejętności programisty ABAP.

Można znaleźć na to pytanie użycia:

How SOAP and REST work with XML/JSON response?

i do dyskusji o JSON i XML w webservices może okazać się pomocne:

http://digitalbazaar.com/2010/11/22/json-vs-xml/

zapomniałem link , ponieważ dokonują krótkiego porównania, ale na koniec możesz w łatwy sposób objąć oba. W WCF miałem kontroler, który posiadał logikę biznesową i musiał pliki .aspx, jeden dla SOAP i jeden dla REST, a niektóre usługi sieciowe obsługiwały oba, ponieważ było to tylko kwestia obsługi różnic między żądaniami i odpowiedziami. Tak więc, jeśli chcesz zapewnić wsparcie dla obu i mieć uzasadnienie biznesowe pokazujące, że ma to sens, wybierz strukturę, która ułatwi to zadanie.

http://digitalbazaar.com/2010/11/22/json-vs-xml/

Zasadniczo celem jest świadczenie usług na rzecz klientów za pośrednictwem Internetu. Co klienci mają zamiar połączyć? W jaki sposób klienci najłatwiej sięgną po kontakt? Ile danych jest przekazywanych w żądaniu?

Tego typu pytania doprowadzą do najlepszego rozwiązania dla Twoich potrzeb.

+0

Wielkie dzięki. Bardzo użyteczne i szczegółowe wyjaśnienie, które oczyściło moje zamieszanie :) –

+0

Proszę, chciałbym wiedzieć, jak żądania SOAP są wysyłane przez HTTP POST. Czy cała koperta została zaksięgowana jako surowa w treści żądania, tak jak można w całości odczytać ciąg znaków za pomocą następującej metody: 'String entireSoapReequest = IOUtils.toString (request.getInputStream());' –

+1

@SayoOladeji - Są narzędzia mydła, które pomogą, ale jeśli pamiętam, to wszystko jest w treścibez żądania, ale wiem, że możesz chcieć zapytać to jest nowe pytanie –

Powiązane problemy