بررسی Property های مربوط به متد Web Service
دوشنبه 10 خرداد 1395در این مقاله ، انواع Property های مربوط به Web method های مختلف را بررسی می کنیم. سپس نحوه ی به کارگیری آن ها در برنامه را همراه با مثال بیان می کنیم.
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 ، دو متد را از هم تشخیص بدهد.
- ASP.net
- 1k بازدید
- 3 تشکر