تبلیغات
آموزشASP.NET - State Management در ASP. NET 2.0 (بخش دوازدهم)
 
فردا روشن اسن به
آموزشASP.NET
صفحه نخست         تماس با مدیر         پست الکترونیک        RSS         ATOM
 
 
سه شنبه 24 اسفند 1389 :: نویسنده : ارش کاکاوند

در این بخش با application state آشنا می شویم .

با استفاده از application state می توان اشیاء سراسری ( global )  را با هدف دستیابی توسط هر یك از سرویس گیرندگان ذخیره كرد . عملكرد application state بر اساس كلاس  System.Web.HttpApplicationState می باشد  كه بطور پیش فرض از طریق شی از قبل تعبیه شده Application در تمامی صفحات قابل استفاده است .
طرز كار application state مشابه session state است و  از اشیائی با نوع های مشابه ، نگهداری اطلاعات در سمت سرویس دهنده و گرامر مبتنی بر دیكشنری استفاده می نماید . استفاده از یك شمارنده سراسری  به منظور نگهداری تعداد دفعاتی كه یك عملیات خاص توسط تمامی سرویس گیرندگان یك برنامه وب انجام می شود ، یك نمونه متداول استفاده از application state  می باشد  .
مثلا" می توان یك event handler در فایل global.asax را تعریف كرد تا تعداد session  ایجاد شده و یا  تعداد درخواست های دریافتی توسط یك برنامه را ثبت كند . همچنین ، می توان از روشی مشابه در Page. Load به منظور تعیین تعداد دفعاتی كه یك صفحه خاص توسط سرویس گیرندگان مختلف درخواست شده است ، استفاده كرد .

كد زیر نحوه انجام این كار را مشخص می كند .
 Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
 Dim Count As Integer = CType(Application("HitCounter"), Integer)
 Count += 1
 Application(
"HitCounter") = Count
 lblCounter.Text = Count.ToString()
End Sub

لازم است مجددا" به این نكته اشاره گردد كه آیتم های application state به عنوان شی ذخیره می گردند ، بنابراین می بایست در زمان بازیابی آنها را cast كرد . تاریخ اعتبار و یا مصرف آیتم های ذخیره شده در application state هرگز به اتمام نخواهد رسید و تا زمانی كه برنامه و یا سرویس دهنده راه اندازی مجدد نگردد و یا حوزه برنامه خود را refresh ننماید ( به علت تنظیمات ادواری اتوماتیك پردازه و یا بهنگام سازی یكی از صفحات و یا عناصر موجود در برنامه ) ، امكان استفاده از آنها وجود خواهد داشت .
امروزه اغلب از application state به دلیل عدم كارآئی مناسب  استفاده نمی شود . در مثال قبل ، همواره این احتمال وجود خواهد داشت كه در شمارنده مقدار درستی ذخیره نگردد ( خصوصا" در مواردی كه ترافیك بالا باشد ) . به عنوان مثال ، در صورتی كه دو سرویس گیرنده در یك زمان مشابه صفحه ای را درخواست نمایند ، دارای مجموعه ای از رویدادها به شرح ذیل خواهیم بود :

  • كاربر A مقدار جاری شمارنده را ( فرضا" عدد 432 ) بازیابی می نماید .
  • كاربر B مقدار جاری شمارنده را ( فرضا" عدد 432 ) بازیابی می نماید .
  • كاربر A مقدار شمارنده را تغییر و آن را به 433 تغییر می دهد .
  • كاربر B  مقدار شمارنده را تغییر و آن را به 433 تغییر می دهد .

به عبارت دیگر ، یكی از درخواست ها باعث افزایش شمارنده نمی گردد ، چراكه دو سرویس گیرنده بطور همزمان به شمارنده دستیابی داشته اند . برای پیشگیری از بروز این مسئله ، می بایست از متدهای Lock و Unlock استفاده كرد . با استفاده از متدهای فوق در هر لحظه صرفا" به یك سرویس گیرنده اجازه دستیابی به مجموعه application state  داده می شود . 

 Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
  Application.Lock()
  Dim Count As Integer = CType(Application("HitCounter"), Integer)
  Count += 1
  Application("HitCounter") = Count
  Application.Unlock()
 
 lblCounter.Text = Count.ToString()
End Sub

سایر سرویس گیرندگانی كه صفحه را درخواست می نمایند می بایست تا زمانی كه مجموعه application state آزاد نشده است ، منتظر بمانند . این وضعیت می تواند كاهش كارآئی برنامه را به دنبال داشته باشد .
به عنوان یك قانون كلی ، مقادیری كه دائما" و با فركانس بالا تغییر می یابند نمی توانند كاندیدی مناسب جهت استفاده از application state باشند .
application state در دنیای دات نت بندرت استفاده می شود چراكه دو كاربرد متداول استفاده از آن با روش های موثرتر دیگر جایگزین شده است .

  • در گذشته ، از application state برای ذخیره ثوابت در سطح برنامه نظیر یك connection string بانك اطلاعاتی استفاده می گردید . هم اینك در دات نت می توان این نوع ثوابت را به سادگی در فایل web.config كه به مراتب از انعطاف بیشتری برخوردار است ذخیره نمود .

  • در گذشته برای ذخیره اطلاعاتی كه در یك برنامه از آنها بدفعات استفاده می گردید و برای تولید این اطلاعات زمان زیادی صرف می گردید ، استفاده می شد ( نظیر یك كاتولوگ كامل از محصولات ) . افزایش حجم كاتالوگ و  معتبر سازی داده موجود در اینچنین كاتالوگ هائی ، همواره از مشكلات برنامه نویسان بوده است . هم اینك و با استفاده از دات نت می توان از فنآوری cache كه دارای كارآئی بمراتب بالاتری نسبت به روش های پیشین و بكارگرفته شده در application state است ، استفاده كرد .

 فایل Global.asax
با استفاده از فایل global.asax می توان كد مورد نیاز جهت برخورد با رویدادهائی در سطح برنامه را ایجاد كرد . رویدادهای فوق در نقاط مختلفی از چرخه حیات یك برنامه وب محقق می گردند ( مثلا" زمانی كه session ایجاد می گردد ) . همین موضوع باعث شده است كه فایل global.asax  بتواند در تعامل مناسب با ویژگی های state management قرار بگیرد . مثلا" می توان از فایل global.asax برای مقداردهی اولیه مجموعه ای از اشیاء كه قصد داریم آنها را در  application state ذخیره نمائیم ، استفاده كرد .
فایل global.asax ، همانند یك فایل aspx  . است . با این تفاوت كه این نوع فایل ها نمی توانند شامل تگ های HTML و یا ASP. NET باشند . در مقابل می توان در آنها event handler مورد نیاز را قرار داد . مثلا" فایل global.asax زیر در مقابل رویداد Application.EndRequest از خود واكنش نشان می دهد ( رویدادی كه قبل از ارسال صفحه برای كاربر محقق می گردد ) .

<%@ Application Language="VB" %>
 <script runat=
"server">
   Sub Application_EndRequest(ByVal sender As Object, ByVal e As EventArgs)
      Response.Write(
"<hr>This page was served at " & DateTime.Now.ToString())
   End Sub
</script>

event handler  فوق از متد write شی از قبل تعبیه شده Response برای نوشتن یك footer در پائین صفحه ( تاریخ و زمان ایجاد صفحه ) استفاده می نماید .
هر برنامه ASP.NET می تواند دارای یك فایل global.asax باشد كه پس از استقرار در دایركتوری مجازی مربوطه ، ASP.NET آن را بطور اتوماتیك تشخیص و از آن استفاده خواهد كرد . مثلا" ، اگر فایل global.asax فوق را در یك دایركتوری مجازی قرار دهیم ، شاهد نمایش یك footer در پائین هر یك از صفحات موجود در برنامه خواهیم بود .
اضافه كردن یك footer  اتوماتیك در پائین صفحات ، یك عملیات مفید برای سایت های حرفه ای نمی باشد . نوشتن یك ركورد در یك بانك اطلاعاتی مختص ثبت وقایع ( log ) ، شاید كاربرد مناسب تری از ویژگی فوق را نشان دهد . هم اینك تعداد زیادی از برنامه نویسان برنامه های وب تمایل به  استفاده از فایل global.asax را ندارند . فایل فوق از مدل code-behind حمایت می نماید  .

رویدادهای Application
Application.EndRequest ، صرفا" یكی از رویدادهای موجود جهت استفاده در فایل global.asax است . برای ایجاد یك event handler  متفاوت ، می توان یك روتین با نام دلخواه را ایجاد كرد .
برخی از متداولترین رویدادهای application  عبارتند از :

  • Application_Start : در زمان آغاز به كار برنامه و دریافت اولین درخواست توسط هر یك از كاربران ، محقق می گردد . رویداد فوق در پاسخ به درخواست های بعدی محقق نخواهد شد . از این رویداد معمولا" برای ایجاد و یا cache برخی اطلاعات اولیه  استفاده  می شود.

  •  Application_End : رویداد فوق پس از اتمام فعالیت برنامه ، محقق می گردد ( عمدتا" زمانی كه سرویس دهنده وب راه اندازی مجدد می گردد ) . در روتین مربوطه می توان كد مورد نیاز برای پاكسازی را درج كرد .

  •  Application_BeginRequest : رویداد فوق پس از دریافت هر درخواست توسط برنامه ، محقق می گردد  ( قبل از اجرای كد صفحه )  .

  • Application_EndRequest : رویداد فوق پس از دریافت هر درخواست توسط برنامه ، محقق می گردد  ( پس از اجرای كد صفحه )  .

  • Session_Start : رویداد فوق زمانی محقق می گردد كه درخواست یك كاربر جدید دریافت و یك session فعالیت خود را آغاز نماید .

  • Session_End  : رویداد فوق زمانی محقق می گردد كه  مدت زمان حیات یك session به اتمام رسیده باشد ( از طریق كد و یا بطور اتوماتیك ) . 

  • Application_Error : رویداد فوق در پاسخ به یك خطاء غیرقابل پیش بینی،  محقق می گردد .

در بخش پایانی به جمع بندی دوازده مقاله منتشر شده در خصوص  session state خواهیم پرداخت .





نوع مطلب :
برچسب ها :
لینک های مرتبط :


جمعه 16 آذر 1397 01:26 ق.ظ

Terrific stuff. Thanks a lot!
the best choice cialis woman cialis en mexico precio cialis generique generic cialis soft gels cialis y deporte cialis prezzo di mercato buying cialis overnight cialis generic tadalafil buy cialis dosage rezeptfrei cialis apotheke
چهارشنبه 14 آذر 1397 11:43 ق.ظ

Wow quite a lot of terrific knowledge!
cialis super acti precios cialis peru cialis online deutschland prices on cialis 10 mg free generic cialis cialis savings card cheap cialis cialis generico postepay how to purchase cialis on line how much does a cialis cost
سه شنبه 13 آذر 1397 01:50 ق.ظ

Truly loads of valuable info!
cialis for sale south africa enter site very cheap cialis cialis generic cialis arginine interactio cialis ahumada cialis for daily use are there generic cialis effetti del cialis cialis en 24 hora cialis dosage recommendations
دوشنبه 12 آذر 1397 12:48 ب.ظ

You actually said it superbly!
enter site 20 mg cialis cost we use it cialis online store we recommend cialis info generic cialis 20mg tablets the best site cialis tablets we recommend cheapest cialis cialis generico postepay wow cialis tadalafil 100mg enter site 20 mg cialis cost only now cialis for sale in us
یکشنبه 11 آذر 1397 12:25 ب.ظ

Fantastic content. Many thanks.
prices for cialis 50mg are there generic cialis trusted tabled cialis softabs enter site very cheap cialis how to purchase cialis on line cialis prices in england dose size of cialis cialis generico online prix cialis once a da viagra or cialis
شنبه 10 آذر 1397 12:17 ب.ظ

Amazing content, Thanks!
cialis 5mg billiger cialis for sale in europa cialis generico in farmacia cialis coupon buy cialis online nz wow cialis tadalafil 100mg buy cialis cheap 10 mg cialis 5 mg para diabeticos purchasing cialis on the internet cialis savings card
شنبه 10 آذر 1397 12:53 ق.ظ

Nicely put. Many thanks.
compare prices cialis uk cialis daily new zealand get cheap cialis purchasing cialis on the internet no prescription cialis cheap venta de cialis canada preis cialis 20mg schweiz cialis dosage cialis prices cialis 5 mg para diabeticos
جمعه 9 آذر 1397 01:28 ب.ظ

With thanks! A lot of postings.

cialis 5mg prix female cialis no prescription cialis arginine interactio cialis prezzo di mercato cialis tadalafil preis cialis 20mg schweiz cialis 5 mg cialis 20 mg best price 5 mg cialis coupon printable cuanto cuesta cialis yaho
پنجشنبه 8 آذر 1397 02:26 ب.ظ

Thanks a lot! Great stuff.
tarif cialis france cialis for daily use generic cialis levitra tadalafil generic click here cialis daily uk rx cialis para comprar cipla cialis online tarif cialis france buying brand cialis online cialis with 2 days delivery
پنجشنبه 8 آذر 1397 02:11 ق.ظ

You said it adequately.!
cialis rezeptfrei cialis generika generic cialis pastillas cialis y alcoho cialis without a doctor's prescription import cialis cialis arginine interactio prezzo di cialis in bulgaria cialis from canada cialis generico postepay
چهارشنبه 7 آذر 1397 01:44 ب.ظ

This is nicely expressed! !
cialis without a doctor's prescription buy cialis sample pack cialis with 2 days delivery cialis generika buy cialis online nz enter site 20 mg cialis cost order generic cialis online prescription doctor cialis we recommend cheapest cialis cialis price thailand
پنجشنبه 19 مهر 1397 07:56 ق.ظ

Beneficial knowledge. Thanks.
levitra online buy 10 mg levitra buy generic levitra cheap 20mg levitra cheap 20mg levitra buy levitra online vardenafil 20mg levitra generic buy generic levitra buy levitra generic
چهارشنبه 28 شهریور 1397 06:46 ب.ظ

Fine postings. Regards!
we choice free trial of cialis wow cialis tadalafil 100mg prezzo di cialis in bulgaria 5 mg cialis pharmacie en ligne the best site cialis tablets tarif cialis france cialis billig we choice free trial of cialis buying brand cialis online pastillas cialis y alcoho
سه شنبه 27 شهریور 1397 03:37 ب.ظ

Seriously plenty of helpful tips!
prices on cialis 10 mg cialis generico milano cialis authentique suisse achat cialis en suisse we recommend cheapest cialis cialis prices in england 5 mg cialis coupon printable estudios de cialis genricos cialis herbs buy cheap cialis in uk
پنجشنبه 15 شهریور 1397 04:01 ق.ظ

You actually explained it superbly!
tadalafil tablets buying cialis on internet cialis super kamagra cialis sans ordonnance i recommend cialis generico cialis 100 mg 30 tablet free cialis cialis sans ordonnance cipla cialis online prices for cialis 50mg
سه شنبه 13 شهریور 1397 07:47 ب.ظ

You've made your point very effectively..
buy viagra now is trust pharmacy in canada legitimate canada drugs canadian pharmaceuticals for usa sales canadian pharmaceuticals trusted pharmacy canada scam canadian pharmacy viagra brand canada online pharmacy canadian medications 247 drugstore online shopping
دوشنبه 12 شهریور 1397 08:27 ب.ظ

Wonderful stuff. With thanks!
we recommend cialis best buy cialis rezeptfrei cialis australian price cialis coupons cialis efficacit click now cialis from canada bulk cialis cialis 100 mg 30 tablet we like it safe cheap cialis where to buy cialis in ontario
یکشنبه 11 شهریور 1397 12:53 ب.ظ

Seriously loads of wonderful info!
buy cialis uk no prescription legalidad de comprar cialis buy cialis sample pack cialis super acti cialis per paypa order a sample of cialis the best choice cialis woman prix cialis once a da only now cialis 20 mg cialis generic
سه شنبه 23 مرداد 1397 03:23 ق.ظ

Info effectively considered..
uk online pharmacy viagra buy viagra online at viagra in pharmacy cheapest place to buy viagra online buy viagra online safely buy viagra without prescription buying generic viagra online cheapest viagra with prescription buy generic viagra usa buy viagra online uk
دوشنبه 22 مرداد 1397 12:49 ق.ظ

Nicely put. Cheers.
cialis 5mg prix cialis prices cialis dosage amounts generic cialis review uk cialis australian price cialis 20 mg cost when will generic cialis be available sublingual cialis online cialis rezeptfrei sterreich click now cialis from canada
جمعه 7 اردیبهشت 1397 07:24 ب.ظ

Cheers. An abundance of info!

generic cialis 20mg tablets cialis soft tabs for sale cialis venta a domicilio cialis purchasing we choice free trial of cialis best generic drugs cialis cialis prezzo al pubblico chinese cialis 50 mg we use it 50 mg cialis dose the best choice cialis woman
سه شنبه 4 اردیبهشت 1397 05:02 ق.ظ

You stated it really well.
buying generic viagra buy real viagra online cheap buy viagra for women viagra to buy online uk buy viagra online at uk cheap viagra buy cheap viagra uk where to buy cheap viagra how to get viagra where can i buy viagra online
جمعه 17 فروردین 1397 08:41 ب.ظ

You made your point.
cialis generique what is cialis if a woman takes a mans cialis cialis pills in singapore generic cialis levitra cialis efficacit tadalafil 5mg generic cialis at the pharmacy rx cialis para comprar cialis italia gratis
جمعه 3 فروردین 1397 05:24 ب.ظ

You actually mentioned this superbly.
cialis 5 mg schweiz low dose cialis blood pressure cialis 5mg prix cialis 5mg prix cialis preise schweiz cialis 20mg preis cf cialis qualitat cialis prezzo in linea basso prix de cialis cialis uk
دوشنبه 28 اسفند 1396 12:11 ق.ظ

Beneficial posts. Regards!
buying brand cialis online cialis pas cher paris cialis coupons best generic drugs cialis generic cialis cialis 5 mg schweiz viagra vs cialis effetti del cialis non 5 mg cialis generici cialis kamagra levitra
سه شنبه 14 شهریور 1396 01:56 ب.ظ
Great blog! Do you have any tips and hints for aspiring writers?
I'm hoping to start my own site soon but I'm a little lost on everything.
Would you advise starting with a free platform
like Wordpress or go for a paid option? There are so many choices out there that I'm totally confused
.. Any tips? Kudos!
چهارشنبه 1 شهریور 1396 01:02 ب.ظ
I have learn some excellent stuff here. Certainly value bookmarking for revisiting.
I wonder how so much attempt you set to make any such wonderful informative web site.
 
لبخندناراحتچشمک
نیشخندبغلسوال
قلبخجالتزبان
ماچتعجبعصبانی
عینکشیطانگریه
خندهقهقههخداحافظ
سبزقهرهورا
دستگلتفکر


درباره وبلاگ

سلام من آرش کاکاوند دانشجوی رشته کامپیوتر هستم و ورود شما رابه دنیای aspخوش امدمیگم.حتما نظر بدین تا من کارم رو بهتر ادامه بدم

مدیر وبلاگ : ارش کاکاوند
مطالب اخیر
نویسندگان
صفحات جانبی
نظرسنجی
شما کدام یک از برنامه های زیر را برای طراحی وب انتخاب می کنید؟








جستجو

آمار وبلاگ
کل بازدید :
بازدید امروز :
بازدید دیروز :
بازدید این ماه :
بازدید ماه قبل :
تعداد نویسندگان :
تعداد کل پست ها :
آخرین بازدید :
آخرین بروز رسانی :