asp.Net SQL 2005の通知データキャッシュを実現
23794 ワード
まず、サービスブローカーがアクティブになっていることを確認し、サービスブローカーをアクティブにするには、次の手順に従います.
データベースとアプリケーションがネットワーク上の2台のサーバに分散している場合は、Service Brokerネットワーク(Transact-SQL)をアクティブにする必要があります.
Service Brokerエンドポイントを作成し、ポート番号と認証レベルを指定します.コードは次のとおりです.
次にaspで実現する.Net 2.0キャッシュのDemo(以下自由港参照)http://www.cnblogs.com/yg_zhang/archive/2006/09/20/508961.htmlどうもありがとうございました)
1.まず、sqlserver 2005にtestのデータベースを作成する.employeeのデータベーステーブルを追加します.
2 vs 2005を使用して新しいaspを作成する.Netプロジェクト
web.configは以下の通り
3.globalを作成する.asaxファイルは、sql 2005通知イベントの傍受を開始する.
4.データアクセスコードを作成する.次のように、EmployeeDataのクラスを作成します.
6.バックグラウンドコードの挿入
USE master ; GO
ALTER DATABASE YouDatabase SET ENABLE_BROKER ; GO
データベースとアプリケーションがネットワーク上の2台のサーバに分散している場合は、Service Brokerネットワーク(Transact-SQL)をアクティブにする必要があります.
Service Brokerエンドポイントを作成し、ポート番号と認証レベルを指定します.コードは次のとおりです.
USE YouDataBase; GO
CREATE ENDPOINT BrokerEndpoint STATE = STARTED AS TCP ( LISTENER_PORT = 4037 ) FOR SERVICE_BROKER ( AUTHENTICATION = WINDOWS ) ; GO
次にaspで実現する.Net 2.0キャッシュのDemo(以下自由港参照)http://www.cnblogs.com/yg_zhang/archive/2006/09/20/508961.htmlどうもありがとうございました)
1.まず、sqlserver 2005にtestのデータベースを作成する.employeeのデータベーステーブルを追加します.
CREATE TABLE [dbo].[employee]( [id] [int] IDENTITY(1,1) NOT NULL, [name] [varchar](50)
2 vs 2005を使用して新しいaspを作成する.Netプロジェクト
web.configは以下の通り
1 xml version="1.0"?>
2 <configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
3 <appSettings/>
4 <connectionStrings>
5 <add name="mySource" connectionString="Data Source=./sql2005;Initial Catalog=test;Persist Security Info=True;User ID=sa;Password=sasa" providerName="System.Data.SqlClient">add>
6 connectionStrings>
7 <system.web>
8 <compilation debug="true"/>
9 <authentication mode="Windows"/>
10 system.web>
11 configuration>
3.globalを作成する.asaxファイルは、sql 2005通知イベントの傍受を開始する.
1."C#" %>
2."System.Data.SqlClient" %>
3.
4."</span><span style="color: #800000;">server</span><span style="color: #800000;">"</span>>
<span style="color: #800080;">5</span><span style="color: #000000;">.
</span><span style="color: #800080;">6</span>. <span style="color: #0000ff;">void</span> Application_Start(<span style="color: #0000ff;">object</span><span style="color: #000000;"> sender, EventArgs e)
</span><span style="color: #800080;">7</span><span style="color: #000000;">. {
</span><span style="color: #800080;">8</span>. <span style="color: #0000ff;">string</span> connStr=ConfigurationManager.ConnectionStrings[<span style="color: #800000;">"</span><span style="color: #800000;">mySource</span><span style="color: #800000;">"</span><span style="color: #000000;">].ConnectionString;
</span><span style="color: #800080;">9</span><span style="color: #000000;">. SqlDependency.Start(connStr);
</span><span style="color: #800080;">10</span><span style="color: #000000;">. }
</span><span style="color: #800080;">11</span><span style="color: #000000;">.
</span><span style="color: #800080;">12</span>. <span style="color: #0000ff;">void</span> Application_End(<span style="color: #0000ff;">object</span><span style="color: #000000;"> sender, EventArgs e)
</span><span style="color: #800080;">13</span><span style="color: #000000;">. {
</span><span style="color: #800080;">14</span>. <span style="color: #0000ff;">string</span> connStr = ConfigurationManager.ConnectionStrings[<span style="color: #800000;">"</span><span style="color: #800000;">mySource</span><span style="color: #800000;">"</span><span style="color: #000000;">].ConnectionString;
</span><span style="color: #800080;">15</span><span style="color: #000000;">. SqlDependency.Stop(connStr);
</span><span style="color: #800080;">16</span><span style="color: #000000;">. }
</span><span style="color: #800080;">17</span>.
4.データアクセスコードを作成する.次のように、EmployeeDataのクラスを作成します.
1.using System; 2.using System.Data; 3.using System.Data.SqlClient; 4.using System.Configuration; 5.using System.Data.Common; 6.using System.Web; 7.using System.Web.Caching; 8.using System.Web.Security; 9.using System.Web.UI; 10.using System.Web.UI.WebControls; 11.using System.Web.UI.WebControls.WebParts; 12.using System.Web.UI.HtmlControls; 13. 14./**////
15./// EmployeeData 16./// 17.public class EmployeeData 18.{ 19. public EmployeeData() 20. { 21. } 22. 23. private HttpContext context; 24. 25. public DataSet GetCacheData() 26. { 27. context = HttpContext.Current; 28. DataSet cache =(DataSet) context.Cache["employee"]; 29. if (cache == null) 30. { 31. return GetData(); 32. } 33. else 34. { 35. return cache; 36. } 37. } 38. 39. 40. public DataSet GetData() 41. { 42. string connStr = ConfigurationManager.ConnectionStrings["mySource"].ConnectionString; 43. SqlConnection conn = new SqlConnection(connStr); 44. SqlDataAdapter adp = new SqlDataAdapter("select id,name from dbo.employee", conn); 45. SqlCacheDependency dep = new SqlCacheDependency(adp.SelectCommand); 46. DataSet ds=new DataSet(); 47. adp.Fill(ds); 48. context.Cache.Add("employee", ds, dep, Cache.NoAbsoluteExpiration, Cache.NoSlidingExpiration, CacheItemPriority.Default, new CacheItemRemovedCallback(this.DataDiff)); 49. return ds; 50. } 51. 52. public void DataDiff(string key, object value, CacheItemRemovedReason reason) 53. { 54. Console.WriteLine("key:" + key); 55. GetData(); 56. } 57. 58.}
这里需要注意的是 select语句的写法, 不能使用 select * 的方式,一定要在表名前加架构名称 如我们这里的 dbo.employee.
5.编写测试页面代码.
1.<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
2.
3.DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4.
5.<html xmlns="http://www.w3.org/1999/xhtml" >
6.<head runat="server">
7. <title> title>
8.head>
9.<body>
10. <form id="form1" runat="server">
11. <div>
12. <asp:GridView ID="GridView1" runat="server" >
13. asp:GridView>
14. div>
15. form>
16.body>
17.html>
18.
6.バックグラウンドコードの挿入
1.using System;
2.using System.Data;
3.using System.Configuration;
4.using System.Web.Caching;
5.using System.Data.SqlClient;
6.using System.Web;
7.using System.Web.Security;
8.using System.Web.UI;
9.using System.Web.UI.WebControls;
10.using System.Web.UI.WebControls.WebParts;
11.using System.Web.UI.HtmlControls;
12.
13.public partial class _Default : System.Web.UI.Page
14.{
15. protected void Page_Load(object sender, EventArgs e)
16. {
17. EmployeeData em=new EmployeeData();
18. GridView1.DataSource = em.GetCacheData();
19. GridView1.DataBind();
20. }
21.
22.}