XML WSDL


  • WSDL — Web Services Description Language (veb-xizmatlarni tavsiflash tili) degan ma’noni anglatadi
  • WSDL veb-xizmatlarni tavsiflash uchun ishlatiladi
  • WSDL XML’da yoziladi
  • WSDL 2007-yil 26-iyundan beri W3C tavsiyasi hisoblanadi

ULASHISH

WSDL hujjatlari

WSDL hujjati veb-xizmatni tavsiflaydi. U quyidagi asosiy elementlar yordamida xizmatning joylashuvi va metodlarini belgilaydi:

Element Tavsif
<types> Veb-xizmat ishlatadigan (XML Schema) ma’lumot tiplarini aniqlaydi
<message> Har bir operatsiya uchun ma’lumot elementlarini aniqlaydi
<portType> Bajarilishi mumkin bo‘lgan operatsiyalarni va ularda ishtirok etadigan xabarlarni tavsiflaydi.
<binding> Har bir port tipi uchun protokol va ma’lumot formatini aniqlaydi

WSDL hujjatining asosiy tuzilishi quyidagicha:

<definitions> <types>   data type definitions........ </types> <message>   definition of the data being communicated.... </message> <portType>   set of operations...... </portType> <binding>   protocol and data format specification.... </binding> </definitions>


WSDL misoli

Bu WSDL hujjatining soddalashtirilgan qismi:

<message name="getTermRequest">   <part name="term" type="xs:string"/> </message> <message name="getTermResponse">   <part name="value" type="xs:string"/> </message> <portType name="glossaryTerms">   <operation name="getTerm">     <input message="getTermRequest"/>     <output message="getTermResponse"/>   </operation> </portType>

Bu misolda <portType> elementi "glossaryTerms" ni port nomi, "getTerm" ni esa operatsiya nomi sifatida belgilaydi.

"getTerm" operatsiyasi "getTermRequest" nomli kiruvchi xabarga va "getTermResponse" nomli chiquvchi xabarga ega.

<message> elementlari har bir xabarning qismlarini va ular bilan bog‘liq ma’lumot tiplarini aniqlaydi.


<portType> elementi

<portType> elementi veb-xizmatni, bajarilishi mumkin bo‘lgan operatsiyalarni va ularda ishtirok etadigan xabarlarni aniqlaydi.

So‘rov-javob (request-response) tipi eng keng tarqalgan operatsiya tipi, ammo WSDL to‘rtta tipni belgilaydi:

Tip Ta’rif
Bir tomonlama (One-way) Operatsiya xabar qabul qila oladi, lekin javob qaytarmaydi
So‘rov-javob (Request-response) Operatsiya so‘rov qabul qila oladi va javob qaytaradi
Javob so‘rash (Solicit-response) Operatsiya so‘rov yubora oladi va javobni kutadi
Bildirishnoma (Notification) Operatsiya xabar yubora oladi, lekin javobni kutmaydi

WSDL bir tomonlama operatsiyasi

Bir tomonlama operatsiyaga misol:

<message name="newTermValues">   <part name="term" type="xs:string"/>   <part name="value" type="xs:string"/> </message> <portType name="glossaryTerms">   <operation name="setTerm">     <input name="newTerm" message="newTermValues"/>   </operation> </portType >

Yuqoridagi misolda "glossaryTerms" portType’i "setTerm" nomli bir tomonlama operatsiyani aniqlaydi.

"setTerm" operatsiyasi "term" va "value" kiruvchi parametrlariga ega "newTermValues" xabari yordamida yangi glossariy atamalari xabarlarini kiritish imkonini beradi. Biroq operatsiya uchun hech qanday chiqish (output) aniqlanmagan.


WSDL so‘rov-javob operatsiyasi

So‘rov-javob operatsiyasiga misol:

<message name="getTermRequest">   <part name="term" type="xs:string"/> </message> <message name="getTermResponse">   <part name="value" type="xs:string"/> </message> <portType name="glossaryTerms">   <operation name="getTerm">     <input message="getTermRequest"/>     <output message="getTermResponse"/>   </operation> </portType>

Yuqoridagi misolda "glossaryTerms" portType’i "getTerm" nomli so‘rov-javob operatsiyasini aniqlaydi.

"getTerm" operatsiyasi "term" nomli parametrga ega "getTermRequest" nomli kiruvchi xabarni talab qiladi va "value" nomli parametrga ega "getTermResponse" nomli chiquvchi xabarni qaytaradi.


WSDL’ni SOAP’ga bog‘lash (binding)

WSDL bog‘lanishlari (bindings) veb-xizmat uchun xabar formati va protokol tafsilotlarini aniqlaydi.

So‘rov-javob operatsiyasiga misol:

<message name="getTermRequest">   <part name="term" type="xs:string"/> </message> <message name="getTermResponse">   <part name="value" type="xs:string"/> </message> <portType name="glossaryTerms">   <operation name="getTerm">     <input message="getTermRequest"/>     <output message="getTermResponse"/>   </operation> </portType> <binding type="glossaryTerms" name="b1">    <soap:binding style="document"    transport="http://schemas.xmlsoap.org/soap/http" />    <operation>      <soap:operation soapAction="http://example.com/getTerm"/>      <input><soap:body use="literal"/></input>      <output><soap:body use="literal"/></output>   </operation> </binding>

binding elementi ikkita atributga ega — name va type.

name atributi (istalgan nomdan foydalanishingiz mumkin) bog‘lanish nomini aniqlaydi, type atributi esa bog‘lanish uchun portga ishora qiladi, bu holda — "glossaryTerms" portiga.

soap:binding elementi ikkita atributga ega — style va transport.

style atributi "rpc" yoki "document" bo‘lishi mumkin. Bu holda document’dan foydalanamiz. transport atributi ishlatiladigan SOAP protokolini aniqlaydi. Bu holda HTTP’dan foydalanamiz.

operation elementi portType taqdim etadigan har bir operatsiyani aniqlaydi.

Har bir operatsiya uchun tegishli SOAP amali (action) aniqlanishi kerak. Shuningdek, kirish va chiqish ma’lumotlari qanday kodlanishini ham ko‘rsatishingiz kerak. Bu holda "literal" dan foydalanamiz.


W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!