Урок за WSDL: Уеб услуги Descriptйонен език с пример

Какво е WSDL?

Уеб услуги Descriptйонен език (WSDL) е базиран на XML файл, който основно казва на клиентското приложение какво прави уеб услугата. WSDL файлът се използва, за да опише накратко какво прави уеб услугата и дава на клиента цялата информация, необходима за свързване с уеб услугата и използване на цялата функционалност, предоставена от уеб услугата.

В този урок ще се съсредоточим върху последната точка, която е най-важната част от уеб услугите, и това е WSDL или езикът за описание на уеб услугите.

WSDL файлът се използва, за да опише накратко какво прави уеб услугата и дава на клиента цялата информация, необходима за свързване с уеб услугата и използване на цялата функционалност, предоставена от уеб услугата.

Структура на WSDL документ

WSDL документ се използва за описание на уеб услуга. Това описание е необходимо, така че клиентските приложения да могат да разберат какво всъщност прави уеб услугата.

  • WSDL файлът съдържа местоположението на уеб услугата и
  • Методите, които са изложени от уеб услугата.

Самият WSDL файл може да изглежда много сложен за всеки потребител, но съдържа цялата необходима информация, която всяко клиентско приложение би изисквало, за да използва съответната уеб услуга.

По-долу е общата структура на WSDL файл

  • дефиниция
  • TargetИменно пространство
  • DataTypes
  • съобщения
  • Тип порт
  • автомати
  • обслужване

Едно ключово нещо, което трябва да се отбележи тук, е тази дефиниция на съобщенията, която се предава от SOAP протокол всъщност е дефиниран в WSDL документа.

WSDL документът всъщност казва на клиентско приложение какви са типовете SOAP съобщения, които се изпращат и приемат от уеб услугата.

С други думи, WSDL е точно като пощенска картичка, която има адреса на определено местоположение. Адресът съдържа данните за лицето, което е доставило пощенската картичка. Следователно по същия начин WSDL файлът е пощенската картичка, която има адреса на уеб услугата, която може да достави цялата функционалност, която клиентът иска.

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

По-долу е дадена диаграма на структурата на WSDL файл

Структура на WSDL документ
Структура на WSDL

WSDL елементи

WSDL файлът съдържа следните основни части

  1. - се използва за дефиниране на всички сложни типове данни, които ще бъдат използвани в съобщението, обменено между клиентското приложение и уеб услугата. Това е важен аспект на клиентското приложение, защото ако уеб услугата работи със сложен тип данни, тогава клиентското приложение трябва да знае как да обработва сложния тип данни. Типове данни като float, числа и низове са прости типове данни, но може да има структурирани типове данни, които могат да бъдат предоставени от уеб услугата.
    Например, може да има тип данни, наречен EmployeeDataType, който може да има 2 елемента, наречени „EmployeeName“ от тип низ и „EmployeeID“ от тип номер или цяло число. Заедно те образуват структура от данни, която след това се превръща в сложен тип данни.
  2. - се използва за дефиниране на съобщението, което се обменя между клиентското приложение и уеб сървъра. Тези съобщения ще обяснят входните и изходните операции, които могат да се извършват от уеб услугата. Пример за съобщение може да бъде съобщение, което приема EmployeeID на служител, а изходното съобщение може да бъде името на служителя въз основа на предоставения EmpoyeeID.
  3. - се използва за капсулиране на всяко входно и изходно съобщение в една логическа операция. Така че може да има операция, наречена „GetEmployee“, която комбинира входното съобщение за приемане на EmployeeID от клиентско приложение и след това изпращане на EmployeeName като изходно съобщение.
  4. - се използва за свързване на операцията към конкретен тип порт. Това е така, че когато клиентското приложение извика съответния тип порт, то ще може да получи достъп до операциите, които са обвързани с този тип порт. Типовете портове са точно като интерфейсите. Така че, ако клиентско приложение трябва да използва уеб услуга, то трябва да използва обвързващата информация, за да гарантира, че може да се свърже с интерфейса, предоставен от тази уеб услуга.
  5. - етикетът е име, дадено на самата уеб услуга. Първоначално, когато клиентско приложение направи повикване към уеб услугата, то ще го направи, като извика името на уеб услугата. Например, уеб услуга може да се намира на адрес като http://localhost/Guru99/Tutorial.asmx . Сервизният етикет всъщност ще има URL адреса, дефиниран като http://localhost/Guru99/Tutorial.asmx, което всъщност ще каже на клиентското приложение, че на това място има достъпна уеб услуга.

Защо WSDL

Уеб услугата е важен компонент в изграждането на съвременни уеб приложения. Основната им цел е да позволят на множество приложения, изградени на различни езици за програмиране, да си говорят помежду си. Например, можем да имаме .Net уеб приложение, което говори с a Java приложение чрез уеб услуга.

Уеб услугата има следните ключови характеристики

  • Създаден е с помощта на езика за програмиране XML. Почти всички съвременни технологии като .Net и Java имат съответните команди, които имат способността да работят с XML. Следователно XML беше взет като най-подходящия език за изграждане на уеб услуги.
  • Уеб услугите комуникират през HTTP. HTTP е протокол, използван от всички уеб базирани приложения. Следователно имаше смисъл да се гарантира, че уеб услугите също имат способността да работят по HTTP протокола.
  • Уеб услугите отговарят на конкретна езикова спецификация. Тази спецификация е зададена от W3C, който е ръководният орган за всички уеб стандарти.
  • Уеб услугите имат език за описание, известен като WSDL, който се използва за описание на уеб услугата.

WSDL файлът е написан в обикновен стар XML. Причината да е в XML е, че файлът може да бъде прочетен от всеки език за програмиране.

Така че, ако клиентското приложение е написано в .Net, то ще разбере XML файла. По същия начин, ако клиентското приложение е написано в Java език за програмиране, тогава също ще може да интерпретира WSDL файла.

Нуждаете се от WSDL

WSDL файлът е това, което свързва всичко заедно. От горната диаграма можете да видите, че можете да създадете уеб услуга на езика .Net.

Така че това е мястото, където услугата се внедрява. Ако не разполагате с WSDL файла и искате a Java клас, за да консумирате уеб услугата, ще ви трябват много усилия за програмиране, за да постигнете това.

Но сега с WSDL файла, който е в XML, който може да бъде разбран от всеки език за програмиране, вече можете лесно да имате Java клас използват уеб услугата .Net. Следователно количеството усилия за кодиране е значително намалено.

Част от WSDL съобщение

WSDL се състои от раздел, наречен „съобщения“, който се обозначава с елемент.

Този елемент основно се използва за описание на данните, които се обменят между уеб услугата и клиентското приложение.

Всяка уеб услуга винаги ще има 2 вида съобщения,

  • Единият е за въвеждане на уеб услугата, а другият е за изхода на уеб услугата.
  • Входът се използва за описание на параметрите, които се приемат от уеб услугата. Това е важен аспект на клиентското приложение, така че то да знае стойностите, които да бъдат изпратени като параметри към уеб услугата.
  • Другият тип съобщение е изходното съобщение, което казва какви резултати се предоставят от уеб услугата.

Всяко съобщение от своя страна ще има a елемент, който се използва за описание на параметъра, използван от входното и изходното съобщение.

По-долу е даден прост пример за това как изглежда съобщение за уеб услуга. Функционалността на уеб услугата е да предостави името на „Урок“, след като „Идентификационен номер на урок“ бъде изпратен като параметър към уеб услугата.

Част от WSDL съобщение

  1. Както виждаме, уеб услугата има 2 съобщения, едното за вход, а другото за изход.
  2. Входното съобщение е известно като TutorialNameRequest, което има един параметър, наречен TutorialID. Този параметър е от типа номер, който е определен от типа xsd:number
  3. Изходното съобщение е известно като TutorialNameResponse, което има един параметър, наречен TutorialName. Този параметър е от типа string, който е определен от типа xsd:string

Обвързване на типа порт

Портовете се използват в WSDL за дефиниране на една пълна операция, която се предлага от уеб услугата.

В предишната тема видяхме, че нашата уеб услуга предоставя 2 съобщения, едното за входа, наречен „TutorialNameRequest“, а другото за изхода, наречен „TutorialNameResponse“. Заедно формата на входно и изходно съобщение е известна като една пълна операция.

WSDL предоставя елемент, наречен който се използва за дефиниране на операциите, предоставени от уеб услугата.

Обвързване на типа порт

Така че в нашия горен пример можем да отбележим следното:

  1. Името на типа порт, който капсулира операцията, е дадено като „Tutorial_PortType“.
  2. На самата операция е дадено име „Урок“. Така че нашата операция основно предоставя TutorialName, ако TutorialID е даден като входен параметър.
  3. Следват нашите 2 съобщения, едното за входа, а другото за изхода, което формира нашата операция

В допълнение към елемент, има и елемент, който се използва за определяне на начина на прехвърляне на съобщенията.

Обвързване на типа порт

  1. Горният пример показва, че обвързването се състои от име на обвързване, което в нашия случай е дадено като „TutorialSoapBinding“. С прости думи обвързването е информацията, която клиентското приложение използва, за да се обвърже действително с уеб услугата. След като действително е обвързан с уеб услугата, той има способността да извиква различните операции, които са изложени от уеб услугата.
  2. Транспортният слой е даден като http://, което означава, че съобщенията, които ще се прехвърлят по HTTP протокола.

Създаване на WSDL файл

WSDL файлът се създава всеки път, когато уеб услуга е изградена на който и да е език за програмиране.

Тъй като WSDL файлът е доста сложен за генериране от обикновена нула, всички редактори като Visual Studio за .Net и Eclipse за Java автоматично създаване на WSDL файл.

По-долу е даден пример за WSDL файл, създаден във 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>

WSDL файлът по-горе изглежда много смущаващ за всеки потребител, ще разгледаме подробно различните части в следващите уроци, но засега нека да разгледаме накратко какво всъщност прави всеки раздел от WSDL файла

Публикуване на пример за уеб услуга

Сега нека да разгледаме пример за това как можем да публикуваме уеб услуга и да я използваме с помощта на Visual Studio.

В този пример ще създадем уеб услуга с един WebMethod. Този метод ще приеме параметър Integer, наречен „TutorialID“. След това уеб методът ще върне низ, наречен „Уеб услуги“.

След това ще създадем конзолно базирано приложение, което ще използва тази уеб услуга и съответно ще извиква нашия уеб метод.

Нека да разгледаме стъпките, необходими за изпълнението на този пример.

Стъпка 1) Първата стъпка е да създадете вашата уеб услуга. Подробните стъпки за това как Asp.Net е обяснено уеб проект и се създава уеб услуга тук; Моля, следвайте същите стъпки, за да създадете съответно проекта и уеб услугата. Ключовата част е да въведете кода по-долу във файла на уеб услугите.

Публикуване на пример за уеб услуга

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

Обяснение на кода:

  1. Тук създаваме WebMethod, наречен „Guru99WebService“. В този уеб метод ние включваме целочислен параметър, който трябва да бъде предаден при всяко извикване на този уеб метод.
  2. След това дефинираме променлива, наречена „TutorialName“, която ще съдържа стойността на низа на „Web Services“. Това е стойността, която ще бъде върната при извикване на уеб услугата.

Стъпка 2) След като сме дефинирали файла на уеб услугите, следващата стъпка е да създадем клиентски проект, който ще използва тази уеб услуга.

Нека създадем просто конзолно приложение, което ще извика тази уеб услуга, ще извика “Guru99WebService” и след това ще покаже изхода на уеб метода в екрана на регистрационния файл на конзолата. Следвайте стъпките по-долу, за да създадете конзолно приложение.

Щракнете с десния бутон върху файла с решението на Visual Studio и изберете опцията Добавяне->Нов проект

Публикуване на пример за уеб услуга

Етап 3) В този етап,

  1. Уверете се, че първо сте избрали Visual C# Windows опция. След това изберете опцията за създаване на конзолно приложение.
  2. Дайте име на вашия проект, което в нашия случай е дадено като „Демоприложение“.

Публикуване на пример за уеб услуга

След като щракнете върху бутона OK в горния екран, ще можете да видите проекта в Solution Explorer във Visual Studio.

Публикуване на пример за уеб услуга

Стъпка 4) В тази стъпка ще зададете приложението DemoApplication Console като стартиращ проект. Това се прави, за да се гарантира, че това приложение се стартира първо, когато се изпълнява целият проект на Visual Studio. Това конзолно приложение от своя страна ще извика уеб услугата, която автоматично ще бъде стартирана от Visual Studio.

За да завършите тази стъпка, щракнете с десния бутон върху проекта DemoApplication и изберете опцията „Задаване като стартиращ проект“.

Публикуване на пример за уеб услуга

Стъпка 5) Следващата стъпка е да добавите справката за услугата на нашата „Guru99Webservice“ към нашето конзолно приложение. Това се прави, за да може DemoApplication да препраща към уеб услугата и всички уеб методи в уеб услугата.

За да направите това, щракнете с десния бутон върху файла на проекта DemoApplication и изберете опцията от менюто Add->Service Reference.

Публикуване на пример за уеб услуга

Стъпка 6) В тази стъпка ще предоставим различните стойности, които са необходими за добавяне на референтната ни услуга

  1. Първо трябва да изберем нашата опция за откриване. Тази опция автоматично ще вземе WSDL файла за нашата уеб услуга TutorialService.
  2. След това трябва да дадем име за референтната ни услуга. В нашия случай ние му даваме име Guru99Webservice.
  3. След това трябва да разширим опцията TutorialService.asmx, за да можем да видим метода „GetTutorialService“ от дясната страна. Тук TutorialService.asmx е името на нашия Visual Studio .Net файл, който съдържа кода за нашата уеб услуга.
  4. След това ще видим нашия уеб метод, който имахме в нашата уеб услуга, известна като „GetTutorialService“

Публикуване на пример за уеб услуга

Когато щракнем върху бутона „OK“, целият необходим код за достъп до тази уеб услуга ще бъде добавен към нашето приложение DemoApplication Console, както е показано по-долу.

Екранната снимка показва, че „Guru99Webservice“ е добавен успешно към нашето конзолно приложение.

Публикуване на пример за уеб услуга

Стъпка 7) Следващата стъпка е да добавите кода към нашето конзолно приложение за достъп до уеб метода в нашата уеб услуга. Отворете кодовия файл Program.cs, който идва автоматично с конзолното приложение, и добавете кода по-долу

Публикуване на пример за уеб услуга

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

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

Обяснение на кода:-

  1. Първата част е да изберете файла Program.cs. Това е основният файл, който се създава от Visual Studio, когато се създава конзолно приложение. Този файл се изпълнява, когато се изпълни конзолното приложение (в нашия случай демонстрационно приложение).
  2. След това създаваме променлива, наречена „клиент“, която ще бъде зададена на екземпляр от нашата препратка към услугата, създадена в по-ранна стъпка. В нашия случай препратката към услугата е „Guru99Webservice.Guru99WebserviveSoapClient()“
  3. След това извикваме нашия уеб метод „GetTutorialService“ в уеб услугата TutorialService. Не забравяйте, че нашият метод GetTutorialService приема целочислен параметър, така че ние просто предаваме целочислен параметър на уеб метода.
  4. Този последен ред е само за да гарантира, че екранът на регистрационния файл на конзолата остава активен, така че да можем да видим изхода. Тази команда просто ще изчака някакво въвеждане от потребителя.

Продукция

Когато всички горепосочени стъпки бъдат изпълнени и демоприложението се стартира, ще се покаже изходът по-долу.

Публикуване на пример за уеб услуга

От изхода можем ясно да видим, че DemoApplication извиква нашата уеб услуга и че низът, върнат от уеб услугата, се показва в нашия регистрационен файл на конзолата.

Oбобщение

  • Пълната форма на WSDL е уеб услуги Descriptйонен език
  • WSDL документ е документ, който се използва за описание на уеб услуга. Това е от ключово значение за всяко клиентско приложение, за да знае къде се намира уеб услугата. Той също така позволява на клиентското приложение да разбере методите, налични в уеб услугата.
  • WSDL файлът прави много лесно уеб услугата да бъде внедрена на един език за програмиране и извикана от различен език за програмиране.
  • WSDL документът обикновено се състои от съобщение. За всеки уеб метод има 2 съобщения, едното е за вход, а другото е за изход. Заедно те образуват операция.
  • Уеб услуги Description Language (съкращение от WSDL) файловете обикновено се създават в редактора, който се използва за съответния език за програмиране.
  • Видяхме как можем да използваме уеб услуга в Visual Studio. Това може да стане чрез създаване на друг проект, който е конзолно приложение. След това, като добавим препратка към услуга, можем да осъществим достъп до уеб методите в нашата уеб услуга.

Обобщете тази публикация с: