Kurz WSDL: Webové služby Descriptiontový jazyk s příkladem

Co je WSDL?

Webové služby Descriptiontový jazyk (WSDL) je soubor založený na XML, který v podstatě říká klientské aplikaci, co webová služba dělá. Soubor WSDL se používá ke stručnému popisu toho, co webová služba dělá, a poskytuje klientovi všechny informace potřebné pro připojení k webové službě a používání všech funkcí poskytovaných webovou službou.

V tomto tutoriálu se zaměříme na poslední bod, který je nejdůležitější součástí webových služeb, a to je WSDL neboli jazyk pro popis webových služeb.

Soubor WSDL se používá ke stručnému popisu toho, co webová služba dělá, a poskytuje klientovi všechny informace potřebné pro připojení k webové službě a používání všech funkcí poskytovaných webovou službou.

Struktura dokumentu WSDL

Dokument WSDL se používá k popisu webové služby. Tento popis je povinný, aby klientské aplikace byly schopny porozumět tomu, co webová služba skutečně dělá.

  • Soubor WSDL obsahuje umístění webové služby a
  • Metody, které jsou vystaveny webovou službou.

Samotný soubor WSDL může každému uživateli připadat velmi složitý, ale obsahuje všechny potřebné informace, které by jakákoli klientská aplikace vyžadovala k použití příslušné webové služby.

Níže je obecná struktura souboru WSDL

  • Definice
  • TargetNamespace
  • Typy dat
  • Zprávy
  • Porttype
  • vazby
  • servis

Jedna klíčová věc, kterou je třeba poznamenat, je definice zpráv, což je to, co je předáváno protokol SOAP je ve skutečnosti definován v dokumentu WSDL.

Dokument WSDL ve skutečnosti říká klientské aplikaci, jaké jsou typy zpráv SOAP, které jsou odesílány a přijímány webovou službou.

Jinými slovy, WSDL je jako pohlednice, která má adresu konkrétního místa. Adresa poskytuje údaje o osobě, která pohlednici doručila. Stejným způsobem je tedy soubor WSDL pohlednicí, která má adresu webové služby, která může poskytnout veškerou funkcionalitu, kterou klient požaduje.

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

Níže je schéma struktury souboru WSDL

Struktura dokumentu WSDL
Struktura WSDL

Prvky WSDL

Soubor WSDL obsahuje následující hlavní části

  1. Jedno tag slouží k definování všech komplexních datových typů, které budou použity ve zprávě vyměňované mezi klientskou aplikací a webovou službou. To je důležitý aspekt klientské aplikace, protože pokud webová služba pracuje s komplexním datovým typem, pak by klientská aplikace měla vědět, jak složitý datový typ zpracovat. Datové typy jako float, čísla a řetězce jsou jednoduché datové typy, ale mohou existovat strukturované datové typy, které může poskytovat webová služba.
    Například může existovat datový typ nazvaný EmployeeDataType, který může mít 2 prvky nazvané „EmployeeName“ typu string a „EmployeeID“ typu číslo nebo celé číslo. Společně tvoří datovou strukturu, která se pak stává komplexním datovým typem.
  2. Jedno tag se používá k definování zprávy, která je vyměňována mezi klientskou aplikací a webovým serverem. Tyto zprávy vysvětlí vstupní a výstupní operace, které může webová služba provádět. Příkladem zprávy může být zpráva, která přijímá EmployeeID zaměstnance, a výstupní zprávou může být jméno zaměstnance na základě poskytnutého EmpoyeeID.
  3. Jedno tag se používá k zapouzdření každé vstupní a výstupní zprávy do jedné logické operace. Mohla by tedy existovat operace nazvaná „GetEmployee“, která kombinuje vstupní zprávu s přijetím EmployeeID z klientské aplikace a následným odesláním EmployeeName jako výstupní zprávy.
  4. Jedno tag se používá k navázání operace na konkrétní typ portu. To proto, že když klientská aplikace zavolá příslušný typ portu, bude moci přistupovat k operacím, které jsou vázány na tento typ portu. Typy portů jsou stejné jako rozhraní. Pokud tedy klientská aplikace potřebuje používat webovou službu, musí použít informace o závaznosti, aby zajistila, že se bude moci připojit k rozhraní poskytovanému touto webovou službou.
  5. Jedno tag je jméno dané webové službě samotné. Zpočátku, když klientská aplikace zavolá webovou službu, provede to voláním názvu webové služby. Například webová služba může být umístěna na adrese jako je http://localhost/Guru99/Tutorial.asmx . Značka služby bude mít ve skutečnosti adresu URL definovanou jako http://localhost/Guru99/Tutorial.asmx, který klientské aplikaci vlastně sdělí, že na tomto místě je dostupná webová služba.

Proč WSDL

Webová služba je důležitou součástí při vytváření moderních webových aplikací. Jejich hlavním účelem je umožnit vzájemnou komunikaci více aplikací postavených na různých programovacích jazycích. Například můžeme nechat webovou aplikaci .Net mluvit s a Java aplikace prostřednictvím webové služby.

Webová služba má následující klíčové funkce

  • Je vytvořen pomocí programovacího jazyka XML. Téměř všechny moderní technologie jako .Net a Java mít odpovídající příkazy, které mají schopnost pracovat s XML. Proto byl XML považován za nejvhodnější jazyk pro vytváření webových služeb.
  • Webové služby komunikují přes HTTP. HTTP je protokol používaný všemi webovými aplikacemi. Proto dávalo smysl zajistit, aby webové služby měly také schopnost pracovat přes protokol HTTP.
  • Webové služby odpovídají konkrétní jazykové specifikaci. Tato specifikace je stanovena organizací W3C, která je řídícím orgánem pro všechny webové standardy.
  • Webové služby mají popisný jazyk známý jako WSDL, který se používá k popisu webové služby.

Soubor WSDL je napsán v obyčejném starém XML. Důvod, proč je v XML, je ten, že soubor lze číst jakýmkoli programovacím jazykem.

Pokud by tedy byla klientská aplikace napsána v .Net, rozuměla by souboru XML. Podobně, pokud byla klientská aplikace napsána v Java programovacím jazyce pak také bude schopen interpretovat soubor WSDL.

Potřebujete WSDL

Soubor WSDL je to, co vše spojuje dohromady. Z výše uvedeného diagramu můžete vidět, že můžete vytvořit webovou službu v jazyce .Net.

Zde je tedy služba implementována. Pokud jste neměli soubor WSDL a chtěli jste a Java třídy, abyste mohli využívat webovou službu, budete k tomu potřebovat velké úsilí při kódování.

Ale nyní se souborem WSDL, který je v XML, kterému rozumí jakýkoli programovací jazyk, můžete nyní snadno mít Java třídy spotřebovávají webovou službu .Net. Množství kódovacího úsilí je tedy značně sníženo.

Část zprávy WSDL

WSDL se skládá z části nazvané „zprávy“, která je označena prvek.

Tento prvek se v podstatě používá k popisu dat, která se vyměňují mezi webovou službou a klientskou aplikací.

Každá webová služba bude mít vždy 2 typy zpráv,

  • Jeden je pro vstup webové služby a druhý je pro výstup webové služby.
  • Vstup se používá k popisu parametrů, které webová služba přijímá. Toto je důležitý aspekt klientské aplikace, aby zná hodnoty, které mají být odeslány jako parametry webové službě.
  • Dalším typem zprávy je výstupní zpráva, která říká, jaké výsledky poskytuje webová služba.

Každá zpráva bude mít a prvek, který se používá k popisu parametru používaného vstupní a výstupní zprávou.

Níže je jednoduchý příklad toho, jak vypadá zpráva pro webovou službu. Funkcí webové služby je poskytnout název „Výukového programu“ po odeslání „ID výukového programu“ jako parametru webové službě.

Část zprávy WSDL

  1. Jak vidíme, webová služba má 2 zprávy, jednu pro vstup a druhou pro výstup.
  2. Vstupní zpráva je známá jako TutorialNameRequest, která má jeden parametr nazvaný TutorialID. Tento parametr je typu number, který je určen typem xsd:number
  3. Výstupní zpráva je známá jako TutorialNameResponse, která má jeden parametr nazvaný TutorialName. Tento parametr je typu string, který je určen typem xsd:string

Vazba typu portu

Porty se ve WSDL používají k definování jedné kompletní operace, kterou nabízí webová služba.

V předchozím tématu jsme viděli, že naše webová služba poskytla 2 zprávy, jednu pro vstup s názvem „TutorialNameRequest“ a druhou pro výstup s názvem „TutorialNameResponse“. Společně se vstupní a výstupní formulář zprávy označuje jako jedna kompletní operace.

WSDL poskytuje prvek nazvaný který se používá k definování operací poskytovaných webovou službou.

Vazba typu portu

V našem výše uvedeném příkladu si tedy můžeme všimnout následujícího:

  1. Název typu portu, který zapouzdřuje operaci, je uveden jako „Tutorial_PortType“.
  2. Samotná operace má název „Výukový program“. Takže naše operace v podstatě poskytuje TutorialName, pokud je jako vstupní parametr uvedeno TutorialID.
  3. Další jsou naše 2 zprávy, jedna pro vstup a druhá pro výstup, které tvoří naši operaci

Navíc k prvek, tam je také prvek, který se používá k definování způsobu přenosu zpráv.

Vazba typu portu

  1. Výše uvedený příklad ukazuje, že vazba se skládá z názvu vazby, který je v našem případě uveden jako „TutorialSoapBinding“. Jednoduše řečeno, vázání je informace, kterou klientská aplikace používá k tomu, aby se skutečně navázala na webovou službu. Jakmile je skutečně svázán s webovou službou, má schopnost volat různé operace, které jsou vystaveny webovou službou.
  2. Transportní vrstva je uvedena jako http://, což znamená, že zprávy, které se budou přenášet přes protokol HTTP.

Vytvoření souboru WSDL

Soubor WSDL se vytvoří vždy, když je webová služba vytvořena v jakémkoli programovacím jazyce.

Vzhledem k tomu, že generování souboru WSDL je poměrně komplikované, všechny editory, jako je Visual Studio pro .Net a Eclipse for Java automaticky vytvoří soubor WSDL.

Níže je uveden příklad souboru WSDL vytvořeného v sadě 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>

Výše uvedený soubor WSDL vypadá pro každého uživatele velmi zastrašující, v následujících výukových programech se budeme podrobně zabývat různými částmi, ale nyní se podívejme souhrnně na to, co každá část souboru WSDL skutečně dělá.

Publikování příkladu webové služby

Nyní se podívejme na příklad toho, jak můžeme publikovat webovou službu a využívat ji pomocí sady Visual Studio.

V tomto příkladu vytvoříme webovou službu s jednou WebMethod. Tato metoda bude přijímat celočíselný parametr s názvem „TutorialID“. Webová metoda pak vrátí řetězec nazvaný „Webové služby“.

Poté vytvoříme konzolovou aplikaci, která bude tuto webovou službu využívat a podle toho zavolá naši webovou metodu.

Podívejme se na kroky potřebné k provedení tohoto příkladu.

Krok 1) Prvním krokem je vytvoření webové služby. Podrobné kroky, jak asp.net byl vysvětlen webový projekt a vytvoření webové služby tady; Při vytváření projektu a webové služby postupujte podle stejných kroků. Klíčovou částí je zadat níže uvedený kód do souboru webových služeb.

Publikování příkladu webové služby

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

Vysvětlení kódu:

  1. Zde vytváříme WebMethod s názvem „Guru99WebService“. V této webové metodě zahrnujeme celočíselný parametr, který je třeba předat při každém volání této webové metody.
  2. Dále definujeme proměnnou nazvanou „TutorialName“, která bude obsahovat hodnotu řetězce „Web Services“. Toto je hodnota, která bude vrácena při volání webové služby.

Krok 2) Jakmile nadefinujeme soubor webových služeb, dalším krokem je vytvoření klientského projektu, který bude tuto webovou službu využívat.

Vytvořme jednoduchou konzolovou aplikaci, která zavolá tuto webovou službu, vyvolá „Guru99WebService“ a poté zobrazí výstup webové metody na obrazovce protokolu konzoly. Chcete-li vytvořit konzolovou aplikaci, postupujte podle následujících kroků.

Klikněte pravým tlačítkem na soubor řešení sady Visual Studio a vyberte možnost Přidat->Nový projekt

Publikování příkladu webové služby

Krok 3) V tomto kroku,

  1. Ujistěte se, že jste nejprve vybrali Visual C# Windows volba. Poté zvolte možnost vytvoření konzolové aplikace.
  2. Pojmenujte svůj projekt, který byl v našem případě označen jako „DemoApplication“.

Publikování příkladu webové služby

Po kliknutí na tlačítko OK na výše uvedené obrazovce budete moci vidět projekt v Průzkumníku řešení v sadě Visual Studio.

Publikování příkladu webové služby

Krok 4) V tomto kroku nastavujete aplikaci DemoApplication Console jako spouštěcí projekt. To se provádí, aby bylo zajištěno, že se tato aplikace spustí jako první při spuštění celého projektu sady Visual Studio. Tato konzolová aplikace zase zavolá webovou službu, kterou Visual Studio automaticky spustí.

Chcete-li tento krok dokončit, klikněte pravým tlačítkem myši na projekt DemoApplication a vyberte možnost „Nastavit jako projekt po spuštění“.

Publikování příkladu webové služby

Krok 5) Dalším krokem je přidání servisní reference naší „Guru99Webservice“ do naší konzolové aplikace. To se provádí tak, že DemoApplication může odkazovat na webovou službu a všechny webové metody ve webové službě.

Chcete-li to provést, klepněte pravým tlačítkem myši na soubor projektu DemoApplication a vyberte možnost nabídky Přidat->Servisní reference.

Publikování příkladu webové služby

Krok 6) V tomto kroku poskytneme různé hodnoty, které jsou nutné k přidání reference naší služby

  1. Nejprve si musíme vybrat naši možnost objevování. Tato možnost automaticky vyzvedne soubor WSDL pro naši webovou službu TutorialService.
  2. Dále bychom měli pojmenovat naši referenční službu. V našem případě mu dáváme název Guru99Webservice.
  3. Potom musíme rozbalit možnost TutorialService.asmx, abychom měli možnost vidět metodu „GetTutorialService“ na pravé straně. Zde TutorialService.asmx je název našeho souboru Visual Studio .Net, který obsahuje kód pro naši webovou službu.
  4. Poté uvidíme naši webovou metodu, kterou jsme měli v naší webové službě známé jako „GetTutorialService“

Publikování příkladu webové služby

Když klikneme na tlačítko 'OK', veškerý požadovaný kód pro přístup k této webové službě bude přidán do naší aplikace DemoApplication Console, jak je znázorněno níže.

Snímek obrazovky ukazuje, že „Guru99Webservice“ byla úspěšně přidána do naší konzolové aplikace.

Publikování příkladu webové služby

Krok 7) Dalším krokem je přidání kódu do naší konzolové aplikace pro přístup k webové metodě v naší webové službě. Otevřete soubor s kódem Program.cs, který se automaticky dodává s aplikací konzoly, a přidejte níže uvedený kód

Publikování příkladu webové služby

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

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

Vysvětlení kódu:-

  1. První částí je výběr souboru Program.cs. Toto je hlavní soubor, který vytvoří Visual Studio při vytvoření konzolové aplikace. Tento soubor se spustí při spuštění konzolové aplikace (v našem případě demo aplikace).
  2. Poté vytvoříme proměnnou nazvanou „klient“, která bude nastavena na instanci naší reference služby, která byla vytvořena v předchozím kroku. V našem případě je reference služby 'Guru99Webservice.Guru99WebserviveSoapClient()'
  3. Poté voláme naši webovou metodu 'GetTutorialService' ve webové službě TutorialService Pamatujte, že naše metoda GetTutorialService' přijímá celočíselný parametr, takže webové metodě pouze předáváme celočíselný parametr.
  4. Tento poslední řádek slouží pouze k zajištění toho, aby obrazovka protokolu konzoly zůstala aktivní, abychom mohli zobrazit výstup. Tento příkaz bude pouze čekat na vstup od uživatele.

Výstup

Po provedení všech výše uvedených kroků a spuštění DemoApplication se zobrazí níže uvedený výstup.

Publikování příkladu webové služby

Z výstupu jasně vidíme, že DemoApplication volá naši webovou službu a že řetězec vrácený webovou službou je zobrazen v našem Console logu.

Shrnutí

  • Plná forma WSDL je Web Services Descriptiontový jazyk
  • Dokument WSDL je dokument, který se používá k popisu webové služby. To je klíčové pro to, aby každá klientská aplikace věděla, kde se webová služba nachází. Umožňuje také klientské aplikaci porozumět metodám dostupným ve webové službě.
  • Soubor WSDL velmi usnadňuje implementaci webové služby v jednom programovacím jazyce a volání z jiného programovacího jazyka.
  • Dokument WSDL se obvykle skládá ze zprávy. Pro každou webovou metodu existují 2 zprávy, jedna je pro vstup a druhá pro výstup. Společně tvoří operaci.
  • Webové služby DescriptSoubory ion Language (zkratka pro WSDL) se obvykle vytvářejí v editoru, který se používá pro odpovídající programovací jazyk.
  • Viděli jsme, jak můžeme využívat webovou službu ve Visual Studiu. To lze provést vytvořením jiného projektu, kterým je konzolová aplikace. Přidáním odkazu na službu jsme pak schopni přistupovat k webovým metodám v naší webové službě.