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