آموزش 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 " به عنوان یک پارامتر خروجی تولید کرده و آن را ارسال می کند .