WSDL-Tutorial: Webdienste Description Sprache mit Beispiel

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 letzten Punkt, der den wichtigsten Teil von Webdiensten darstellt, nämlich die WSDL oder die Beschreibungssprache für Webdienste.

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.

Struktur eines WSDL-Dokuments

Ein WSDL-Dokument wird zur Beschreibung eines Webdienstes verwendet. Diese Beschreibung ist erforderlich, damit Clientanwendungen verstehen können, was der Webdienst tatsächlich tut.

  • Die WSDL-Datei enthält den Speicherort des Webdienstes und
  • Die Methoden, die vom Webdienst bereitgestellt werden.

Die WSDL-Datei selbst kann für jeden Benutzer sehr komplex aussehen, sie enthält jedoch alle notwendigen Informationen, die jede Client-Anwendung benötigt, um den entsprechenden Webdienst zu verwenden.

Nachfolgend finden Sie die allgemeine Struktur einer WSDL-Datei

  • Definition
  • TargetNamespace
  • Datentypen
  • Messages
  • Porttyp
  • Bindings

Eine wichtige Sache, die hier zu beachten ist, ist die Definition von Nachrichten, die von der übergeben wird SOAP-Protokoll ist tatsächlich im WSDL-Dokument definiert.

Das WSDL-Dokument teilt einer Clientanwendung tatsächlich mit, welche Arten von SOAP-Nachrichten gesendet und vom Webdienst akzeptiert werden.

Mit anderen Worten, die WSDL ist wie eine Postkarte, die die Adresse eines bestimmten Ortes enthält. Die Adresse enthält die Details der Person, die die Postkarte zugestellt hat. Daher ist die WSDL-Datei in gleicher Weise die Postkarte, die die Adresse des Webdienstes enthält, der alle vom Kunden 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>

Unten sehen Sie ein Diagramm der Struktur einer WSDL-Datei

Struktur eines WSDL-Dokuments
Struktur einer WSDL

WSDL-Elemente

Die WSDL-Datei enthält die folgenden Hauptteile

  1. Der Tag wird verwendet, um alle komplexen Datentypen zu definieren, die in der zwischen der Client-Anwendung und dem Webdienst ausgetauschten Nachricht verwendet werden. Dies ist ein wichtiger Aspekt der Client-Anwendung, denn wenn der Webdienst mit einem komplexen Datentyp arbeitet, sollte die Client-Anwendung wissen, wie der komplexe Datentyp zu verarbeiten ist. Datentypen wie Float, Zahlen und Zeichenfolgen sind alles einfache Datentypen, es könnte jedoch strukturierte Datentypen geben, die vom Webdienst bereitgestellt werden können.
    Beispielsweise könnte es einen Datentyp namens EmployeeDataType geben, der zwei Elemente namens „EmployeeName“ vom Typ Zeichenfolge und „EmployeeID“ vom Typ Zahl oder Ganzzahl haben könnte. Zusammen bilden sie eine Datenstruktur, die dann zu einem komplexen Datentyp wird.
  2. Der Tag wird verwendet, um die Nachricht zu definieren, die zwischen der Client-Anwendung und dem Webserver ausgetauscht wird. Diese Nachrichten erläutern die Eingabe- und Ausgabevorgänge, die vom Webdienst ausgeführt werden können. Ein Beispiel für eine Nachricht kann eine Nachricht sein, die die EmployeeID eines Mitarbeiters akzeptiert, und die Ausgabenachricht kann der Name des Mitarbeiters basierend auf der bereitgestellten EmpoyeeID sein.
  3. Der 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.
  4. Der Tag wird verwendet, um die Operation an den bestimmten Porttyp zu binden. Dies ist so, dass die Client-Anwendung, wenn sie den entsprechenden Porttyp aufruft, auf die Operationen zugreifen kann, die an diesen Porttyp gebunden sind. Porttypen sind genau wie Schnittstellen. Wenn eine Client-Anwendung also einen Webdienst verwenden muss, muss sie die Bindungsinformationen verwenden, um sicherzustellen, dass sie eine Verbindung mit der von diesem Webdienst bereitgestellten Schnittstelle herstellen kann.
  5. Der Tag ist ein Name, der dem Webdienst selbst gegeben wird. Wenn eine Clientanwendung zunächst den Webdienst aufruft, ruft sie zunächst den Namen des Webdiensts auf. Beispielsweise kann sich ein Webdienst unter einer Adresse wie befinden http://localhost/Guru99/Tutorial.asmx . Für das Service-Tag ist tatsächlich die URL definiert als http://localhost/Guru99/Tutorial.asmx, wodurch die Clientanwendung tatsächlich darüber informiert wird, dass an diesem Standort ein Webdienst verfügbar ist.

Warum WSDL

Ein Webdienst ist eine wichtige Komponente bei der Erstellung moderner Webanwendungen. Ihr Hauptzweck besteht darin, mehreren Anwendungen, die auf verschiedenen Programmiersprachen basieren, die Kommunikation miteinander zu ermöglichen. Beispielsweise können wir eine .Net-Webanwendung mit einem sprechen lassen Java Anwendung über einen Webservice.

Ein Webdienst verfügt über die folgenden Hauptfunktionen

  • Es wird mit der Programmiersprache XML erstellt. 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 einfach sinnvoll sicherzustellen, dass Webdienste auch über das HTTP-Protokoll funktionieren können.
  • 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 im einfachen alten XML geschrieben. Der Grund dafür, dass es sich um XML handelt, besteht darin, dass die Datei von jeder Programmiersprache gelesen werden kann.

Wenn die Client-Anwendung also in .Net geschrieben wurde, würde sie die XML-Datei verstehen. Wenn die Client-Anwendung in .Net geschrieben wurde, würde sie die XML-Datei verstehen. Java Programmiersprache, dann wäre es auch in der Lage, die WSDL-Datei zu interpretieren.

Brauche WSDL

Die WSDL-Datei ist das, was alles zusammenhält. Aus dem obigen Diagramm können Sie ersehen, dass Sie einen Webdienst in der .Net-Sprache erstellen können.

Hier wird der Dienst implementiert. Wenn Sie die WSDL-Datei nicht haben und eine Java Klasse, um den Webdienst zu nutzen. Hierzu wäre ein hoher Programmieraufwand erforderlich.

Aber jetzt mit der WSDL-Datei in XML, die von jeder Programmiersprache verstanden werden kann, können Sie jetzt ganz einfach eine 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 wird im Wesentlichen zur Beschreibung der Daten verwendet, die zwischen dem Webdienst und der Clientanwendung ausgetauscht werden.

Jeder Webdienst verfügt immer ü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 dafür, wie eine Nachricht für einen Webdienst aussieht. Die Funktionalität des Webdienstes besteht darin, den Namen eines „Tutorials“ bereitzustellen, sobald eine „Tutorial-ID“ als Parameter an den Webdienst übermittelt wird.

WSDL-Nachrichtenteil

  1. Wie wir sehen können, verfügt der Webdienst über zwei Nachrichten, eine für die Eingabe und eine für die Ausgabe.
  2. Die Eingabenachricht heißt TutorialNameRequest und verfügt über einen Parameter namens TutorialID. Dieser Parameter ist vom Typ Nummer, der durch den Typ xsd:number angegeben wird
  3. Die Ausgabenachricht heißt TutorialNameResponse und verfügt über einen Parameter namens TutorialName. Dieser Parameter ist vom Typ string, der durch den Typ xsd:string angegeben wird

Porttypbindung

Ports werden in WSDL verwendet, um einen vollständigen Vorgang zu definieren, der vom Webdienst angeboten wird.

Im vorherigen Thema haben wir gesehen, dass unser Webdienst zwei Nachrichten bereitstellt, eine für die Eingabe namens „TutorialNameRequest“ und die andere für die Ausgabe namens „TutorialNameResponse“. Zusammen wird die Form der Eingabe- und Ausgabenachrichten als eine vollständige Operation bezeichnet.

WSDL stellt ein Element namens bereit welches zum Definieren der vom Webdienst bereitgestellten Operationen verwendet wird.

Porttypbindung

In unserem obigen Beispiel können wir also Folgendes feststellen:

  1. Der Name des Porttyps, der die Operation kapselt, wird als „Tutorial_PortType“ angegeben.
  2. Die Operation selbst erhält den Namen „Tutorial“. Unsere Operation liefert also grundsätzlich einen TutorialName, wenn die TutorialID als Eingabeparameter angegeben wird.
  3. Als nächstes kommen 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.

Porttypbindung

  1. Das obige Beispiel zeigt, dass die Bindung aus einem Bindungsnamen besteht, der in unserem Fall „TutorialSoapBinding“ lautet. Einfach ausgedrückt ist Bindung die Information, die die Client-Anwendung verwendet, um sich tatsächlich an den Webdienst zu binden. Sobald sie tatsächlich an den Webdienst gebunden ist, kann sie die verschiedenen Operationen aufrufen, die vom Webdienst bereitgestellt werden.
  2. 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 erstellt wird.

Da die WSDL-Datei ziemlich kompliziert ist, wenn sie von Grund auf neu erstellt wird, können alle Editoren wie Visual Studio für .Net und 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 sieht für jeden Benutzer sehr einschüchternd aus. Wir werden die verschiedenen Teile in den folgenden Tutorials ausführlich behandeln. Lassen Sie uns zunächst einen zusammenfassenden Blick darauf werfen, was jeder Abschnitt der WSDL-Datei tatsächlich bewirkt

Veröffentlichen des Webdienst-Beispiels

Sehen wir uns nun ein Beispiel an, wie wir mit Visual Studio einen Webdienst veröffentlichen und nutzen können.

In diesem Beispiel erstellen wir einen Webdienst mit einer WebMethod. Diese Methode akzeptiert einen Integer-Parameter namens „TutorialID“. Die Web-Methode gibt dann eine Zeichenfolge 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 zur Durchführung dieses Beispiels erforderlich sind.

Schritt 1) Der erste Schritt besteht darin, Ihren Webdienst zu erstellen. Die detaillierten Schritte, wie die Asp.Net Es wurde erläutert, wie ein Webprojekt erstellt und ein Webdienst erstellt wird Hier; Bitte befolgen Sie die gleichen Schritte, um das Projekt und den Webdienst entsprechend zu erstellen. Der wichtigste Teil besteht darin, den folgenden Code in die Web-Services-Datei einzugeben.

Veröffentlichen des Webdienst-Beispiels

namespace webservic asmx
{
	[WebService(Name = "Guru99 Web service")]
	public class TutorialService : System.Web.Services.WebService
	{
		[WebMethod]
		public string GetTutorialService(int TutoriallD)
		{
			string TutorialName = "Web Services";
			return TutorialName;
		}
	}
}

Code-Erklärung:

  1. Hier erstellen wir eine WebMethod namens „Guru99WebService“. In diese Webmethode fügen wir einen ganzzahligen Parameter ein, der bei jedem Aufruf dieser Webmethode übergeben werden muss.
  2. 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, den „Guru99WebService“ aufruft und dann die Ausgabe der Webmethode im Konsolenprotokollbildschirm anzeigt. Führen Sie die folgenden Schritte aus, um eine Konsolenanwendung zu erstellen.

Klicken Sie mit der rechten Maustaste auf die Visual Studio-Lösungsdatei und wählen Sie die Option Hinzufügen->Neues Projekt

Veröffentlichen des Webdienst-Beispiels

Schritt 3) In diesem Schritt

  1. Stellen Sie sicher, dass Sie zuerst das Visuelle auswählen C# Windows Möglichkeit. Wählen Sie dann die Option zum Erstellen einer Konsolenanwendung.
  2. Geben Sie Ihrem Projekt einen Namen, in unserem Fall „DemoApplication“.

Veröffentlichen des Webdienst-Beispiels

Nachdem Sie im obigen Bildschirm auf die Schaltfläche „OK“ geklickt haben, können Sie das Projekt im Projektmappen-Explorer in Visual Studio sehen.

Veröffentlichen des Webdienst-Beispiels

Schritt 4) In diesem Schritt legen Sie die DemoApplication-Konsolenanwendung als Startprojekt fest. Dadurch wird sichergestellt, dass diese Anwendung zuerst gestartet wird, wenn das gesamte Visual Studio-Projekt ausgeführt wird. Diese Konsolenanwendung ruft wiederum den Webdienst auf, der automatisch von Visual Studio gestartet wird.

Um diesen Schritt abzuschließen, klicken Sie mit der rechten Maustaste auf das DemoApplication-Projekt und wählen Sie die Option „Als StartUp-Projekt festlegen“.

Veröffentlichen des Webdienst-Beispiels

Schritt 5) Der nächste Schritt besteht darin, die Servicereferenz unseres „Guru99Webservice“ zu unserer Konsolenanwendung hinzuzufügen. Dies geschieht, damit die DemoApplication auf den Webdienst und alle Webmethoden im Webdienst verweisen kann.

Klicken Sie dazu mit der rechten Maustaste auf die DemoApplication-Projektdatei und wählen Sie die Menüoption Hinzufügen->Dienstreferenz.

Veröffentlichen des Webdienst-Beispiels

Schritt 6) In diesem Schritt stellen wir die verschiedenen Werte bereit, die zum Hinzufügen unserer Servicereferenz erforderlich sind

  1. Zuerst müssen wir unsere Entdeckungsoption auswählen. Diese Option ruft automatisch die WSDL-Datei für unseren TutorialService-Webdienst ab.
  2. Als nächstes sollten wir einen Namen für unsere Servicereferenz vergeben. In unserem Fall geben wir ihm den Namen Guru99Webservice.
  3. Dann müssen wir die Option TutorialService.asmx erweitern, damit wir die Methode „GetTutorialService“ auf der rechten Seite sehen können. Hier ist TutorialService.asmx der Name unserer Visual Studio .Net-Datei, die den Code für unseren Webdienst enthält.
  4. Wir sehen dann unsere Webmethode, die wir in unserem Webdienst namens „GetTutorialService“ hatten.

Veröffentlichen des Webdienst-Beispiels

Wenn wir auf die Schaltfläche „OK“ klicken, wird der gesamte für den Zugriff auf diesen Webdienst erforderliche Code zu unserer DemoApplication Console-Anwendung hinzugefügt, wie unten gezeigt.

Der Screenshot zeigt, dass der „Guru99Webservice“ erfolgreich zu unserer Konsolenanwendung hinzugefügt wurde.

Veröffentlichen des Webdienst-Beispiels

Schritt 7) Der nächste Schritt besteht darin, den Code zu unserer Konsolenanwendung hinzuzufügen, um auf die Webmethode in unserem Webdienst zuzugreifen. Öffnen Sie die Codedatei Program.cs, die automatisch mit der Konsolenanwendung geliefert wird, und fügen Sie den folgenden Code hinzu

Veröffentlichen des Webdienst-Beispiels

namespace DemoApplication
{
	class Program
	{
		static void Main(string[ ] args)
		{
			var client = new Guru99Webservice.Guru99WebserviceSoapClient();

			Console.WriteLine(client.GetTutorialService(l));
			
			Console.ReadKey();
		}
	}
}

Code-Erklärung:-

  1. Der erste Teil besteht darin, die Datei Program.cs auszuwählen. Dies ist die Hauptdatei, die von Visual Studio erstellt wird, wenn eine Konsolenanwendung erstellt wird. Diese Datei wird ausgeführt, wenn die Konsolenanwendung (in unserem Fall die Demoanwendung) ausgeführt wird.
  2. Anschließend erstellen wir eine Variable namens „client“, die auf eine Instanz unserer Service-Referenz gesetzt wird, die in einem früheren Schritt erstellt wurde. In unserem Fall lautet die Dienstreferenz „Guru99Webservice.Guru99WebserviveSoapClient()“.
  3. Anschließend rufen wir unsere Webmethode „GetTutorialService“ im TutorialService-Webdienst auf. Denken Sie daran, dass unsere GetTutorialService-Methode einen ganzzahligen Parameter akzeptiert, wir übergeben also lediglich einen ganzzahligen Parameter an die Webmethode.
  4. Diese letzte Zeile dient nur dazu, sicherzustellen, dass der Konsolenprotokollbildschirm aktiv bleibt, damit wir die Ausgabe sehen können. Dieser Befehl wartet lediglich auf eine Eingabe des Benutzers.

Ausgang

Wenn alle oben genannten Schritte befolgt und die Demoanwendung ausgeführt wird, wird die folgende Ausgabe angezeigt.

Veröffentlichen des Webdienst-Beispiels

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.

Zusammenfassung

  • Die vollständige Form von WSDL lautet Web Services. Description Sprache
  • Ein WSDL-Dokument ist ein Dokument, das zur Beschreibung eines Webdienstes verwendet wird. Dies ist für jede Clientanwendung von entscheidender Bedeutung, um zu wissen, wo sich der Webdienst befindet. Außerdem kann die Clientanwendung dadurch die im Webdienst verfügbaren Methoden verstehen.
  • Durch die WSDL-Datei lässt sich der Webservice sehr einfach in einer Programmiersprache implementieren und aus einer anderen Programmiersprache aufrufen.
  • Das WSDL-Dokument besteht normalerweise aus einer Nachricht. Für jede Webmethode gibt es zwei Nachrichten, eine für die Eingabe und die andere für die Ausgabe. Zusammen bilden sie eine Operation.
  • Web Services Description Language (steht für WSDL)-Dateien werden normalerweise im Editor erstellt, der für die entsprechende Programmiersprache verwendet wird.
  • Wir haben gesehen, wie wir einen Webdienst in Visual Studio nutzen können. Dies kann durch die Erstellung eines weiteren Projekts erfolgen, bei dem es sich um eine Konsolenanwendung handelt. Durch Hinzufügen einer Dienstreferenz können wir dann auf die Webmethoden in unserem Webdienst zugreifen.