Samouczek WSDL: Usługi sieciowe DescriptJęzyk jonowy z przykładem

Co to jest WSDL?

Web Services DescriptJęzyk jonowy (WSDL) to plik oparty na języku XML, który w zasadzie informuje aplikację kliencką, co robi usługa internetowa. Plik WSDL służy do opisania w skrócie działania usługi internetowej i dostarcza klientowi wszystkich informacji wymaganych do połączenia się z usługą sieciową i korzystania ze wszystkich funkcjonalności udostępnianych przez usługę sieciową.

W tym samouczku skupimy się na ostatnim punkcie, który jest najważniejszą częścią usług sieciowych, czyli na WSDL, czyli języku opisu usług sieciowych.

Plik WSDL służy do opisania w skrócie działania usługi internetowej i dostarcza klientowi wszystkich informacji wymaganych do połączenia się z usługą sieciową i korzystania ze wszystkich funkcjonalności udostępnianych przez usługę sieciową.

Struktura dokumentu WSDL

Dokument WSDL służy do opisu usługi internetowej. Opis ten jest wymagany, aby aplikacje klienckie mogły zrozumieć, co faktycznie robi usługa sieciowa.

  • Plik WSDL zawiera lokalizację usługi internetowej i
  • Metody udostępniane przez usługę internetową.

Sam plik WSDL może wydawać się użytkownikowi bardzo skomplikowany, ale zawiera on wszystkie niezbędne informacje, których aplikacja kliencka może potrzebować do korzystania z odpowiedniej usługi sieciowej.

Poniżej znajduje się ogólna struktura pliku WSDL

  • Definicja
  • TargetPrzestrzeń nazw
  • Typy danych
  • Wiadomości
  • Typ portu
  • Wiązania
  • usługa

Jedną z kluczowych rzeczy, na którą należy zwrócić uwagę, jest definicja komunikatów przekazywana przez metodę protokół SOAP jest faktycznie zdefiniowany w dokumencie WSDL.

Dokument WSDL faktycznie informuje aplikację kliencką, jakie są typy komunikatów SOAP, które są wysyłane i akceptowane przez usługę internetową.

Innymi słowy, WSDL jest jak pocztówka, która ma adres określonej lokalizacji. Adres zawiera dane osoby, która dostarczyła pocztówkę. Stąd, w ten sam sposób, plik WSDL jest pocztówką, która ma adres usługi sieciowej, która może dostarczyć wszystkie funkcjonalności, jakich chce klient.

<!-- 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>

Poniżej znajduje się schemat struktury pliku WSDL

Struktura dokumentu WSDL
Struktura WSDL

Elementy WSDL

Plik WSDL zawiera następujące główne części

  1. Kurs tag służy do definiowania wszystkich złożonych typów danych, które zostaną użyte w wiadomości wymienianej między aplikacją kliencką a usługą sieciową. Jest to ważny aspekt aplikacji klienckiej, ponieważ jeśli usługa sieciowa działa ze złożonym typem danych, aplikacja kliencka powinna wiedzieć, jak przetworzyć złożony typ danych. Typy danych, takie jak float, numbers i strings, są prostymi typami danych, ale mogą istnieć ustrukturyzowane typy danych, które mogą być dostarczane przez usługę sieciową.
    Na przykład, może istnieć typ danych o nazwie EmployeeDataType, który może mieć 2 elementy o nazwie „EmployeeName” typu string i „EmployeeID” typu number lub integer. Razem tworzą strukturę danych, która następnie staje się złożonym typem danych.
  2. Kurs tag służy do definiowania wiadomości, która jest wymieniana między aplikacją kliencką a serwerem internetowym. Wiadomości te wyjaśniają operacje wejściowe i wyjściowe, które mogą być wykonywane przez usługę internetową. Przykładem wiadomości może być wiadomość akceptująca EmployeeID pracownika, a wiadomość wyjściowa może być imieniem pracownika na podstawie podanego EmpoyeeID.
  3. Kurs tag jest używany do enkapsulacji każdej wiadomości wejściowej i wyjściowej w jedną logiczną operację. Tak więc może istnieć operacja o nazwie „GetEmployee”, która łączy wiadomość wejściową akceptującą EmployeeID z aplikacji klienckiej, a następnie wysyłającą EmployeeName jako wiadomość wyjściową.
  4. Kurs tag jest używany do powiązania operacji z konkretnym typem portu. Jest tak, że gdy aplikacja kliencka wywoła odpowiedni typ portu, będzie mogła uzyskać dostęp do operacji, które są powiązane z tym typem portu. Typy portów są takie same jak interfejsy. Tak więc, jeśli aplikacja kliencka musi użyć usługi sieciowej, musi użyć informacji o powiązaniu, aby upewnić się, że może połączyć się z interfejsem udostępnianym przez tę usługę sieciową.
  5. Kurs tag to nazwa nadana samej usłudze internetowej. Początkowo, gdy aplikacja kliencka wywołuje usługę internetową, robi to poprzez wywołanie nazwy usługi internetowej. Przykładowo serwis internetowy może znajdować się pod adresem np http://localhost/Guru99/Tutorial.asmx . Znacznik usługi będzie faktycznie miał adres URL zdefiniowany jako http://localhost/Guru99/Tutorial.asmx, co w rzeczywistości poinformuje aplikację kliencką, że w tej lokalizacji dostępna jest usługa internetowa.

Dlaczego WSDL

Usługa internetowa jest ważnym elementem tworzenia nowoczesnych aplikacji internetowych. Ich głównym celem jest umożliwienie komunikacji wielu aplikacjom zbudowanym w różnych językach programowania. Na przykład aplikacja internetowa .Net może komunikować się z: Java aplikacji za pośrednictwem usługi internetowej.

Usługa internetowa ma następujące kluczowe cechy

  • Jest zbudowany przy użyciu języka programowania XML. Prawie wszystkie współczesne technologie, takie jak .Net i Java mają odpowiednie polecenia, które mają możliwość pracy z XML. Dlatego też XML został uznany za najbardziej odpowiedni język do tworzenia usług sieciowych.
  • Usługi internetowe komunikują się za pośrednictwem protokołu HTTP. HTTP to protokół używany przez wszystkie aplikacje internetowe. Dlatego sensownym rozwiązaniem było zapewnienie, aby usługi sieciowe mogły także działać poprzez protokół HTTP.
  • Usługi sieciowe odpowiadają określonej specyfikacji językowej. Ta specyfikacja jest ustalana przez W3C, organ zarządzający wszystkimi standardami sieciowymi.
  • Usługi internetowe mają język opisu znany jako WSDL, który jest używany do opisu usługi internetowej.

Plik WSDL jest napisany w zwykłym, starym formacie XML. Powodem, dla którego jest on w formacie XML, jest to, że plik może być odczytany przez dowolny język programowania.

Jeśli więc aplikacja kliencka została napisana w .Net, zrozumiałaby plik XML. Podobnie, jeśli aplikacja kliencka została napisana w formacie Java języka programowania, wówczas byłby w stanie zinterpretować plik WSDL.

Potrzebujesz WSDL

Plik WSDL jest tym, co łączy wszystko w całość. Z powyższego diagramu widać, że można stworzyć usługę WWW w języku .Net.

To tutaj wdrażana jest usługa. Jeśli nie masz pliku WSDL i potrzebujesz pliku Java class do korzystania z usługi internetowej, aby to osiągnąć, potrzebny byłby duży wysiłek związany z kodowaniem.

Ale teraz, dzięki plikowi WSDL w formacie XML, który może być zrozumiały w dowolnym języku programowania, możesz teraz łatwo mieć Java klasa korzysta z usługi internetowej .Net. W związku z tym ilość wysiłku związanego z kodowaniem jest znacznie zmniejszona.

Część wiadomości WSDL

WSDL składa się z sekcji zwanej „wiadomościami”, która jest oznaczona przez elementem.

Ten element jest zasadniczo używany do opisu danych wymienianych pomiędzy usługą internetową a aplikacją kliencką.

Każda usługa internetowa będzie zawsze zawierać 2 rodzaje wiadomości,

  • Jeden służy do wprowadzania danych usługi internetowej, a drugi do danych wyjściowych usługi internetowej.
  • Dane wejściowe służą do opisania parametrów akceptowanych przez serwis WWW. Jest to ważny aspekt aplikacji klienckiej, ponieważ zna ona wartości, które mają zostać przesłane jako parametry do usługi internetowej.
  • Innym typem komunikatu jest komunikat wyjściowy, który informuje, jakie wyniki dostarcza usługa internetowa.

Każda wiadomość z kolei będzie miała element używany do opisu parametru używanego przez komunikat wejściowy i wyjściowy.

Poniżej znajduje się prosty przykład tego, jak wygląda wiadomość dla usługi internetowej. Funkcjonalność usługi internetowej polega na podaniu nazwy „Samouczka” po przesłaniu „ID samouczka” jako parametru do usługi internetowej.

Część wiadomości WSDL

  1. Jak widzimy, usługa sieciowa ma 2 komunikaty, jeden na wejściu, a drugi na wyjściu.
  2. Komunikat wejściowy jest znany jako TutorialNameRequest i ma jeden parametr o nazwie TutorialID. Parametr ten jest typu number, który jest określony przez typ xsd:number
  3. Komunikat wyjściowy jest znany jako TutorialNameResponse i ma jeden parametr o nazwie TutorialName. Parametr ten jest typu string, który jest określony przez typ xsd:string

Powiązanie typu portu

Porty są używane w WSDL do definiowania jednej kompletnej operacji, która jest oferowana przez usługę internetową.

W poprzednim temacie widzieliśmy, że nasza usługa internetowa dostarczyła 2 wiadomości, jedną dla danych wejściowych o nazwie „TutorialNameRequest”, a drugą dla danych wyjściowych o nazwie „TutorialNameResponse”. Razem forma wiadomości wejściowej i wyjściowej jest znana jako jedna kompletna operacja.

WSDL udostępnia element o nazwie który służy do definiowania operacji dostarczanych przez usługę internetową.

Powiązanie typu portu

Tak więc w naszym powyższym przykładzie możemy zauważyć następujące rzeczy:

  1. Nazwa typu portu, który obejmuje operację, jest podana jako „Tutorial_PortType”.
  2. Sama operacja ma nazwę „Tutorial”. Więc nasza operacja zasadniczo dostarcza TutorialName, jeśli TutorialID jest podany jako parametr wejściowy.
  3. Następnie mamy nasze 2 wiadomości, jedną dla wejścia i drugą dla wyjścia, które tworzą naszą operację

Dodatkowo element, istnieje również element określający sposób przesyłania wiadomości.

Powiązanie typu portu

  1. Powyższy przykład pokazuje, że powiązanie składa się z nazwy powiązania, która w naszym przypadku jest podana jako „TutorialSoapBinding”. Powiązanie w prostych słowach to informacja, której aplikacja kliencka używa, aby faktycznie powiązać się z usługą sieciową. Po faktycznym powiązaniu z usługą sieciową ma ona możliwość wywołania różnych operacji, które są udostępniane przez usługę sieciową.
  2. Warstwa transportowa podawana jest jako http://, co oznacza, że ​​wiadomości będą przesyłane poprzez protokół HTTP.

Tworzenie pliku WSDL

Plik WSDL jest tworzony za każdym razem, gdy usługa internetowa jest budowana w dowolnym języku programowania.

Ponieważ plik WSDL jest dość skomplikowany do wygenerowania od podstaw, wszystkie edytory, takie jak Visual Studio dla .Net i Eclipse dla Java automatycznie utworzy plik WSDL.

Poniżej znajduje się przykład pliku WSDL utworzonego w programie Visual Studio.

<?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>

Powyższy plik WSDL wygląda bardzo onieśmielająco dla każdego użytkownika. Poszczególne części omówimy szczegółowo w kolejnych tutorialach, ale na razie rzućmy okiem na podsumowanie tego, co faktycznie robi każda sekcja pliku WSDL

Publikowanie przykładu usługi internetowej

Przyjrzyjmy się teraz przykładowi, w jaki sposób można opublikować usługę internetową i korzystać z niej za pomocą programu Visual Studio.

W tym przykładzie utworzymy usługę internetową za pomocą jednej metody WebMethod. Ta metoda akceptuje parametr Integer o nazwie „TutorialID”. Metoda sieciowa zwróci następnie ciąg o nazwie „Usługi sieciowe”.

Następnie utworzymy aplikację konsolową, która będzie korzystać z tej usługi sieciowej i odpowiednio wywoływać naszą metodę sieciową.

Przyjrzyjmy się krokom wymaganym do wykonania tego przykładu.

Krok 1) Pierwszym krokiem jest utworzenie usługi internetowej. Szczegółowe kroki, jak Asp.Net wyjaśniono projekt internetowy i tworzony jest serwis internetowy tutaj; Wykonaj te same kroki, aby odpowiednio utworzyć projekt i usługę internetową. Kluczową częścią jest wprowadzenie poniższego kodu do pliku usług sieciowych.

Publikowanie przykładu usługi internetowej

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;
		}
	}
}

Wyjaśnienie kodu:

  1. Tutaj tworzymy metodę internetową o nazwie „Guru99WebService”. W tej metodzie sieciowej dołączamy parametr będący liczbą całkowitą, który należy przekazać przy każdym wywołaniu tej metody sieciowej.
  2. Następnie definiujemy zmienną o nazwie „TutorialName”, która będzie przechowywać wartość ciągu „Usługi sieciowe”. Jest to wartość, która zostanie zwrócona po wywołaniu usługi internetowej.

Krok 2) Po zdefiniowaniu pliku usług internetowych następnym krokiem jest utworzenie projektu klienta, który będzie korzystał z tej usługi internetowej.

Stwórzmy prostą aplikację konsolową, która wywoła tę usługę internetową, wywoła usługę „Guru99WebService”, a następnie wyświetli wynik metody sieciowej na ekranie dziennika konsoli. Wykonaj poniższe kroki, aby utworzyć aplikację konsolową.

Kliknij prawym przyciskiem myszy plik rozwiązania programu Visual Studio i wybierz opcję Dodaj->Nowy projekt

Publikowanie przykładu usługi internetowej

Krok 3) W tym etapie,

  1. Pamiętaj, aby najpierw wybrać opcję Visual C# Windows opcja. Następnie wybierz opcję utworzenia aplikacji konsolowej.
  2. Nadaj swojemu projektowi nazwę, która w naszym przypadku została podana jako „DemoApplication”.

Publikowanie przykładu usługi internetowej

Po kliknięciu przycisku OK na powyższym ekranie projekt będzie widoczny w Eksploratorze rozwiązań w programie Visual Studio.

Publikowanie przykładu usługi internetowej

Krok 4) W tym kroku ustawisz aplikację DemoApplication Console jako projekt startowy. Robi się to, aby upewnić się, że ta aplikacja zostanie uruchomiona jako pierwsza, gdy cały projekt Visual Studio zostanie uruchomiony. Ta aplikacja Console z kolei wywoła usługę internetową, która zostanie automatycznie uruchomiona przez Visual Studio.

Aby ukończyć ten krok, kliknij prawym przyciskiem myszy projekt DemoApplication i wybierz opcję „Ustaw jako projekt startowy”.

Publikowanie przykładu usługi internetowej

Krok 5) Następnym krokiem jest dodanie odniesienia do usługi naszego „Guru99Webservice” do naszej aplikacji konsolowej. Dzieje się tak, aby aplikacja DemoApplication mogła odwoływać się do usługi sieciowej i wszystkich metod sieciowych w tej usłudze.

Aby to zrobić, kliknij prawym przyciskiem myszy plik projektu DemoApplication i wybierz opcję menu Dodaj->Odniesienie do usługi.

Publikowanie przykładu usługi internetowej

Krok 6) Na tym etapie podamy różne wartości wymagane do dodania numeru referencyjnego usługi

  1. Najpierw musimy wybrać opcję odkrywania. Ta opcja automatycznie pobierze plik WSDL dla naszego serwisu internetowego TutorialService.
  2. Następnie powinniśmy podać nazwę naszego odniesienia do usługi. W naszym przypadku nadajemy mu nazwę Guru99Webservice.
  3. Następnie musimy rozszerzyć opcję TutorialService.asmx, aby móc zobaczyć metodę „GetTutorialService” po prawej stronie. Tutaj TutorialService.asmx to nazwa naszego pliku Visual Studio .Net, który zawiera kod dla naszej usługi sieciowej.
  4. Zobaczymy wtedy naszą metodę sieciową, którą mieliśmy w naszym serwisie internetowym znaną jako „GetTutorialService”

Publikowanie przykładu usługi internetowej

Kiedy klikniemy przycisk „OK”, cały kod wymagany do uzyskania dostępu do tej usługi internetowej zostanie dodany do naszej aplikacji DemoApplication Console, jak pokazano poniżej.

Zrzut ekranu pokazuje, że usługa „Guru99Webservice” została pomyślnie dodana do naszej aplikacji konsolowej.

Publikowanie przykładu usługi internetowej

Krok 7) Następnym krokiem jest dodanie kodu do naszej aplikacji konsolowej, aby uzyskać dostęp do metody internetowej w naszym serwisie internetowym. Otwórz plik kodu Program.cs, który jest automatycznie dostarczany z aplikacją konsolową i dodaj poniższy kod

Publikowanie przykładu usługi internetowej

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

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

Wyjaśnienie kodu: -

  1. Pierwszą częścią jest wybranie pliku Program.cs. Jest to główny plik tworzony przez Visual Studio podczas tworzenia aplikacji konsolowej. Ten plik jest wykonywany podczas uruchamiania aplikacji konsolowej (w naszym przypadku aplikacji demonstracyjnej).
  2. Następnie tworzymy zmienną o nazwie „klient”, która zostanie ustawiona na instancję naszej referencji do usługi, która została utworzona we wcześniejszym kroku. W naszym przypadku odwołanie do usługi to „Guru99Webservice.Guru99WebserviveSoapClient()”
  3. Następnie wywołujemy naszą metodę internetową „GetTutorialService” w serwisie internetowym TutorialService. Pamiętaj, że nasza metoda GetTutorialService akceptuje parametr całkowity, więc po prostu przekazujemy parametr całkowity do metody internetowej.
  4. Ta ostatnia linia ma na celu zapewnienie, że ekran dziennika konsoli pozostanie aktywny, abyśmy mogli wyświetlić dane wyjściowe. To polecenie będzie po prostu czekać na dane wejściowe od użytkownika.

Wydajność

Po wykonaniu wszystkich powyższych kroków i uruchomieniu aplikacji DemoApplication wyświetlony zostanie poniższy wynik.

Publikowanie przykładu usługi internetowej

Z danych wyjściowych wyraźnie wynika, że ​​DemoApplication wywołuje naszą usługę internetową i że ciąg zwrócony przez usługę internetową jest wyświetlany w dzienniku konsoli.

Podsumowanie

  • Pełna forma WSDL to usługi sieciowe DescriptJęzyk jonowy
  • Dokument WSDL to dokument używany do opisu usługi internetowej. Ma to kluczowe znaczenie, aby każda aplikacja kliencka wiedziała, gdzie znajduje się usługa sieciowa. Pozwala także aplikacji klienckiej zrozumieć metody dostępne w serwisie WWW.
  • Plik WSDL bardzo ułatwia implementację usługi internetowej w jednym języku programowania i wywoływanie jej z innego języka programowania.
  • Dokument WSDL zazwyczaj składa się z komunikatu. Dla każdej metody sieciowej istnieją 2 komunikaty, jeden dla danych wejściowych, a drugi dla danych wyjściowych. Razem tworzą operację.
  • Web Services DescriptPliki języka ionowego (skrót od WSDL) są zwykle tworzone w edytorze używanym dla odpowiedniego języka programowania.
  • Widzieliśmy, jak możemy korzystać z usługi sieciowej w Visual Studio. Można to zrobić, tworząc inny projekt, który jest aplikacją konsolową. Następnie, dodając odwołanie do usługi, możemy uzyskać dostęp do metod sieciowych w naszej usłudze sieciowej.