Was ist WSDL? Bedeutung & Beispiel
⚡ Intelligente Zusammenfassung
WSDL (Webdienste DescriptWSDL (Web Service Data Language) ist eine XML-basierte Datei, die einer Clientanwendung die Funktion eines Webdienstes und dessen Aufruf beschreibt. Diese Ressource erläutert die WSDL-Struktur, Elemente, Nachrichten, Porttypen, Bindungen und ein Veröffentlichungsbeispiel.
Was ist WSDL?
Web Services Description Sprache (WSDL) ist eine XML-basierte Datei, die der Clientanwendung grundsätzlich mitteilt, was der Webdienst tut. Die WSDL-Datei wird verwendet, um kurz und bündig zu beschreiben, was der Webdienst tut, und stellt dem Client alle Informationen bereit, die er benötigt, um eine Verbindung zum Webdienst herzustellen und alle vom Webdienst bereitgestellten Funktionen zu nutzen.
In diesem Tutorial konzentrieren wir uns auf den wichtigsten Teil von Webdiensten, nämlich die WSDL oder Web Services. Descriptionische Sprache. Sie fungiert als die Verbindungtract zwischen dem Webdienst und jedem Client, der ihn nutzen möchte.
Struktur eines WSDL-Dokuments
Ein WSDL-Dokument dient zur Beschreibung eines Webdienstes. Diese Beschreibung ist erforderlich, damit Clientanwendungen verstehen können, was der Webdienst tatsächlich leistet.
- Die WSDL-Datei enthält den Speicherort des Webdienstes, und
- Die Methoden, die vom Webdienst bereitgestellt werden.
Die WSDL-Datei selbst mag für jeden Benutzer sehr komplex erscheinen, enthält aber alle notwendigen Informationen, die eine Clientanwendung zur Nutzung des entsprechenden Webdienstes benötigt. Nachfolgend ist die allgemeine Struktur einer WSDL-Datei dargestellt:
- Definition
- TargetNamespace
- Datentypen
- Messages
- Porttyp
- Bindings
- Service
Wichtig ist hierbei, dass die Definition von Nachrichten, also das, was von der SOAP-ProtokollDie Definition von SOAP-Nachrichten findet sich im WSDL-Dokument. Dieses Dokument teilt der Clientanwendung mit, welche Arten von SOAP-Nachrichten vom Webdienst gesendet und empfangen werden.
Anders ausgedrückt: Die WSDL-Datei ist wie eine Postkarte mit der Adresse eines bestimmten Ortes. Diese Adresse enthält die Details, wohin die Nachricht zugestellt werden soll. Genauso ist die WSDL-Datei die Postkarte mit der Adresse des Webdienstes, der alle vom Client gewünschten Funktionen bereitstellen kann.
<!-- WSDL definition structure --> <definitions name="Guru99Service" targetNamespace=http://example.org/math/ xmlns=http://schemas.xmlsoap.org/wsdl/> <!-- abstract definitions --> <types> ... <message> ... <portType> ... <!-- concrete definitions --> <binding> ... <service> ... </definition>
Nachfolgend ein Diagramm der Struktur einer WSDL-Datei.
Struktur einer WSDL
WSDL-Elemente
Die WSDL-Datei enthält folgende Hauptbestandteile:
- Das Das Tag dient zur Definition aller komplexen Datentypen, die in den zwischen Clientanwendung und Webdienst ausgetauschten Nachrichten verwendet werden. Dies ist wichtig, da die Clientanwendung wissen muss, wie komplexe Datentypen zu verarbeiten sind, wenn der Webdienst mit ihnen arbeitet. Datentypen wie Gleitkommazahlen, Zahlen und Zeichenketten sind einfache Datentypen, der Webdienst kann jedoch auch strukturierte Datentypen bereitstellen. Beispielsweise könnte es einen Datentyp namens „EmployeeDataType“ geben, der zwei Elemente enthält: „EmployeeName“ vom Typ Zeichenkette und „EmployeeID“ vom Typ Zahl oder Ganzzahl. Zusammen bilden sie einen komplexen Datentyp.
- Das Das Tag dient zur Definition der Nachricht, die zwischen Client-Anwendung und Webserver ausgetauscht wird. Diese Nachrichten beschreiben die vom Webdienst durchführbaren Ein- und Ausgabevorgänge. Beispielsweise kann eine Nachricht die Mitarbeiter-ID eines Mitarbeiters entgegennehmen und als Ausgabe den Namen des Mitarbeiters basierend auf der angegebenen Mitarbeiter-ID zurückgeben.
- Das Tag wird verwendet, um jede Eingabe- und Ausgabenachricht in eine logische Operation zu kapseln. So könnte es eine Operation namens „GetEmployee“ geben, die die Eingabenachricht kombiniert, die EmployeeID von einer Clientanwendung zu akzeptieren und dann den EmployeeName als Ausgabenachricht zu senden.
- Das Ein Tag dient dazu, eine Operation an einen bestimmten Porttyp zu binden. Dadurch kann die Clientanwendung beim Aufruf des entsprechenden Porttyps auf die zugehörigen Operationen zugreifen. Porttypen sind vergleichbar mit Schnittstellen. Wenn eine Clientanwendung also einen Webdienst nutzen möchte, benötigt sie die Bindungsinformationen, um die Verbindung zur vom Webdienst bereitgestellten Schnittstelle herzustellen.
- Das Ein Tag ist der Name, der dem Webdienst selbst gegeben wird. Wenn eine Clientanwendung den Webdienst aufruft, verwendet sie zunächst dessen Namen. Beispielsweise kann ein Webdienst unter einer Adresse wie http://localhost/ erreichbar sein.Guru99/Tutorial.asmx. Das Service-Tag wird Folgendes enthalten: URL definiert, wodurch die Clientanwendung darüber informiert wird, dass an diesem Ort ein Webdienst verfügbar ist.
Warum WSDL
Ein Webdienst ist eine wichtige Komponente beim Erstellen moderner Webanwendungen. Sein Hauptzweck besteht darin, die Kommunikation zwischen mehreren Anwendungen zu ermöglichen, die in verschiedenen Programmiersprachen geschrieben wurden. Beispielsweise kann eine .NET-Webanwendung mit einem anderen Dienst kommunizieren. Java Anwendung über einen Webservice.
Ein Webdienst verfügt über folgende Hauptmerkmale:
- Es wurde mit der Programmiersprache XML entwickelt. Fast alle modernen Technologien wie .NET und Java verfügen über entsprechende Befehle, die mit XML arbeiten können. Daher wurde XML als die am besten geeignete Sprache zum Erstellen von Webdiensten angesehen.
- Webdienste kommunizieren über HTTP. HTTP ist ein Protokoll, das von allen webbasierten Anwendungen verwendet wird. Daher war es sinnvoll sicherzustellen, dass Webdienste ebenfalls über das HTTP-Protokoll funktionieren.
- Webdienste entsprechen einer bestimmten Sprachspezifikation. Diese Spezifikation wird vom W3C festgelegt, dem Dachgremium für alle Webstandards.
- Webdienste verfügen über eine Beschreibungssprache namens WSDL, die zur Beschreibung des Webdienstes verwendet wird.
Die WSDL-Datei ist in reinem XML geschrieben. Der Grund dafür ist, dass die Datei von jeder Programmiersprache gelesen werden kann. Wenn die Clientanwendung also in .NET geschrieben wurde, kann sie die XML-Datei verstehen. Ebenso kann die Clientanwendung, wenn sie in einer anderen Programmiersprache geschrieben wurde, die WSDL-Datei lesen. Java Wenn es sich um eine Programmiersprache handelt, dann wäre sie auch in der Lage, die WSDL-Datei zu interpretieren.
Die WSDL-Datei ist das Bindeglied zwischen allen Komponenten. Aus dem obigen Diagramm geht hervor, dass Sie einen Webdienst in der .NET-Sprache erstellen können. Hier wird der Dienst also implementiert. Wenn Sie keine WSDL-Datei hätten und einen Webdienst wollten, … Java Um eine Klasse zu erstellen, die den Webdienst nutzt, wäre ein erheblicher Programmieraufwand erforderlich. Mit der WSDL-Datei, die im XML-Format vorliegt und von jeder Programmiersprache verstanden werden kann, lässt sich dies jedoch problemlos realisieren. Java Klasse nutzt den .Net-Webdienst. Daher wird der Codierungsaufwand erheblich reduziert.
WSDL-Nachrichtenteil
Die WSDL besteht aus einem Abschnitt namens „Nachrichten“, der mit dem gekennzeichnet ist Element. Dieses Element dient im Wesentlichen dazu, die Daten zu beschreiben, die zwischen dem Webdienst und der Clientanwendung ausgetauscht werden.
Jeder Webdienst verfügt stets über zwei Arten von Nachrichten:
- Einer ist für die Eingabe des Webdienstes und der andere für die Ausgabe des Webdienstes.
- Die Eingabe dient zur Beschreibung der Parameter, die vom Webservice akzeptiert werden. Dies ist ein wichtiger Aspekt der Clientanwendung, damit sie die Werte kennt, die als Parameter an den Webdienst gesendet werden sollen.
- Der andere Nachrichtentyp ist die Ausgabenachricht, die angibt, welche Ergebnisse der Webdienst liefert.
Jede Nachricht wird wiederum eine haben Element, das zur Beschreibung des von der Eingabe- und Ausgabenachricht verwendeten Parameters verwendet wird.
Nachfolgend finden Sie ein einfaches Beispiel für eine Nachricht an einen Webdienst. Die Funktion des Webdienstes besteht darin, den Namen eines „Tutorials“ bereitzustellen, sobald eine „Tutorial-ID“ als Parameter an den Webdienst übermittelt wird.
- Wie wir sehen können, verfügt der Webdienst über 2 Nachrichten, eine für die Eingabe und die andere für die Ausgabe.
- Die Eingabenachricht heißt TutorialNameRequest und hat einen Parameter namens TutorialID. Dieser Parameter ist vom Typ Zahl und wird durch den Typ xsd:number spezifiziert.
- Die Ausgabenachricht heißt TutorialNameResponse und hat einen Parameter namens TutorialName. Dieser Parameter ist vom Typ String, der durch den Typ xsd:string spezifiziert wird.
Porttypbindung
Ports werden in WSDL verwendet, um eine vollständige Operation zu definieren, die vom Webdienst angeboten wird. Im vorherigen Abschnitt haben wir gesehen, dass unser Webdienst zwei Nachrichten bereitstellt: eine für die Eingabe namens „TutorialNameRequest“ und eine für die Ausgabe namens „TutorialNameResponse“. Zusammen bilden die Eingabe- und Ausgabenachricht eine vollständige Operation.
WSDL stellt ein Element namens bereit welches zum Definieren der vom Webdienst bereitgestellten Operationen verwendet wird.
In unserem obigen Beispiel können wir also Folgendes feststellen:
- Der Name des Porttyps, der die Operation kapselt, lautet „Tutorial_PortType“.
- Die Operation selbst trägt den Namen „Tutorial“. Unsere Operation liefert also im Grunde einen TutorialName, wenn die TutorialID als Eingabeparameter angegeben wird.
- Als Nächstes folgen unsere 2 Nachrichten, eine für die Eingabe und die andere für die Ausgabe, die unsere Operation bilden.
Neben der Element, es gibt auch das Element, das verwendet wird, um zu definieren, wie die Nachrichten übertragen werden.
- Das obige Beispiel zeigt, dass die Bindung aus einem Bindungsnamen besteht, der in unserem Fall „TutorialSoapBinding“ lautet. Vereinfacht ausgedrückt sind Bindungen die Informationen, die die Clientanwendung verwendet, um sich mit dem Webdienst zu verbinden. Sobald die Verbindung hergestellt ist, kann die Anwendung die verschiedenen vom Webdienst bereitgestellten Operationen aufrufen.
- Die Transportschicht wird als http:// angegeben, was bedeutet, dass die Nachrichten über das HTTP-Protokoll übertragen werden.
WSDL-Datei erstellen
Die WSDL-Datei wird immer dann erstellt, wenn ein Webdienst in einer beliebigen Programmiersprache entwickelt wird. Da die Generierung einer WSDL-Datei von Grund auf recht komplex ist, verwenden alle Editoren wie Visual Studio für .NET und Co. Eclipse für Java die WSDL-Datei automatisch erstellen.
Unten sehen Sie ein Beispiel für eine in Visual Studio erstellte WSDL-Datei.
<?xml version="1.0"?> <definitions name="Tutorial" targetNamespace=http://Guru99.com/Tutorial.wsdl xmlns:tns=http://Guru99.com/Tutorial.wsdl xmlns:xsd1=http://Guru99.com/Tutorial.xsd xmlns:soap=http://schemas.xmlsoap.org/wsdl/soap/ xmlns="http://schemas.xmlsoap.org/wsdl/"> <types> <schema targetNamespace=http://Guru99.com/Tutorial.xsd xmlns="http://www.w3.org/2000/10/XMLSchema"> <element name="TutorialNameRequest"> <complexType> <all> <element name="TutorialName" type="string"/> </all> </complexType> </element> <element name="TutorialIDRequest"> <complexType> <all> <element name="TutorialID" type="number"/> </all> </complexType> </element> </schema> </types> <message name="GetTutorialNameInput"> <part name="body" element="xsd1:TutorialIDRequest"/> </message> <message name="GetTutorialNameOutput"> <part name="body" element="xsd1:TutorialNameRequest"/> </message> <portType name="TutorialPortType"> <operation name="GetTutorialName"> <input message="tns:GetTutorialNameInput"/> <output message="tns:GetTutorialNameOutput"/> </operation> </portType> <binding name="TutorialSoapBinding" type="tns:TutorialPortType"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="GetTutorialName"> <soap:operation soapAction="http://Guru99.com/GetTutorialName"/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> </binding> <service name="TutorialService"> <documentation>TutorialService</documentation> <port name="TutorialPort" binding="tns:TutorialSoapBinding"> <soap:address location="http://Guru99.com/Tutorial"/> </port> </service> </definitions>
Die obige WSDL-Datei wirkt auf den ersten Blick sehr komplex. Wir werden die einzelnen Bestandteile in den folgenden Tutorials detailliert behandeln, aber zunächst werfen wir einen kurzen Blick darauf, was die einzelnen Abschnitte der WSDL-Datei bewirken.
Veröffentlichen des Webdienst-Beispiels
Betrachten wir nun ein Beispiel, wie wir einen Webdienst veröffentlichen und mit Visual Studio nutzen können. In diesem Beispiel erstellen wir einen Webdienst mit einer Webmethode. Diese Methode akzeptiert einen Integer-Parameter namens „TutorialID“ und gibt anschließend eine Zeichenkette namens „Web Services“ zurück.
Anschließend erstellen wir eine konsolenbasierte Anwendung, die diesen Webdienst nutzt und unsere Webmethode entsprechend aufruft. Schauen wir uns die Schritte an, die für dieses Beispiel erforderlich sind.
Schritt 1) Der erste Schritt besteht darin, Ihren Webdienst zu erstellen. Die detaillierten Schritte, wie die Asp.Net Es wurde erläutert, dass ein Webprojekt und ein Webdienst erstellt wurden. werden auf dieser Seite erläutertBitte führen Sie die gleichen Schritte aus, um das Projekt und den Webdienst entsprechend zu erstellen. Wichtig ist, dass Sie den unten stehenden Code in die Webdienste-Datei einfügen.
namespace webservic_asmx { [WebService(Name = "Guru99 Web service")] public class TutorialService : System.Web.Services.WebService { [WebMethod] public string GetTutorialService(int TutorialID) { string TutorialName = "Web Services"; return TutorialName; } } }
Code Erläuterung:
- Hier erstellen wir eine Webmethode namens „Guru99WebService." In dieser Webmethode fügen wir einen Integer-Parameter hinzu, der bei jedem Aufruf dieser Webmethode übergeben werden muss.
- Als Nächstes definieren wir eine Variable namens „TutorialName“, die den Zeichenfolgenwert „Web Services“ enthält. Dies ist der Wert, der zurückgegeben wird, wenn der Webdienst aufgerufen wird.
Schritt 2) Nachdem wir die Webdienstdatei definiert haben, besteht der nächste Schritt darin, ein Clientprojekt zu erstellen, das diesen Webdienst nutzt. Erstellen wir eine einfache Konsolenanwendung, die diesen Webdienst aufruft und die Funktion „“ ausführt.Guru99WebService“ und zeigen Sie anschließend die Ausgabe der Webmethode im Konsolenprotokoll an. Führen Sie die folgenden Schritte aus, um eine Konsolenanwendung zu erstellen. Klicken Sie mit der rechten Maustaste auf die Visual Studio-Projektmappendatei und wählen Sie die Option Hinzufügen -> Neues Projekt.
Schritt 3) In diesem Schritt
- Stellen Sie sicher, dass Sie zuerst das Visuelle auswählen C# Windows Möglichkeit. Wählen Sie dann die Option zum Erstellen einer Konsolenanwendung.
- Geben Sie Ihrem Projekt einen Namen, in unserem Fall „DemoApplication“.
Nachdem Sie im obigen Bildschirm auf die Schaltfläche „OK“ geklickt haben, können Sie das Projekt im Projektmappen-Explorer von Visual Studio sehen.
Schritt 4) In diesem Schritt legen Sie die DemoApplication-Konsolenanwendung als Startprojekt fest. Dadurch wird sichergestellt, dass diese Anwendung beim Start des gesamten Visual Studio-Projekts als erstes ausgeführt wird. Die Konsolenanwendung ruft dann den Webdienst auf, der automatisch von Visual Studio gestartet wird. Klicken Sie dazu mit der rechten Maustaste auf das Projekt „DemoApplication“ und wählen Sie die Option „Als Startprojekt festlegen“.
Schritt 5) Der nächste Schritt besteht darin, die Servicereferenz unseres „GuruFügen Sie Ihrer Konsolenanwendung den Webdienst „99Webservice“ hinzu. Dadurch kann die Demoanwendung auf den Webdienst und alle darin enthaltenen Webmethoden zugreifen. Klicken Sie dazu mit der rechten Maustaste auf die Projektdatei der Demoanwendung und wählen Sie im Menü „Hinzufügen“ → „Dienstverweis“.
Schritt 6) In diesem Schritt geben wir die verschiedenen Werte an, die zum Hinzufügen unserer Servicereferenz erforderlich sind.
- Zunächst müssen wir unsere Erkennungsoption auswählen. Diese Option wählt automatisch die WSDL-Datei für unseren Webdienst TutorialService aus.
- Als Nächstes sollten wir unserer Servicereferenz einen Namen geben. In unserem Fall nennen wir sie „Servicereferenz“. Guru99Webservice.
- Anschließend müssen wir die Option „TutorialService.asmx“ erweitern, um die Methode „GetTutorialService“ auf der rechten Seite anzuzeigen. Hierbei ist „TutorialService.asmx“ der Name unserer Visual Studio .NET-Datei, die den Code für unseren Webdienst enthält.
- Anschließend werden wir unsere Webmethode betrachten, die wir in unserem Webdienst unter dem Namen „GetTutorialService“ implementiert haben.
Wenn wir auf die Schaltfläche „OK“ klicken, wird der gesamte erforderliche Code für den Zugriff auf diesen Webdienst unserer DemoApplication Console-Anwendung hinzugefügt, wie unten dargestellt. Der Screenshot zeigt, dass die „Guru„99Webservice“ wurde erfolgreich zu unserer Konsolenanwendung hinzugefügt.
Schritt 7) Im nächsten Schritt fügen wir den Code zu unserer Konsolenanwendung hinzu, um auf die Webmethode unseres Webdienstes zuzugreifen. Öffnen Sie die Datei „Program.cs“, die automatisch mit der Konsolenanwendung mitgeliefert wird, und fügen Sie den unten stehenden Code ein.
namespace DemoApplication { class Program { static void Main(string[] args) { var client = new Guru99Webservice.Guru99WebserviceSoapClient(); Console.WriteLine(client.GetTutorialService(1)); Console.ReadKey(); } } }
Code Erläuterung:
- Im ersten Schritt wählen Sie die Datei „Program.cs“ aus. Dies ist die Hauptdatei, die von Visual Studio beim Erstellen einer Konsolenanwendung generiert wird. Diese Datei wird ausgeführt, wenn die Konsolenanwendung (in unserem Fall „DemoApplication“) gestartet wird.
- Anschließend erstellen wir eine Variable namens „client“, die auf eine Instanz unserer Dienstreferenz gesetzt wird, die in einem vorherigen Schritt erstellt wurde. In unserem Fall ist die Dienstreferenz „Guru99Webservice.Guru99WebserviceSoapClient()'.
- Anschließend rufen wir unsere Webmethode „GetTutorialService“ im Webdienst „TutorialService“ auf. Beachten Sie, dass unsere Methode „GetTutorialService“ einen Integer-Parameter akzeptiert; wir übergeben ihr also einfach einen Integer-Parameter.
- Diese letzte Zeile dient lediglich dazu, sicherzustellen, dass die Konsolenausgabe aktiv bleibt, damit wir die Ausgabe sehen können. Dieser Befehl wartet auf eine Benutzereingabe.
Ausgang
Wenn alle oben genannten Schritte befolgt wurden und die DemoApplication ausgeführt wird, wird die unten stehende Ausgabe angezeigt.
Anhand der Ausgabe können wir deutlich erkennen, dass die Demoanwendung unseren Webdienst aufruft und dass der vom Webdienst zurückgegebene String in unserem Konsolenprotokoll angezeigt wird.
















