فایل 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: محل و آدرس سرویسها برای دسترسی به آنها.
این ساختار به سرویسدهنده و سرویسگیرنده کمک میکند تا بهصورت دقیق با یکدیگر ارتباط برقرار کنند.