بررسی Property های مربوط به متد Web Service

دوشنبه 10 خرداد 1395

در این مقاله ، انواع Property های مربوط به Web method های مختلف را بررسی می کنیم. سپس نحوه ی به کارگیری آن ها در برنامه را همراه با مثال بیان می کنیم.

بررسی Property های مربوط به متد Web Service

Web Method attribute

هر متد در وب سرویس که بخواهیم به کاربر نمایش داده شود، باید با استفاده از صفات مربوط به WebMethod   ها ایجاد شده باشد. این WebMethod attribute ها ، صفات مختلفی دارند که ویژگی های مشخصی را از متدهای Web Service برای ما فعال می کنند. در زیر تعدادی از Property های پرکاربرد آن ها آورده شده است .

1-Description

2-CaheDuration

3-TransactionOption

4-BufferResponse

5-EnbledSession

6-MessageName

هر کدام از این Property  ها ویژگی های خاص خودشان را در webMethod attribute ها دارند. در جدول زیر معرفی کوتاهی برای هر کدام آورده شده است .

حال برای هر یک از Property ها مثالی می آوریم.

1-Description

این Property اطلاعات اضافی تری را درباره متدهای به کارگرفته شده در Web Service  به ما می دهد. در مثال زیر طریقه ی تعریف(syntax) یک Description را می توانید ببینید.

به عنوان مثال :

[WebMethod(Description = "This Method Returns Square of given Int Number")]   
public int GetSqureByNumber(int number)   
{   
int ResultedSqure;   
return ResultedSqure = number * number;   
} 

در مثال بالا ما یک سری اطلاعات اضافی درباره ی web method ها فراهم می کنیم. به عبارت دیگر توضیحی درباره ی کاری که این متد انجام میدهد، برای ما فراهم می کند. وقتی این متد به کاربر نمایش داده می شود، به آسانی اطلاعات بیشتری  درباره ی متد را در اختیار کاربر قرار می دهد. مثالی از این کار در پنجره ی زیر نمایش داده شده است .

در مثال بالا وقتی این متد به کاربر نمایش داده می شود، اطلاعات اضافی تری نیز در اختیار کاربر قرار می دهد. بنابراین درک روش کار متد برای کاربر آسان تر خواهد شد .

2- CacheDuration

این Property  مشخص می کند که زمانی که کاربر، درخواستی را برای یک متد مشخص ارسال می کند و از ان جواب می گیرد، تا چه مدت زمانی ، این پاسخ در cache باقی بماند. فایده این Property  در این است که کل خروجی ای که برایش مشخص شود را تا یک زمان مشخصی در حافظه نگه می دارد.

فرض کنید کاربر برای اولین بار درخواست جمع کردن دو عدد 20 و 30 را به متد می فرستد و پاسخ توسط متد فرستاده می شود و زمان بعدی که همین اعداد مشابه توسط کاربر به متد ارسال شوند، پاسخ از cache  گرفته می شود و به کاربر نمایش داده می شود. به جای این که دوباره متد اجرا شود  و پاسخ از آن گرفته شود، پاسخ از حافظه ی cache  گرفته می شود و به کاربر نمایش داده می شود .

به عنوان مثال

[WebMethod(CacheDuration = 100)]   
public int GetSqureByNumber(int number)   
{   
int ResultedSqure;   
return ResultedSqure = number * number;   
}	

متد بالا خروجی را برای 100 ثانیه در Cache  نگه می دارد.

3- TransactionOption

این Property مشخص می کند که تراکنشی در متد با فضای نام System.EnterpriseServices  انجام شده است یا خیر. استفاده از فضای نام برای استفاده از این Property ضروری است.

در زیر تعدادی از امکاناتی که TransactionOption در اختیار شما قرار می دهد را می توانید ببینید:

1- Disabled

2- NotSupported

3- Required

4- RequiresNew

5- Supported

 در زیر مثالی از کاربرد این Property آورده شده است .

در تصویر بالا می توانید امکانات مختلفی که در اختیار شما قرار می گیرد را مشاهده کنید.

3- BufferResponse

 یک property از جنس Boolean است که دارای مقادیر true و false  است و اگر مقدار آن برابر با true  باشد، خروجی را در بافر درخواست ، ذخیره می کند . به صورت پیش فرض نیز مقدار آن برابر با True  است . البته قراردادن خروجی در بافر توصیه نمی شود زیرا وقتی حجم داده های درخواستی زیاد باشد  ، و ما ان ها را در بافر قرار دهیم، سرعت درخواست دهی پایین می آید.

مثال زیر چگونگی استفاده از این Property را نمایش می دهد.

[WebMethod(BufferResponse=false)]   
public int GetSqureByNumber(int number)   
{   
int ResultedSqure;   
return ResultedSqure = number * number;   
}

در مثال بالا مقدار این property برابر با false قرار داده شده است .

EnableSession

این Property  ، اجازه ی فعال سازی session  را در یک XML Web service   به ما می دهد. فقظ کلاس هایی که از کلاس System.Web.Services  مشتق شده باشند ، از session  پشتیبانی می کنند.

این یک property  از نوع Boolean  است که دارای مقادیر true و یا false  است . در زیر حالت های مختلف متد session  که توسط متد web service پشتیبانی می شود آورده شده است .

1- InProc

2- OutProc

3- Custom

4- Off

در تکه کد زیر ، ساختار (syntax) این property آورده شده است :

[WebMethod(EnableSession = true)]   
public int GetSqureByNumber(int number)   
{   
int ResultedSqure;   
return ResultedSqure = number * number;   
} 

Property بالا ، session  را فعال می کند.

4- MessageName

این Property  دو متد که نام ، پارامتر و نوع یکسانی دارند را از هم جدا می کند. به مثال زیر دقت کنید که در آن method overloading اتفاق می افتد.

 مثال :

[WebMethod (MessageName="This returns Squre")]   
public int GetSqureByNumber(int number)   
{   
int ResultedSqure;   
return ResultedSqure = number * number;   
}   
[WebMethod (MessageName="This Returns addition of two numbers")]   
public int GetSqureByNumber(int number,int b)   
{   
int ResultedSqure;   
return ResultedSqure = number + number;   
} 

 در مثال بالا متد هایی که وجود دارند، overloade خواهند شد و برای این که این متد ها در سمت کاربر با یکدیگر متفاوت باشند، پیامی حاوی متن کاری که انجام می دهند در آن ها قرار داده ایم. وقتی تکه کد بالا اجرا شود، خروجی زیر را خواهید دید.

در تصویر بالا می توانید ببینید که نام متد ها مشابه است و به همین دلیل کاربر نمی داند هر متد چه کاری انجام می دهد . با کلیک بر روی هر کدام،  پیام هایی که برای آن ها ایجاد کردیم، نمایش داده می شوند.

این تصویر خروجی ای است که بعد از کلیک کردن بر روی متد اول خواهیم دید.

اگر بر روی متد دوم کلیک کنیم ، خروجی زیر را خواهیم دید.

همان طور که در این مثال ها می بینیم ، ویژگی messageName می تواند کمک زیادی به ما بکند. این Property در زمانی که دو متد  با نام یکسان داشته باشیم از overload آن ها جلوگیری می کند . و کاربر نیز می تواند با استفاده از messageName ، دو متد  را از هم تشخیص بدهد.

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید