تبلیغات
آموزشASP.NET - افزایش كارآئی برنامه های وب در ASP.NET 2.0 (بخش هفتم)
 
فردا روشن اسن به
آموزشASP.NET
صفحه نخست         تماس با مدیر         پست الکترونیک        RSS         ATOM
 
 
 این بخش به بررسی 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  ادامه خواهیم داد .





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


    دوشنبه 27 شهریور 1396 12:45 ق.ظ
    As the admin of this website is working, no uncertainty very quickly it will be renowned, due to its feature contents.
    سه شنبه 14 شهریور 1396 11:59 ق.ظ
    When some one searches for his required thing, therefore he/she needs to be
    available that in detail, so that thing is maintained over
    here.
    چهارشنبه 1 شهریور 1396 12:55 ب.ظ
    It is perfect time to make a few plans for the future and it's time to be
    happy. I've read this put up and if I may
    just I desire to counsel you few fascinating issues or
    advice. Maybe you can write next articles relating to this article.
    I want to learn more issues approximately it!
     
    لبخندناراحتچشمک
    نیشخندبغلسوال
    قلبخجالتزبان
    ماچتعجبعصبانی
    عینکشیطانگریه
    خندهقهقههخداحافظ
    سبزقهرهورا
    دستگلتفکر


    درباره وبلاگ

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

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








    جستجو

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