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

شكل 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 خواهيم پرداخت .