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



ساير




 

 

 

SAKHA RAVESH CO.

 ا مروز

 شنبه  9  مرداد  1389  2010  Jul.  31   Saturday ToDay
صفحه اصلی  مقالات نکته هادايره المعارف خودآموزها | تازه ها خود آزمون ها    
  نسخه قابل چاپ  

    5 4 3 2 1 

 عنوان

 نويسنده

  مشاهده

 تعداد آراء

 امتياز

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

 مديريت وب

4344

5

4.2

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

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

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

در اين بخش بحث خود را بر روی 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  خواهيم پرداخت .



جستجو

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


 

 

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



              

 

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