|
عنوان
|
نويسنده
|
مشاهده
|
تعداد
آراء |
امتياز
|
|
افزايش كارآئی برنامه های وب در ASP.NET 2.0 (بخش دوازدهم) |
مديريت وب |
4410 |
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
-
بخش
دهم :
بررسی caching
با وابستگی (Dependency)
-
بخش
يازدهم :
سيستم آگاه سازی caching در SQL Server 2000 و SQL Server 7 و نحوه كار آن
در اين بخش
بحث خود را بر روی data
caching ادامه داده و با نحوه ايجاد cache dependency
در بانك اطلاعاتی
Northwind آشنا خواهيم شد.
ايجاد
cache dependency
در بخش
يازدهم
با نحوه پيكربندی يك بانك اطلاعاتی برای حمايت از سيستم آگاه سازی
SQL Server آشنا شديم .پس
از فراهم شدن زيرساخت لازم می توان از آن در برنامه های وب با استفاده از يكی
از روش های زير استفاده نمود .
|
Dim empDependency As New SqlCacheDependency("Northwind", "Employees")
Cache.Insert("Employees", dsEmployees, empDependency) |
بررسی يك مثال كاربردی
در اين
مثال پس از فعال كردن سيستم آگاه سازی
caching بر روی جدول Employees بانك اطلاعاتی Northwind
، يك داده فرضی در cache ذخيره می گردد . در صورت بروز
هر گونه تغيير در جدول Employees ، اعتبار داده cache
شده با توجه به مدت زمان تعريف شده توسط خصلت pollTime
عنصر <sqlCacheDepency> موجود در فايل web.config
به اتمام خواهد رسيد .
بدين منظور عمليات مورد نياز
جهت پياده سازی را در دو فاز مختلف دنبال می نمائيم .
فاز اول : ايجاد زيرساخت لازم برای استفاده از سيستم آگاه سازی
caching
در اين مثال برای فعال كردن سيستم
آگاه سازی caching بر روی بانك اطلاعاتی
Northwind و
ريجستر كردن جدول Employees به منظور حمايت از سيستم آگاه سازی
caching توسط برنامه خط دستوری aspnet_regsql.exe از سوئيچ
C - استفاده شده است
تا در مقابل مشخص كردن نام
كاربر ، رمز عبور و نام سرويس دهنده از يك Connection string استفاده گردد .
مرحله اول : فعال كردن سيستم آگاه سازی
caching بر روی بانك اطلاعاتی
Northwind به كمك
برنامه خط دستوری aspnet_regsql.exe
|
C:\WINDOWS\Microsoft. NET\Framework\V2.0.50727>aspnet_regsql
-ed
-C "Data Source=SRCOSERVER\SQLEXPRESS;Initial
Catalog=NORTHWND;Integrated Security=True"
Enabling the
database for SQL cache dependency.
....
Finished. |
پس از
اجرای دستور فوق
، يك جدول جديد با نام SqlCacheTablesForChangeNotification به بانك اطلاعاتی
Northwind اضافه می گردد. جدول فوق دارای سه ستون notificationCreated ،
tableName و changeId است و از آن برای پيگيری انجام تغييرات استفاده می گردد
.
شكل 1 ماحصل تغييرات بر روی بانك اطلاعاتی
Northwind را پس از اجرای دستور فوق
نشان می دهد .

شكل 1 : ماحصل تغييرات بر روی بانك اطلاعاتی
Northwind
پس از اجرای دستور aspnet_reqsql
مرحله دوم : ريجستر كردن جدول Employees
كه نيازمند حمايت از سيستم آگاه سازی caching است .
|
C:\WINDOWS\Microsoft. NET\Framework\V2.0.50727>aspnet_regsql
-et
-C "Data Source=SRCOSERVER\SQLEXPRESS;Initial
Catalog=NORTHWND;Integrated Security=True"
-t Employees
Enabling the table
for SQL cache dependency.
.
Finished. |
پس از اجرای دستور فوق
، trigger آگاه سازی caching
و stored procedure مورد نياز
برای جدول Employees ايجاد می گردد .
ماحصل تغييرات ايجاد شده بر روی جدول فوق پس از اجرای دستور
aspnet_regsql.exe در شكل های 1 و 2 نشان داده شده است .

شكل 2 :
ايجاد trigger بر روی جدول Employees
پس
از اجرای دستور aspnet_reqsql

شكل 3
: ايجاد stored procedure مورد نياز در ارتباط با
جدول Employees
پس
از اجرای دستور aspnet_reqsql
مرحله سوم : فعال كردن
polling از طريق فايل web.config
|
فعال كردن
polling از طريق فايل web.config |
|
<configuration>
<connectionStrings>
<add name="NORTHWNDConnectionString"
connectionString="Data Source=SRCOSERVER\SQLEXPRESS;
Initial Catalog=NORTHWND;Integrated Security=True"/>
</connectionStrings>
<system.web>
<caching>
<sqlCacheDependency enabled="true" pollTime="15000" >
<databases>
<add name="Northwind"
connectionStringName="NORTHWNDConnectionString" />
</databases>
</sqlCacheDependency>
</caching>
...
</system.web>
</configuration> |
فاز
دوم : استفاده از زيرساخت ايجاد شده سيستم آگاه سازی caching
در برنامه
در اين برنامه از دو button به نام " تغيير
جدول " و "
بررسی آيتم cache شده " استفاده
شده است . با استفاده از دكمه "بررسی آيتم cache شده " ،
حضور آيتم مورد نظر در cache بررسی و پيام مناسب در
خروجی نمايش داده می شود . در صورت كليك بر روی دكمه "تغيير
جدول " ، يكی از ركورهای موجود در جدول Employees
بانك اطلاعاتی
Northwind تغيير يافته و بهانه خارج شدن داده
cache شده از حافظه ايجاد می گردد .
كد برنامه فوق در جدول زير نشان داده شده است .
|
ايجاد cache dependency
در بانك اطلاعاتی NORTHWND |
<%@
Page
Language="VB"
Culture="fa-IR"
UICulture="fa-IR"
%>
<%@
import
Namespace="system.Data"
%>
<%@
import
Namespace="system.Data.SqlClient"
%>
<%@
Import
Namespace="System.Web.Configuration"
%>
<Script
runat="server">
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("CachedItem")
'
Employees ايجاد
يك وابستگی برای جدول
Dim dependency
As
New SqlCacheDependency("Northwind",
"Employees")
Dim dt
As DataTable =
GetEmployeeTable()
lblInfo.Text &=
"اضافه كردن آيتم مورد نظر به cache<br />"
Cache.Insert("CachedItem",
dt, dependency)
End
If
End
Sub
'
=================================================================
Private
connectionString As
String
=_
WebConfigurationManager.ConnectionStrings("NORTHWNDConnectionString").ConnectionString
Function
GetEmployeeTable() As
DataTable
Dim con
As
New
SqlConnection(connectionString)
Dim sql
As
String =
"SELECT * FROM Employees"
Dim da As
New
SqlDataAdapter(sql, con)
Dim ds
As
New
DataSet()
da.Fill(ds,
"Employees")
Return ds.Tables(0)
End
Function
'
==================================================================
Sub
cmdGetItem_Click(ByVal
sender As
Object,
ByVal e
As System.EventArgs)
Handles
cmdGetItem.Click
If Cache("CachedItem")
Is
Nothing
Then
lblInfo.Text &=
"آيتم مورد نظر در cache موجود نمی باشد<br />"
Else
lblInfo.Text &= "آيتم
مورد نظر همچنان در cache موجود است<br />"
End
If
End
Sub
'
=================================================================
Sub
cmdModify_Click(ByVal
sender As
Object,
ByVal e
As System.EventArgs)
Handles
cmdModify.Click
Dim con
As
New
SqlConnection(connectionString)
' بهنگام سازی بانك
اطلاعاتی
Dim
sql As
String =
"UPDATE Employees SET
LastName='sakha ravesh' WHERE LastName='srco'"
Dim
cmd As
New
SqlCommand(sql, con)
Try
con.Open()
cmd.ExecuteNonQuery()
Finally
con.Close()
End
Try
lblInfo.Text
&= "بهنگام سازی بانك
به تمام رسيد ، تا اتمام زمان polling منتظر بمانيد<br />"
End
Sub
'
=================================================================
</Script>
< html
xmlns="http://www.w3.org/1999/xhtml"
dir="rtl"
>
<head
id="Head1"
runat="server">
<title>Untitled
Page</title>
</head>
<body
style="font-family:
Tahoma">
<form
id="form1"
runat="server">
<div>
<asp:Button
ID="cmdModify"
runat="server"
Height="24px"
Text="تغيير
جدول"
Width="103px"
Font-Names="Tahoma"
/>
<asp:Button
ID="cmdGetItem"
runat="server"
Height="24px"
Text="بررسی
آيتم cache شده"
Width="180px"
Font-Names="Tahoma"
/><br
/><br
/>
<asp:Label
ID="lblInfo"
runat="server"
BackColor="LightYellow"
BorderStyle="Groove"
BorderWidth="2px"
Font-Names="Tahoma"
Font-Size="X-Small"
Height="192px"
Width="536px"></asp:Label>
</div>
</form>
</body>
</html> |
خروجی مثال فوق در شكل
4 نشان داده شده است .

شكل 4 : ايجاد cache dependency
در SQL Server 2000
توضيحات :
-
در زمان فراخوانی
برنامه فوق از طريق روتين Page_laod عمليات زير انجام می
شود :
- ايجاد يك شی وابسته برای جدول Employees بانك اطلاعاتی
Northwind
- درج dataset حاوی ركوردهای بازيابی شده از جدول
Employees در cache
- نمايش پيام های مناسب در خروجی به كمك كنترل سرويس دهنده label
( با نام lblInfo )
-
روتين cmdGetItem_Click
، وجود آيتم مورد نظر را در Cache بررسی و در صورتی كه
اين آيتم در cache موجود نباشد يك پيام خاص از طريق
كنترل سرويس دهنده label در خروجی نمايش
داده می شود .
در صورت وجود آيتم مورد نظر در cache ،
مقدار آن از cache بازيابی و يك پيام خاص از طريق كنترل سرويس
دهنده label در خروجی نمايش
داده می شود .
-
روتين cmdModify_Click
، مسئوليت ايجاد تغيير در
جدول Employees بانك اطلاعاتی
Northwind را برعهده دارد .
در بخش
سيزدهم بحث خود را بر روی data caching
ادامه داده و با
سيستم آگاه سازی caching در SQL
Server 2005 آشنا خواهيم شد.
|