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





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


پنجشنبه 23 شهریور 1396 11:39 ب.ظ
Paragraph writing is also a excitement, if you know afterward you can write otherwise it is complex to write.
چهارشنبه 15 شهریور 1396 06:28 ب.ظ
Does your site have a contact page? I'm having a tough time locating it but, I'd like to send you an e-mail.
I've got some recommendations for your blog
you might be interested in hearing. Either way, great website and
I look forward to seeing it develop over time.
چهارشنبه 1 شهریور 1396 01:31 ب.ظ
Write more, thats all I have to say. Literally, it seems as though you relied on the video to make your point.
You obviously know what youre talking about, why waste your
intelligence on just posting videos to your weblog when you could be giving us something enlightening to read?
 
لبخندناراحتچشمک
نیشخندبغلسوال
قلبخجالتزبان
ماچتعجبعصبانی
عینکشیطانگریه
خندهقهقههخداحافظ
سبزقهرهورا
دستگلتفکر


درباره وبلاگ

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

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








جستجو

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