افزايش كارآئی برنامه های وب در ASP.NET 2.0 New Page 1



ساير




 

 

 

SAKHA RAVESH CO.

 ا مروز

 سه شنبه  10  اسفند  1395  2017  Feb.  28   Tuesday ToDay
صفحه اصلی  مقالات نکته هادايره المعارف خودآموزها | تازه ها خود آزمون ها    
  نسخه قابل چاپ  

    5 4 3 2 1 

 عنوان

 نويسنده

  مشاهده

 تعداد آراء

 امتياز

 افزايش كارآئی برنامه های وب در ASP.NET 2.0 (بخش هفتم)

 مديريت وب

9721

65

5

با توجه به جایگاه داده در عصر حاضر و  لزوم نگاه جامع به این مقوله مهم ، بر آن شدیم تا محوریت فعالیت های خود را بر  روی این موضوع متمرکز نمائیم . از این رو گروه فابک با شعار فناوری اطلاعات برای کسب وکار شکل گرفت و  خدمات خود  را از طریق  سایت www.fabak.ir  به مخاطبان محترم عرضه می نماید

 

افزايش كارآيی برنامه های وب در ASP.NET 2.0

افزايش كارآئی برنامه های وب در ASP.NET 2.0 (بخش هفتم)
آنچه تاكنون گفته شده است :

  • بخش های اول  و دوم  : اشاره به مجموعه ای از نكات كه رعايت آنها در زمان طراحی می تواند زمينه پياده سازی يك برنامه وب كارآ را فراهم نمايد .
  • بخش سوم  : معرفی برخی ابزارها برای تست برنامه های وب
  • بخش چهارم : مفاهيم اوليه caching ، روش های caching در ASP.NET ، نحوه استفاده از output caching
  • بخش پنجم :  Caching و Query string
  • بخش ششم : Custom Caching Control

در اين بخش به بررسی data  caching خواهيم پرداخت .

 caching داده
 
caching داده ، انعطاف پذيرترين نوع caching است كه استفاده از آن مستلزم انجام مراحلی خاص در برنامه است . پياده كنندگان برنامه های وب می توانند با استفاده از پتانسيل فوق آيتم هائی را  كه هزينه ايجاد آنها گران است به شی cache اضافه نمايند .
cache يك خصلت از كلاس صفحه است و نمونه ای از كلاس  System.Web.Caching.Cache را بر می گرداند . عملكرد شی فوق شباهت زيادی با شی Application دارد ( نظير دستيابی به آن در تمامی صفحات توسط سرويس گيرندگان مختلف ) . علی رغم وجود شباهت های زياد ، دو شی Application و Cache دارای تفاوت هائی اساسی با يكديگر می باشند :

  • شی Cache از نوع thread-safe است . اين بدان معنی است كه پياده كنندگان لازم نيست با صراحت عمليات lock و unlock شی cache را قبل از اضافه كردن و يا حذف يك آيتم از cache انجام دهند . به عنوان نمونه ، در صورت ايجاد يك شی سفارشی ممكن است در يك لحظه بيش از يك سرويس گيرنده قصد استفاده از آن را داشته باشند . در چنين مواردی اين احتمال وجود خواهد داشت كه شرايط استفاده از داده غيرمعتبر برای هر يك از سرويس گيرندگان فراهم گردد . برای غلبه بر محدوديت فوق می توان از روش های مختلفی استفاده نمود . ايجاد يك نسخه ديگر از شی به منظور استفاده از آن در يك صفحه ، يكی از ساده ترين راهكارهای موجود در اين زمينه است . 

  • آيتم های موجود در شی Cache بطور اتوماتيك از آن حذف می گردند . ASP.NET يك آيتم را پس از اتمام مدت زمان اعتبار آن ، در صورت تغيير يكی از اشياء و يا فايل های وابسته و يا كمبود حافظه سرويس دهنده  از cache خارج می نمايد . اين بدان معنی است كه پياده كنندگان می توانند با خيالی آسوده از cache استفاده نمايند بدون اين كه نگران از دست دادن منبع ارزشمند حافظه باشند  چراكه ASP.NET در صورت نياز آيتم ها را از حافظه خارج خواهد كرد . با توجه به اين كه همواره اين احتمال وجود دارد كه آيتم های ذخيره شده از cache خارج شده باشند می بايست همواره قبل از دستيابی ، موجود بودن آنها در cache بررسی گردد .

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

اضافه كردن آيتم به cache
برای اضافه كردن يك شی درون cache از روش های مختلفی استفاده می گردد . يكی از روش های موجود نسبت دهی داده مورد نظر به يك نام و ذخيره آن در شی cache است ( نظير كار با اشياء Session و Application ) . با توجه به اين كه در اين روش نمی توان برای شی cache شده يك مدت زمان خاص را مشخص نمود ، استفاده از اين روش كمتر توصيه شده است .

 Cache("KeyName") = objectToCache

يكی ديگر از روش های درج داده درون شی cache ، استفاده از متد Insert است . متد فوق دارای چهار نسخه خاص است . در جدول زير ، گرامر يكی از نسخه های فوق كه جزئيات بيش تری از كار را با بكارگيری پنچ پارامتر مشخص می نمايد، نشان داده شده است .

Cache.Insert(key, item, dependencies, absoluteExpiration, slidingExpiration)

در جدول زير عملكرد هر يك از پارامترهای متد Insert توضيح داده شده است .

پارامتر

عملكرد

Key

 نام در نظر گرفته شده برای آيتم Cache شده را مشخص می نمايد. بدين ترتيب ، امكان دستيابی به آيتم Cache شده بر اساس نام فراهم  گردد.

Item  شی واقعی كه قصد caching آن را داريم ، مشخص می نمايد .
dependencies

يك شی CacheDependency كه به شما اجازه می دهد يك وابستگی برای آيتم مورد نظر در cache را ايجاد نمائيد .
در صورتی كه قصد تعريف يك آيتم وابسته را نداريم ، مقدار اين پارامتر می بايست  null در نظر گرفته شود .

absoluteExpiration

 يك شی DataTime كه  زمان و تاريخ خارج كردن آيتم cache شده  از cache را مشخص می نمايد .

slidingExpiration

 يك شی TimeSpan كه مدت زمان انتظار بين درخواست های متوالی در صورت عدم استفاده از داده cache شده جهت خروج از cache را مشخص می نمايد .
به عنوان مثال ، در صورتی كه اين مقدار 20 دقيقه در نظر گرفته شود و در مدت زمان فوق هيچگونه درخواستی برای داده فوق دريافت نگردد ،‌ ASP.NET آن را از حافظه خارج خواهد كرد . 

جدول 1 : پارامترهای متد Insert

معمولا" از تمامی پارامترهای فوق در يك زمان استفاده نمی گردد . به عنوان مثال ، Cache dependencies يك ابزار خاص است كه به كمك آن می توان وابستگی يك آيتم cache شده به ساير منابع تاثيرگذار را مشخص نمود .
در صورتی كه قصد استفاده از يك absolute expiration را داشته باشيم ، می بايست مقدار پارامتر slidingExpiration معادل TimeSpan.Zero در نظر گرفته شود.

 Cache.Insert("MyItem", obj, Nothing,DateTime.Now.AddMinutes(60), TimeSpan.Zero)

در صورتی كه مطمئن باشيم اطلاعات موجود در يك آيتم cache شده در يك بازه زمانی خاص معتبر باقی می ماند ( نظير يك گزارش هواشناسی ) ، استفاده از absolute expiration توصيه می گردد . در صورتی كه داده ذخيره شده در cache همواره معتبر باشد ( نظير كاتولوگ يك محصول ) ، استفاده از Sliding expiration  توصيه می گردد . به عنوان يك سياست مطلوب در خصوص بكارگيری  Sliding expiration  ، می توان مقدار پارامتر absoluteExpiration را به DateTime.Max  نسبت داد .

Cache.Insert("MyItem", obj, Nothing,DateTime.MaxValue, TimeSpan.FromMinutes(10))

يك مثال كاربردی 
در برنامه زير يك سيستم caching داده ساده پياده سازی شده است . در اين مثال يك آيتم  با نام TestItem كه تاريخ و زمان جاری را در خود نگهداری می نمايد به مدت 30 ثانيه cache می گردد . پس از postback صفحه ، در صورتی كه تاريخ اعتبار آيتم ذخيره شده در cache به اتمام نرسيده باشد ، مقدار آن از cache بازيابی و در خروجی نمايش داده می شود . پس از اتمام تاريخ اعتبار آيتم ذخيره شده در cache ، مجددا" و بر اساس داده جديد ( تاريخ جديد سيستم ) آيتم مورد نظر ايجاد و  جهت استفاده آتی در cache  ذخيره می گردد .

ذخيره و بازيابی داده در شی cache

<%@ Page Language="VB" Culture="fa-IR" UICulture="fa-IR" %>

<Script Runat="server">
   Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)   Handles Me.Load
    If Me.IsPostBack Then
      lblInfo.Text &= "ارسال مجدد صفحه برای سرويس دهنده<br />"
    Else
      lblInfo.Text &= "ايجاد صفحه<br />"
   End If
  If Cache("TestItem") Is Nothing Then
    lblInfo.Text &= "ايجاد داده جهت ذخيره در cache<br />"
    Dim testItem As DateTime = DateTime.Now
    lblInfo.Text &= "به مدت 30 ثانيه<br />"
    Cache.Insert("TestItem", testItem, Nothing, DateTime.Now.AddSeconds(30), TimeSpan.Zero)
  Else
   lblInfo.Text &= "بازيابی داده از cache...<br />"
   Dim testItem As DateTime = CType(Cache("TestItem"), DateTime)
   lblInfo.Text &= "داده cache شده : '" & testItem.ToString()
   lblInfo.Text &= "'<br />"
 End If
 lblInfo.Text &= "<br />"

End Sub
</Script>

<html xmlns="http://www.w3.org/1999/xhtml" dir ="rtl">
 <head id="Head1" runat="server">
     <title>تست caching داده </title>
 </head>
 <body style="font-family: Tahoma;">
    <form id="form1" runat="server">
      <div>
        <asp:Button ID="Button1" runat="server" Text="ارسال صفحه برای سرويس دهنده" Font-Names="Tahoma" />
        <br /><br />
        <asp:Label ID="lblInfo" runat="server"></asp:Label>
      </div>
   </form>
 </body>
</html>

شكل زير خروجی برنامه فوق را نشان می دهد .

ذخيره و بازيابی داده در شی cache

شكل 1 : ذخيره و بازيابی داده در شی cache

در بخش هشتم بحث خود را بر روی data  caching  ادامه خواهيم داد .



جستجو

مقالات                 
دايره المعارف       
دوره های آموزشی


 

 

مشاهده گروه ها



              

 

 تهيه شده در شرکت سخا روش -  1382