انواع portType ها در WSDL :

همانطور که در بخش قبل اشاره کردیم ، المنت <portType> ، در یک سند WSDL ، مهمترین بخش به حساب می آید .
این المنت چهارچوب اصلی یک وب سرویس را تعیین کرده ، رویدادها و توابع موجود در آن را اعلان نموده و پارامترها و اطلاعات ارسالی و دریافتی را مشخص می سازد .
اگر بخواهیم نقش <portType> در یک سند WSDL را با برنامه نویسی معمولی مقایسه نماییم ، همانند یک کتابخانه رویدادها ، کلاس ها و یا توابع است و هر operation درون آن نیز ، همانند یک تابع به حساب می آید .

انواع توابع opertaion در <portType> :

المنت <portType> دارای ۴ نوع تابع یا operation می باشد ، که در جدول زیر به معرفی آنها پرداخته شده است :

شرح operation نوع
این نوع تابع می تواند یک پیام یا پارامتر را دریافت نماید ، ولی جوابی برای آن ارسال نخواهد نمود . One-way
این نوع تابع یا operation متداول ترین تابع در <portType> است .
تابع Request-response ، یک پیام را دریافت کرده و جوابی را بر مبنای آن ارسال خواهد نمود .
Request-response
این نوع تابع یک پیام یا درخواست را ارسال کرده ، و منتظر جواب آن می ماند . Solicit-response
تابع Notification که یک تابع اطلاع رسان است ، پیام یا درخواستی را ارسال کرده ، ولی منتظر جوابی برای آن نیست . Notification

مثال های عملی برای انواع operation در <portType> :

در این قسمت با ارائه چند مثال عملی ، انواع تابع های المنت <portType> را در عمل نمایش و توضیح می دهیم :

مثالی از یک تابع One-way :

جدول زیر ، یک نمونه از تابع One-way را نشان داده است . کد آن را مرور نمایید ، سپس در ادامه به تشریح آن خواهیم پرداخت :

کد نمونه
یک تابع
One-way
<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>

در مثال فوق ، یک <portType> به نام  glossaryTerms ، یک تابع One-way به نام setTerm را تعیین کرده است .
تابع setTerm اجازه می دهد که کنترل input متعلق به <portType> با نام glossaryTerms ، یک message به نام newTermValues را با پارامترهای  “term” و  “value” ارسال نماید .
ولی منتظر جواب یا output ای برای آن نیست .

مثالی از یک تابع Request-response :

جدول زیر ، یک نمونه از تابع Request-response را نشان داده است . کد آن را مرور نمایید ، سپس در ادامه به تشریح آن خواهیم پرداخت :

کد نمونه
یک تابع
Request-response
<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>

در مثال فوق ، یک <portType> به نام glossaryTerms، یک تابع Request-response به نام  getTerm را تعیین کرده است .
تابع  getTerm به یک input message به نام  getTermRequest  با مقدار ” term ” به عنوان یک پارامتر ورودی نیاز داشته و آن را دریافت می کند .
همچنین  تابع  getTerm ، یک output message به نام  getTermResponse  با مقدار ” value ” به عنوان یک پارامتر خروجی تولید کرده و آن را ارسال می کند .