Ich bin verwirrt darüber, wie SOAP-Nachrichten und WSDL zusammenpassen. Ich habe angefangen, SOAP-Nachrichten zu untersuchen, wie zum Beispiel:
POST /InStock HTTP/1.1
Host: www.example.org
Content-Type: application/soap+xml; charset=utf-8
Content-Length: nnn
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:Body xmlns:m="http://www.example.org/stock">
<m:GetStockPrice>
<m:StockName>IBM</m:StockName>
</m:GetStockPrice>
</soap:Body>
</soap:Envelope>
Sind alle SOAP-Nachrichten WSDLs? Ist SOAP ein Protokoll, das seine eigenen SOAP-Nachrichten oder WSDLs akzeptiert? Wenn sie unterschiedlich sind, wann sollte ich SOAP-Nachrichten verwenden und wann sollte ich WSDLs verwenden?
Eine Klarstellung darüber wäre großartig.
java
web-services
soap
wsdl
James
quelle
quelle
Antworten:
Pro Anfrage wird ein SOAP-Dokument gesendet. Angenommen, wir waren ein Buchladen und hatten einen Remote-Server, den wir abgefragt haben, um den aktuellen Preis eines bestimmten Buches zu erfahren. Angenommen, wir müssen den Titel des Buches, die Anzahl der Seiten und die ISBN-Nummer an den Server übergeben.
Wann immer wir den Preis wissen wollten, schickten wir eine eindeutige SOAP-Nachricht. Es würde ungefähr so aussehen;
Und wir erwarten eine SOAP-Antwortnachricht wie folgt;
Die WSDL beschreibt dann, wie diese Nachricht behandelt / verarbeitet wird, wenn ein Server sie empfängt. In unserem Fall wird beschrieben, welche Typen Titel, NumPages und ISBN wären, ob wir eine Antwort von der GetBookPrice-Nachricht erwarten sollten und wie diese Antwort aussehen sollte.
Die Typen würden so aussehen;
Die WSDL enthält jedoch auch weitere Informationen darüber, welche Funktionen miteinander verknüpft sind, um Vorgänge auszuführen, welche Vorgänge im Dienst verfügbar sind und wo in einem Netzwerk Sie auf den Dienst / die Vorgänge zugreifen können.
Siehe auch W3 Annotated WSDL-Beispiele
quelle
Eine SOAP-Nachricht ist ein XML-Dokument, mit dem Ihre Daten übertragen werden. WSDL ist ein XML-Dokument, in dem beschrieben wird, wie Sie eine Verbindung herstellen und Anforderungen an Ihren Webdienst stellen.
Grundsätzlich sind SOAP-Nachrichten die Daten, die Sie übertragen. WSDL sagt Ihnen, was Sie tun können und wie Sie Anrufe tätigen.
Eine schnelle Suche in Google liefert viele Quellen für zusätzliche Lektüre (der vorherige Buchlink ist jetzt tot, um dem entgegenzuwirken, werden neue Empfehlungen in die Kommentare aufgenommen).
Ich notiere nur Ihre spezifischen Fragen:
Sind alle SOAP-Nachrichten WSDLs? Nein, sie sind überhaupt nicht dasselbe.
Ist SOAP ein Protokoll, das seine eigenen SOAP-Nachrichten oder WSDLs akzeptiert? Kein Lesen erforderlich, da dies weit entfernt ist.
Wenn sie unterschiedlich sind, wann sollte ich SOAP-Nachrichten verwenden und wann sollte ich WSDLs verwenden? Seife ist eine Struktur, die Sie für die Übertragung auf Ihre Nachricht / Daten anwenden. WSDLs werden nur verwendet, um zu bestimmen, wie der Dienst überhaupt angerufen werden soll. Oft ist dies eine einmalige Sache, wenn Sie zum ersten Mal Code hinzufügen, um einen bestimmten Webservice aufzurufen.
quelle
Eine WSDL (Web Service Definition Language) ist eine Metadatendatei, die den Webdienst beschreibt.
Dinge wie Operationsname, Parameter usw.
Die Seifenmeldungen sind die tatsächlichen Nutzlasten
quelle
Wir müssen definieren, was ein Webdienst ist, bevor wir feststellen, was der Unterschied zwischen SOAP und WSDL ist, wobei die beiden (SOAP und WSDL) Komponenten eines Webdienstes sind
Die meisten Anwendungen wurden für die Interaktion mit Benutzern entwickelt. Der Benutzer gibt Daten über eine Schnittstelle ein oder sucht nach Daten. Die Anwendung reagiert dann auf die Eingaben des Benutzers.
Ein Webdienst macht mehr oder weniger dasselbe, außer dass eine Webdienstanwendung nur von Maschine zu Maschine oder von Anwendung zu Anwendung kommuniziert. Es gibt oft keine direkte Benutzerinteraktion.
Ein Webdienst ist im Grunde eine Sammlung offener Protokolle, die zum Datenaustausch zwischen Anwendungen verwendet werden. Durch die Verwendung offener Protokolle können Webdienste plattformunabhängig sein. Software, die in verschiedenen Programmiersprachen geschrieben ist und auf verschiedenen Plattformen ausgeführt wird, kann mithilfe von Webdiensten Daten über Computernetzwerke wie das Internet austauschen. Mit anderen Worten, Windows-Anwendungen können mit PHP-, Java- und Perl-Anwendungen und vielen anderen kommunizieren, was unter normalen Umständen nicht möglich wäre.
Da verschiedene Anwendungen in verschiedenen Programmiersprachen geschrieben sind, können sie häufig nicht miteinander kommunizieren. Ein Webdienst ermöglicht diese Kommunikation mithilfe einer Kombination aus offenen Protokollen und Standards, hauptsächlich XML, SOAP und WSDL. Ein Webdienst verwendet XML zum Kennzeichnen von Daten, SOAP zum Übertragen einer Nachricht und schließlich WSDL zum Beschreiben der Verfügbarkeit von Diensten. Schauen wir uns diese drei Hauptkomponenten einer Webdienstanwendung an.
SOAP (Simple Object Access Protocol)
Das Simple Object Access Protocol oder SOAP ist ein Protokoll zum Senden und Empfangen von Nachrichten zwischen Anwendungen, ohne auf Interoperabilitätsprobleme zu stoßen (Interoperabilität bedeutet, dass die Plattform, auf der ein Webdienst ausgeführt wird, irrelevant wird). Ein anderes Protokoll, das eine ähnliche Funktion hat, ist HTTP. Es wird verwendet, um auf Webseiten zuzugreifen oder im Internet zu surfen. HTTP stellt sicher, dass Sie sich keine Gedanken darüber machen müssen, welche Art von Webserver - ob Apache oder IIS oder ein anderer - Ihnen die angezeigten Seiten bereitstellt oder ob die angezeigten Seiten in ASP.NET oder HTML erstellt wurden.
Da SOAP sowohl zum Anfordern als auch zum Antworten verwendet wird, variieren die Inhalte je nach Verwendungszweck geringfügig.
Unten finden Sie ein Beispiel für eine SOAP-Anforderungs- und Antwortnachricht
SOAP-Anfrage:
SOAP-Antwort:
Obwohl beide Nachrichten gleich aussehen, führen sie unterschiedliche Methoden aus. Wenn Sie sich beispielsweise die obigen Beispiele ansehen, können Sie sehen, dass die anfordernde Nachricht die
GetBookPrice
Methode verwendet, um den Buchpreis zu erhalten. Die Antwort wird von derGetBookPriceResponse
Methode ausgeführt, die die Nachricht sein wird, die Sie als "Anforderer" sehen werden. Sie können auch sehen, dass die Nachrichten mithilfe von XML erstellt wurden.Web Services Description Language oder WSDL
WSDL ist ein Dokument, das einen Webdienst beschreibt und Ihnen erklärt, wie Sie auf seine Methoden zugreifen und sie verwenden.
WSDL kümmert sich darum, woher Sie wissen, welche Methoden in einem Webdienst verfügbar sind, auf den Sie im Internet stoßen.
Schauen Sie sich eine Beispiel-WSDL-Datei an:
Die wichtigsten Dinge, an die Sie sich bei einer WSDL-Datei erinnern sollten, sind:
quelle
Bessere Analogie als das Telefonat: Produkte per Post bei einem Versandhändler bestellen. Das WSDL-Dokument entspricht den Anweisungen, in denen erläutert wird, wie die vom Dienstanbieter akzeptierten Bestellformulare erstellt werden. Eine SOAP-Nachricht ist wie ein Umschlag mit einem Standarddesign (Größe, Form, Konstruktion), mit dem jedes Postamt auf der ganzen Welt umgehen kann. Sie legen Ihr Bestellformular in einen solchen Umschlag. Das Netzwerk (zB das Internet) ist der Postdienst. Sie legen Ihren Umschlag in die Post. Die Mitarbeiter der Post schauen nicht in den Umschlag. Das Payload-XML ist das Bestellformular, das Sie dem Umschlag beigefügt haben. Nachdem die Post den Umschlag geliefert hat, öffnet der Webdienstanbieter den Umschlag und verarbeitet das Bestellformular. Wenn Sie das Formular korrekt erstellt und ausgefüllt haben,
quelle
In einfachen Worten, wenn Sie einen Web-Service von Rechner haben. WSDL informiert über die Funktionen, die Sie implementieren oder für den Client verfügbar machen können. Zum Beispiel: Hinzufügen, Löschen, Subtrahieren und so weiter. Wo Sie mit SOAP tatsächlich Aktionen wie doDelete (), doSubtract (), doAdd () ausführen. SOAP und WSDL sind also Äpfel und Orangen. Wir sollten sie nicht vergleichen. Sie haben beide ihre eigenen unterschiedlichen Funktionen.
quelle
SOAP: Es handelt sich um ein offenes Standard-XML-basiertes Kommunikationsprotokoll, mit dem Informationen vom Benutzer an den Webdienst oder umgekehrt ausgetauscht werden. Die Seife ist nur das Dokument, in dem die Daten auf irgendeine Weise organisiert sind. Für jede Anfrage und Antwort kann eine separate Seife vorhanden sein.
WSDL: In Soap sind die Daten auf irgendeine Weise organisiert und diese Organisation ist in WSDL angegeben. Hier wird auch der Datentyp angegeben, der verwendet werden muss. Für Anfrage und Antwort ist eine einzelne WSDL vorhanden
quelle
Die WSDL ist eine Art Vertrag zwischen dem API-Anbieter und dem Client. Sie beschreibt den Webdienst: die öffentliche Funktion, das optionale / erforderliche Feld ...
Die Seifennachricht ist jedoch eine Datenübertragung zwischen Client und Anbieter (Nutzlast).
quelle
WSDL fungiert als Schnittstelle zwischen Sender und Empfänger.
SOAP-Nachricht ist Anforderung und Antwort im XML-Format.
Vergleich mit Java RMI
WSDL ist die Schnittstellenklasse.
SOAP-Nachricht ist eine gemarshallte Anforderungs- und Antwortnachricht.
quelle
Wir können einen Telefonanruf in Betracht ziehen. Diese Nummer ist wsdl und der Informationsaustausch ist Seife.
WSDL beschreibt, wie eine Verbindung zum Kommunikationsserver hergestellt wird. SOAP enthält Kommunikationsnachrichten.
quelle