فردا روشن اسن به
آموزشASP.NET
صفحه نخست         تماس با مدیر         پست الکترونیک        RSS         ATOM
 
 

در این بخش بحث خود را بر روی data  caching  ادامه داده و به بررسی caching با وابستگی (Dependency) خواهیم پرداخت .

Caching با وابستگی
ماهیت منابع داده نظیر یك بانك اطلاعاتی بگونه ای است كه به مرور زمان اطلاعات درون آنها تغییر می یابد . در صورتی كه در یك برنامه از caching استفاده می گردد ، همواره این احتمال وجود خواهد داشت كه اطلاعات موجود در cache متاثر از این تغییرات نباشد و داده بهنگام نشده از cache استخراج و در اختیار كاربران گذاشته شود. 
برای كمك در جهت حل این نوع مشكلات ، ASP.NET از caching با وابستگی حمایت می نماید . با استفاده از ویژگی فوق این امكان در اختیار پیاده كنندگان قرار می گیرد تا بتوانند حضور یك آیتم در cache  را به منابع دیگری وابسته نمایند . در چنین مواردی ، زمانی كه در منبع مورد نظر تغییراتی ایجاد گردید ، آیتم cache شده بطور اتوماتیك از cache خارج می گردد .
ASP.NET از سه نوع وابستگی حمایت می نماید :

    • وابستگی با سایر آیتم های Cache شده
    • وابستگی با فایل ها و یا فولدرها
    • وابستگی با یك query بانك اطلاعاتی
  • برای ایجاد یك cache وابسته ، می بایست یك شی CacheDependency ایجاد و در ادامه از آن در زمان اضافه كردن آیتم مورد نظر به cache  استفاده كرد .
    كد زیر یك آیتم cache شده را ایجاد كه بطور اتوماتیك و پس از ایجاد تغییرات در فایل xml از cache خارج می شود .

    ایجاد یك وابستگی برای فایل ProductList.xml

     Dim prodDependency As New CacheDependency(Server.MapPath("ProductList.xml"))

    در زمان درج آیتم مورد نظر در cache از شی CacheDependency ایجاد شده در مرحله قبل استفاده می گردد .

    اضافه كردن یك آیتم در cache كه حضور آن در cache به فایل  ProductList.xml  وابسته می گردد

     Cache.Insert("ProductInfo", prodInfo, prodDependency)

    پس از ایجاد شی CacheDependency ، مانیتورینگ آغاز می گردد . در صورتی كه فایل xml قبل از افزودن آیتم وابسته به درون cache تغییر یافته باشد ، بلافاصله تاریخ اعتبار آیتم موردنظر پس از افزودن به cache به پایان می رسد .
    شی  CacheDependency چندین  constructor را ارائه می نماید . در مثال قبل مشاهده گردید كه چگونه شی فوق قادر به ایجاد یك وابستگی بر اساس یك فایل است كه نام آن به عنوان  constructor در نظر گرفته می شود . همچنین می توان یك دایركتوری را معرفی تا تغییرات آن مانیتور گردد .

    مثال : ایجاد و درج یك آیتم درون cache كه حضور آن در cache به یك فایل وابسته می گردد
    در این مثال با ایجاد یك شی وابسته ( یك فایل text ) ،‌ یك عبارت ( " آیتم cache شده وابسته " ) وابسته به شی فوق را در cache قرار می دهیم . تا زمانی كه داده موجود در فایل text تغییر نیابد ، آیتم مورد نظر در cache  باقی می ماند و می توان از آن استفاده كرد . در صورت تغییر در شی وابسته ( فایل dependency.txt ) اعتبار آیتم cache شده به اتمام رسیده و بطور اتوماتیك از cache خارج می شود .
    در این برنامه از دو button به نام " تغییر فایل " و " بررسی آیتم cache شده " استفاده شده است . با استفاده از دكمه "بررسی آیتم cache شده " ، حضور آیتم مورد نظر در cache بررسی و پیام مناسب در خروجی نمایش داده می شود . در صورت كلیك بر روی دكمه "تغییر فایل " ، محتویات شی وابسته ( فایل dependency.txt  ) تغییر یافته و آیتم مورد نظر  از cache خارج می گردد .
    كد برنامه فوق در جدول زیر نشان داده شده است .

    درج یك آیتم  در cache  با وابستگی به یك شی ( فایل )

    <%@ Page Language="VB" Culture="fa-IR" UICulture="fa-IR" %>
    <%@ Import Namespace="System.IO" %>

    <script runat="server">
    '=====================================================================
    Sub cmdModify_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdModify.Click
      lblInfo.Text &= "تغییر فایل وابسته<br />"
      Dim w As StreamWriter = File.CreateText(Server.MapPath("dependency.txt"))
      w.Write(DateTime.Now)
      w.Flush()
      w.Close()
    End Sub
    '=====================================================================
     Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
     If Not Me.IsPostBack Then
        lblInfo.Text &= "ایجاد آیتم وابسته<br />"
        Cache.Remove("File")
        Dim dependency As New System.Web.Caching.CacheDependency( _
        Server.MapPath("dependency.txt"))
        Dim item As String = "آیتم cache شده وابسته"
        lblInfo.Text &= "اضافه كردن آیتم وابسته<br />"
        Cache.Insert("File", item, dependency)
     End If
    End Sub
    '=====================================================================
    Sub cmdGetItem_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdGetItem.Click
      If Cache("File") Is Nothing Then
          lblInfo.Text &= " آیتم مورد نظر در ‌‍cache موجود نمی باشد و امكان بازیابی آن وجود ندارد <br />"
        Else
         Dim cacheInfo As String = CType(Cache("File"), String)
          lblInfo.Text &= " آیتم مورد نظر در ‌‍cache موجود است و امكان بازیابی آن وجود دارد <br />"
      End If
     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" method="post" runat="server">
        <asp:button id="cmdModify" runat="server" Text="تغییر فایل" Width="103px"
                           Font-Names="Tahoma"></asp:button>
        <asp:button id="cmdGetItem" runat="server" Text="بررسی آیتم cache شده" Width="140px"
                          Height="24px" Font-Names="Tahoma"></asp:button><br /><br />
         <asp:label id="lblInfo" runat="server" Width="480px" Height="192px" BorderWidth="2px"
                         BorderStyle="Groove" Font-Names="Tahoma" Font-Size="Small"
                         BackColor="LightYellow"></asp:label>
      </form>
     </body>
    </html>

    خروجی مثال فوق در شكل 1 نشان داده شده است .

     ایجاد caching وابسته به یك شی ( فایل )
    شكل 1 : ایجاد caching وابسته به یك شی ( فایل )

    توضیحات :

    • در زمان فراخوانی برنامه فوق از طریق روتین Page_laod عملیات زیر انجام می شود :
      -  ایجاد یك شی  dependency ( یك فایل متن با نام   dependency.txt )
      - درج آیتم مورد نظر با نام File و مقدار  " آیتم cache شده وابسته " در cache 
      - نمایش پیام  های مناسب در خروجی به كمك كنترل سرویس دهنده label ( با نام   lblInfo  ) 

    • روتین cmdGetItem_Click ، وجود آیتم مورد نظر را در Cache بررسی و در صورتی كه این آیتم در cache موجود نباشد یك پیام خاص از طریق كنترل سرویس دهنده label در خروجی نمایش داده می شود . در صورت وجود آیتم مورد نظر در cache ، مقدار آن از cache بازیابی و یك پیام خاص از طریق كنترل سرویس دهنده label در خروجی نمایش داده می شود .

    • روتین cmdModify_Click ، مسئولیت ایجاد تغییر در فایل وابسته ( نام dependency.txt ) را برعهده دارد . در روتین فوق پس از ایجاد فایل ، تاریخ جاری سیستم در آن نوشته می گردد .

     SQL Server cache dependency  ، یكی از نوع های پیچیده caching وابسته است كه در  ASP.NET 2.0 ارائه شده است . با استفاده از ویژگی فوق بطور اتوماتیك یك  شی داده cache شده ( نظیر یك DataSet )  پس از تغییر داده مرتبط در بانك اطلاعاتی ، غیر معتبر می گردد . از پتانسیل فوق در در SQL Server 2005  ( شامل  Express Edition ) و   SQL Server 2000   حمایت می گردد .
    در بخش یازدهم بحث خود را بر روی data  caching  ادامه داده و به بررسی SQL Server cache dependency  خواهیم پرداخت .





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




درباره وبلاگ

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

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








جستجو

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

                    
 
 
 
شبکه اجتماعی فارسی کلوب | Buy Website Traffic | Buy Targeted Website Traffic