آموزش WSDL > انواع portType ، پورت ها در WSDL
انواع portType ها در WSDL :
همانطور که در بخش قبل اشاره کردیم ، المنت <portType> ، در یک سند WSDL ، مهمترین بخش به حساب می آید .
این المنت چهارچوب اصلی یک وب سرویس را تعیین کرده ، رویدادها و توابع موجود در آن
را اعلان نموده و پارامترها و اطلاعات ارسالی و دریافتی را مشخص می سازد .
اگر بخواهیم نقش <portType> در یک سند WSDL را با برنامه نویسی معمولی مقایسه
نماییم ، همانند یک کتابخانه رویدادها ، کلاس ها و یا توابع است و هر operation درون
آن نیز ، همانند یک تابع به حساب می آید .
انواع توابع opertaion در <portType> :
المنت <portType> دارای 4 نوع تابع یا 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 " به عنوان یک پارامتر خروجی تولید کرده و آن را ارسال
می کند .