大家都知道酒酿蛋是非常传统的美胸食品产后丰胸产品,醪糟也叫酒酿,是由糯米或者大米经过酵母发酵而制成的一种风味食品,其产热量高,富含碳水化合物丰胸产品燕窝酒酿蛋、蛋白质、b族维生素、矿物质等,这些都是人体不可缺少的营养成分酒酿蛋丰胸方法。其中酒酿中含的醣化酵素,能促进乳房的二次发育,具有美胸的作用燕窝酒酿蛋丰胸
افزايش كارآئی برنامه های وب در ASP.NET 2.0 (بخش دوازدهم)
اين مطلب از طريق سايت شرکت سخاروش در اختيار شما گذاشته شده است .

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

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

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

ماحصل تغييرات بر روی بانك اطلاعاتی  NORTHWND پس از اجرای دستور aspnet_reqsql
شكل 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 نشان داده شده است . 

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

ايجاد stored procedure  مورد نياز در ارتباط با جدول 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 نشان داده شده است .

ايجاد cache dependency در  بانك اطلاعاتی
شكل 4 : ايجاد cache dependency در   SQL Server 2000

توضيحات :

در بخش سيزدهم بحث خود را بر روی data  caching  ادامه داده و با سيستم آگاه سازی caching در SQL Server 2005  آشنا خواهيم شد.


استفاده از اين مطلب  با ذکر منبع و اهداف غيرانتفاعی بلامانع است .
http://www.srco.
ir