فایل WSDL بهطور کلی از چند بخش اصلی تشکیل شده است که هر کدام نقش خاصی در توصیف سرویس وب دارند. این بخشها به سرویسگیرنده کمک میکنند تا نحوه تعامل با سرویس وب را درک کند و به سرویسدهنده اجازه میدهند تا مشخصات سرویس خود را بهطور واضح بیان کند.
1. Types (انواع دادهها)
بخش types در فایل WSDL برای تعریف انواع دادههایی استفاده میشود که در پیامهای SOAP استفاده میشوند. این بخش بهطور معمول شامل تعریف انواع پیچیدهای از دادههاست که ممکن است از ساختارهای دادهای مانند لیستها یا جداول استفاده کنند. این تعریفها معمولاً بهصورت XML Schema نوشته میشوند.
مثال:
<types>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="Person">
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="age" type="xs:int"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
</types>
در این مثال:
-
یک نوع پیچیده به نام
Person
تعریف شده است که شامل دو عنصر است:name
از نوعstring
وage
از نوعint
.
2. Messages (پیامها)
بخش messages برای توصیف دادههایی است که در ارتباطات SOAP ارسال و دریافت میشوند. هر پیام میتواند شامل یک یا چند پارامتر باشد که با استفاده از انواع دادههای تعریفشده در بخش types مشخص میشود.
مثال:
<messages>
<message name="getPersonRequest">
<part name="personId" type="xs:int"/>
</message>
<message name="getPersonResponse">
<part name="person" type="tns:Person"/>
</message>
</messages>
در این مثال:
-
پیام
getPersonRequest
شامل یک پارامتر به نامpersonId
است. -
پیام
getPersonResponse
شامل یک پارامتر به نامperson
است که نوع آن از نوعPerson
است (که در بخش types تعریف شده).
3. Port Types (نوع پورتها)
بخش portType تعریف میکند که سرویس چه عملیاتهایی را ارائه میدهد. هر عملیات معمولاً یک یا چند پیام را دریافت میکند و یک پیام را باز میگرداند. این بخش بهنوعی شبیه به تعریف متدهای یک API است که درخواستها و پاسخها را مشخص میکند.
مثال:
<portType name="PersonServicePortType">
<operation name="getPerson">
<input message="tns:getPersonRequest"/>
<output message="tns:getPersonResponse"/>
</operation>
</portType>
در این مثال:
-
عملیات
getPerson
تعریف شده است که یک پیام ورودی (getPersonRequest
) دریافت میکند و یک پیام خروجی (getPersonResponse
) باز میگرداند.
4. Binding (اتصال)
بخش binding مشخص میکند که هر عملیات چگونه از پروتکلهای مختلف (مثل SOAP) برای ارسال پیامها استفاده میکند. این بخش مشخص میکند که چطور پیامها به فرمتهای خاصی (مثل XML یا SOAP) تبدیل شوند.
5. Service (سرویس)
بخش service آدرسهای مختلفی را که میتوان از آنها برای دسترسی به سرویس استفاده کرد، معرفی میکند. این بخش شامل portها است که مشخص میکند سرویس از کدام پورت برای ارتباط استفاده میکند.
مثال:
<service name="PersonService">
<port name="PersonServicePort" binding="tns:PersonServiceBinding">
<soap:address location="http://www.example.com/personService"/>
</port>
</service>
در این مثال:
-
سرویس
PersonService
به پورتPersonServicePort
وصل است که از پروتکل SOAP استفاده میکند. -
آدرس
http://www.example.com/personService
محل سرویس است.
خلاصه:
-
Types: انواع دادهها را که در پیامهای SOAP استفاده میشوند، تعریف میکند.
-
Messages: پیامهایی که بین سرویسدهنده و سرویسگیرنده رد و بدل میشوند، شامل پارامترها و دادهها را تعریف میکند.
-
Port Types: عملیاتهایی که سرویس ارائه میدهد، همراه با ورودیها و خروجیها.
-
Binding: نحوه ارتباط از طریق پروتکلهای مختلف.
-
Service: محل و آدرس سرویسها برای دسترسی به آنها.
این ساختار به سرویسدهنده و سرویسگیرنده کمک میکند تا بهصورت دقیق با یکدیگر ارتباط برقرار کنند.