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.
Wie funktionieren Webdienste?
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:
POST /InStock HTTP/1.1
Host: www.bookshop.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.bookshop.org/prices">
<m:GetBookPrice>
<m:BookName>The Fleamarket</m:BookName>
</m:GetBookPrice>
</soap:Body>
</soap:Envelope>
SOAP-Antwort:
POST /InStock HTTP/1.1
Host: www.bookshop.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.bookshop.org/prices">
<m:GetBookPriceResponse>
<m: Price>10.95</m: Price>
</m:GetBookPriceResponse>
</soap:Body>
</soap:Envelope>
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 der GetBookPriceResponse
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:
<?xml version="1.0" encoding="UTF-8"?>
<definitions name ="DayOfWeek"
targetNamespace="http://www.roguewave.com/soapworx/examples/DayOfWeek.wsdl"
xmlns:tns="http://www.roguewave.com/soapworx/examples/DayOfWeek.wsdl"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://schemas.xmlsoap.org/wsdl/">
<message name="DayOfWeekInput">
<part name="date" type="xsd:date"/>
</message>
<message name="DayOfWeekResponse">
<part name="dayOfWeek" type="xsd:string"/>
</message>
<portType name="DayOfWeekPortType">
<operation name="GetDayOfWeek">
<input message="tns:DayOfWeekInput"/>
<output message="tns:DayOfWeekResponse"/>
</operation>
</portType>
<binding name="DayOfWeekBinding" type="tns:DayOfWeekPortType">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="GetDayOfWeek">
<soap:operation soapAction="getdayofweek"/>
<input>
<soap:body use="encoded"
namespace="http://www.roguewave.com/soapworx/examples"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output>
<soap:body use="encoded"
namespace="http://www.roguewave.com/soapworx/examples"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
</binding>
<service name="DayOfWeekService" >
<documentation>
Returns the day-of-week name for a given date
</documentation>
<port name="DayOfWeekPort" binding="tns:DayOfWeekBinding">
<soap:address location="http://localhost:8090/dayofweek/DayOfWeek"/>
</port>
</service>
</definitions>
Die wichtigsten Dinge, an die Sie sich bei einer WSDL-Datei erinnern sollten, sind:
Eine Beschreibung eines Webdienstes
Die Methoden, die ein Webdienst verwendet, und die Parameter, die er verwendet
Eine Möglichkeit, Webdienste zu finden