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