Какво е WSDL? Значение и пример
⚡ Умно обобщение
WSDL (уеб услуги Description Language) е XML-базиран файл, който казва на клиентското приложение какво прави дадена уеб услуга и как да я извика. Този ресурс обяснява WSDL структурата, елементите, съобщенията, типовете портове, обвързванията и пример за публикуване.
Какво е WSDL?
Уеб услуги Descriptйонен език (WSDL) е базиран на XML файл, който основно казва на клиентското приложение какво прави уеб услугата. WSDL файлът се използва, за да опише накратко какво прави уеб услугата и дава на клиента цялата информация, необходима за свързване с уеб услугата и използване на цялата функционалност, предоставена от уеб услугата.
В този урок ще се съсредоточим върху най-важната част от уеб услугите, а именно WSDL или уеб услугите. Descriptезик. Той действа като конtracмежду уеб услугата и всеки клиент, който иска да я използва.
Структура на 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 файлът съдържа следните основни части:
- - Тагът се използва за дефиниране на всички сложни типове данни, които ще бъдат използвани в съобщението, обменяно между клиентското приложение и уеб услугата. Това е важно, защото ако уеб услугата работи със сложен тип данни, тогава клиентското приложение трябва да знае как да го обработва. Типове данни като числа с плаваща запетая, числа и низове са прости типове данни, но може да има структурирани типове данни, предоставяни от уеб услугата. Например, може да има тип данни, наречен EmployeeDataType, който може да има 2 елемента, наречени „EmployeeName“ от тип низ и „EmployeeID“ от тип число или цяло число. Заедно те образуват сложен тип данни.
- - Тагът се използва за дефиниране на съобщението, което се обменя между клиентското приложение и уеб сървъра. Тези съобщения обясняват входните и изходните операции, които могат да бъдат извършвани от уеб услугата. Пример за съобщение може да бъде такова, което приема EmployeeID на служител, а изходното съобщение може да бъде името на служителя въз основа на предоставения EmployeeID.
- - се използва за капсулиране на всяко входно и изходно съобщение в една логическа операция. Така че може да има операция, наречена „GetEmployee“, която комбинира входното съобщение за приемане на EmployeeID от клиентско приложение и след това изпращане на EmployeeName като изходно съобщение.
- - Тагът се използва за обвързване на операцията с определен тип порт. Това е така, че когато клиентското приложение извика съответния тип порт, то ще може да получи достъп до операциите, свързани с него. Типовете портове са точно като интерфейсите. Така че, ако клиентското приложение трябва да използва уеб услуга, то трябва да използва информацията за обвързване, за да гарантира, че може да се свърже с интерфейса, предоставен от тази уеб услуга.
- - Тагът е име, дадено на самата уеб услуга. Първоначално, когато клиентско приложение осъществява повикване към уеб услугата, то ще го направи, като извика името на уеб услугата. Например, уеб услуга може да бъде разположена на адрес като http://localhost/Guru99/Tutorial.asmx. Сервизният етикет ще има URL дефиниран, който уведомява клиентското приложение, че на това място е налична уеб услуга.
Защо WSDL
Уеб услугата е важен компонент в изграждането на съвременни уеб приложения. Основната ѝ цел е да позволи на множество приложения, изградени на различни езици за програмиране, да общуват помежду си. Например, можем да имаме .Net уеб приложение, което общува с... Java приложение чрез уеб услуга.
Уеб услугата има следните ключови характеристики:
- Изграден е с помощта на езика за програмиране XML. Почти всички съвременни технологии, като например .Net и Java имат съответните команди, които имат способността да работят с XML. Следователно XML беше взет като най-подходящия език за изграждане на уеб услуги.
- Уеб услугите комуникират чрез HTTP. HTTP е протокол, използван от всички уеб-базирани приложения. Следователно е било логично да се гарантира, че уеб услугите също могат да работят през HTTP протокола.
- Уеб услугите отговарят на конкретна езикова спецификация. Тази спецификация е зададена от W3C, който е ръководният орган за всички уеб стандарти.
- Уеб услугите имат език за описание, известен като WSDL, който се използва за описание на уеб услугата.
WSDL файлът е написан на обикновен XML. Причината да е в XML е, за да може файлът да бъде прочетен от всеки език за програмиране. Така че, ако клиентското приложение е написано на .Net, то ще разбере XML файла. По подобен начин, ако клиентското приложение е написано на Java език за програмиране, тогава той би могъл да интерпретира и WSDL файла.
WSDL файлът е това, което свързва всичко заедно. От горната диаграма можете да видите, че можете да създадете уеб услуга на езика .Net. Така че тук се имплементира услугата. Ако не сте имали WSDL файла и сте искали Java клас за използване на уеб услугата, ще ви трябват много усилия за кодиране, за да постигнете това. Но сега с WSDL файла, който е в XML и може да бъде разбран от всеки език за програмиране, можете лесно да имате Java клас използват уеб услугата .Net. Следователно количеството усилия за кодиране е значително намалено.
Част от WSDL съобщение
WSDL се състои от раздел, наречен „съобщения“, който се обозначава с елемент. Този елемент се използва основно за описание на данните, които се обменят между уеб услугата и клиентското приложение.
Всяка уеб услуга винаги ще има 2 вида съобщения:
- Единият е за въвеждане на уеб услугата, а другият е за изхода на уеб услугата.
- Входът се използва за описание на параметрите, които се приемат от уеб услугата. Това е важен аспект на клиентското приложение, така че то да знае стойностите, които да бъдат изпратени като параметри към уеб услугата.
- Другият тип съобщение е изходното съобщение, което казва какви резултати се предоставят от уеб услугата.
Всяко съобщение от своя страна ще има a елемент, който се използва за описание на параметъра, използван от входното и изходното съобщение.
По-долу е даден прост пример за това как изглежда съобщение за уеб услуга. Функционалността на уеб услугата е да предостави името на „Урок“, след като „Идентификатор на урок“ бъде подаден като параметър към уеб услугата.
- Както виждаме, уеб услугата има 2 съобщения, едното за вход, а другото за изход.
- Входното съобщение е известно като TutorialNameRequest и има един параметър, наречен TutorialID. Този параметър е от типа number, който е зададен от типа xsd:number.
- Изходното съобщение е известно като TutorialNameResponse и има един параметър, наречен TutorialName. Този параметър е от типа string, който е зададен от типа xsd:string.
Обвързване на типа порт
Портовете се използват в WSDL, за да дефинират една цялостна операция, предлагана от уеб услугата. В предишната тема видяхме, че нашата уеб услуга предоставя 2 съобщения, едното за входа, наречено „TutorialNameRequest“, а другото за изхода, наречено „TutorialNameResponse“. Заедно входното и изходното съобщение образуват това, което е известно като една цялостна операция.
WSDL предоставя елемент, наречен който се използва за дефиниране на операциите, предоставени от уеб услугата.
Така че в нашия горен пример можем да отбележим следното:
- Името на типа порт, който капсулира операцията, е дадено като „Tutorial_PortType“.
- Самата операция получава име „Tutorial“. Така че нашата операция предоставя TutorialName, ако TutorialID е зададен като входен параметър.
- Следват нашите 2 съобщения, едното за входа, а другото за изхода, които формират нашата операция.
В допълнение към елемент, има и елемент, който се използва за определяне на начина на прехвърляне на съобщенията.
- Горният пример показва, че обвързването се състои от име на обвързване, което в нашия случай е дадено като „TutorialSoapBinding“. Обвързването, казано по-просто, е информацията, която клиентското приложение използва, за да се свърже с уеб услугата. След като бъде обвързано с уеб услугата, то има възможността да извиква различните операции, които са предоставени от уеб услугата.
- Транспортният слой е зададен като 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. Този метод ще приема целочислен параметър, наречен „TutorialID“. След това Web методът ще върне низ, наречен „Web Services“.
След това ще създадем конзолно приложение, което ще използва тази уеб услуга и ще извиква нашия уеб метод съответно. Нека разгледаме стъпките, необходими за изпълнението на този пример.
Стъпка 1) Първата стъпка е да създадете вашата уеб услуга. Подробните стъпки за това как Asp.Net обяснено е създаването на уеб проект и уеб услуга тукМоля, следвайте същите стъпки, за да създадете проекта и уеб услугата съответно. Ключовата част е да въведете кода по-долу във файла с уеб услугите.
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 Обяснение:
- Тук създаваме WebMethod, наречен „Guru„99WebService.“ В този уеб метод включваме целочислен параметър, който трябва да се предава всеки път, когато този уеб метод се извиква.
- След това дефинираме променлива, наречена „TutorialName“, която ще съдържа стойността на низа на „Web Services“. Това е стойността, която ще бъде върната при извикване на уеб услугата.
Стъпка 2) След като сме дефинирали файла с уеб услугите, следващата стъпка е да създадем клиентски проект, който ще използва тази уеб услуга. Нека създадем просто конзолно приложение, което ще извиква тази уеб услуга, ще извика „Guru99WebService“ и след това покажете резултата от уеб метода в екрана с лога на конзолата. Следвайте стъпките по-долу, за да създадете конзолно приложение. Щракнете с десния бутон върху файла с решението на Visual Studio и изберете опцията Добавяне->Нов проект.
Стъпка 3) В този етап,
- Уверете се, че първо сте избрали Visual C# Windows опция. След това изберете опцията за създаване на конзолно приложение.
- Дайте име на вашия проект, което в нашия случай е дадено като „Демоприложение“.
След като щракнете върху бутона OK на горния екран, ще можете да видите проекта в Solution Explorer във Visual Studio.
Стъпка 4) В тази стъпка ще зададете конзолното приложение DemoApplication като стартиращ проект. Това се прави, за да се гарантира, че това приложение ще се стартира първо, когато се изпълни целият проект на Visual Studio. Това конзолно приложение от своя страна ще извика уеб услугата, която ще се стартира автоматично от Visual Studio. За да завършите тази стъпка, щракнете с десния бутон върху проекта DemoApplication и изберете опцията „Задай като стартиращ проект“.
Стъпка 5) Следващата стъпка е да добавите сервизния референтен номер на нашия „Guru„99Webservice“ към нашето конзолно приложение. Това се прави, за да може DemoApplication да се позовава на уеб услугата и всички уеб методи в уеб услугата. За да направите това, щракнете с десния бутон върху файла на проекта DemoApplication и изберете опцията от менюто Add->Service Reference.
Стъпка 6) В тази стъпка ще предоставим различните стойности, които са необходими за добавяне на нашата референтна информация за услугата.
- Първо, трябва да изберем опцията за откриване. Тази опция автоматично ще избере WSDL файла за нашата уеб услуга TutorialService.
- След това трябва да дадем име на нашата референция за услуга. В нашия случай ѝ даваме име на Guru99Уебсервиз.
- След това трябва да разгънем опцията TutorialService.asmx, така че да можем да видим метода „GetTutorialService“ от дясната страна. Тук TutorialService.asmx е името на нашия Visual Studio .Net файл, който съдържа кода за нашата уеб услуга.
- След това ще видим нашия уеб метод, който имахме в нашата уеб услуга, известна като „GetTutorialService“.
Когато щракнем върху бутона „OK“, целият необходим код за достъп до тази уеб услуга ще бъде добавен към нашето приложение DemoApplication Console, както е показано по-долу. Снимката на екрана показва, че „Guru„99Webservice“ беше успешно добавен към нашето конзолно приложение.
Стъпка 7) Следващата стъпка е да добавим кода към конзолното ни приложение, за да получим достъп до уеб метода в нашата уеб услуга. Отворете файла с код Program.cs, който се предоставя автоматично с конзолното приложение, и добавете кода по-долу.
namespace DemoApplication { class Program { static void Main(string[] args) { var client = new Guru99Webservice.Guru99WebserviceSoapClient(); Console.WriteLine(client.GetTutorialService(1)); Console.ReadKey(); } } }
Code Обяснение:
- Първата част е да изберете файла Program.cs. Това е основният файл, който се създава от Visual Studio при създаването на конзолно приложение. Този файл е това, което се изпълнява, когато конзолното приложение (в нашия случай DemoApplication) се изпълнява.
- След това създаваме променлива, наречена „client“, която ще бъде зададена на екземпляр на нашата референция към услугата, създадена в по-ранна стъпка. В нашия случай референцията към услугата е 'Guru99Уебсервиз.Guru99WebserviceSoapClient()'.
- След това извикваме нашия уеб метод „GetTutorialService“ в уеб услугата TutorialService. Не забравяйте, че нашият метод GetTutorialService приема целочислен параметър, така че ние просто предаваме целочислен параметър на уеб метода.
- Този последен ред е само за да се гарантира, че екранът с лог файлове на конзолата остава активен, за да можем да видим резултата. Тази команда ще изчака въвеждане от потребителя.
Продукция
Когато всички горепосочени стъпки бъдат изпълнени и DemoApplication бъде стартиран, ще се покаже показаният по-долу резултат.
От изхода можем ясно да видим, че DemoApplication извиква нашата уеб услуга и че низът, върнат от уеб услугата, се показва в нашия регистрационен файл на конзолата.
















