`
izuoyan
  • 浏览: 9263920 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

AggregateCacheDependency、CacheDependency、SqlCacheDependency Asp.net 2.0

阅读更多

出处:http://hi.baidu.com/zhaobf/blog/item/948ae7bfe4f43c0e18d81f28.html

Asp.net 2.0新增的缓存管理:
CacheDependency
跟踪缓存依赖项,缓存依赖项可以是应用程序的 Cache 中的文件、目录或与其他对象的键。

SqlCacheDependency类在所有受支持的 SQL Server 版本 (7.0, 2000, 2005) 上监视特定的 SQL Server 数据库表,以便在该表发生更改时,自动从 Cache 中删除与该表关联的项。 数据库表发生更改时,将自动删除缓存项,并向 Cache 中添加新版本的项。在使用 SQL Server 2005 数据库时,SqlCacheDependency 类还支持与 System.Data.SqlClient.SqlDependency 类进行集成。使用 SQL Server 2005 的查询通知机制来检测使 SQL 查询结果无效的数据更改。与 SQL 查询关联的任何缓存项都将从 System.Web.Caching.Cache 中移除。在使用 SQL Server 2005 时,可以使用 SqlCacheDependency 类向应用程序的 Cache 添加依赖于 SQL Server 数据库表或 SQL 查询的项

AggregateCacheDependency类监视依赖项对象的集合,以便在任何依赖项对象更改时,该缓存项都会自动移除。数组中的对象可以是 CacheDependency对象、SqlCacheDependency 对象、从 CacheDependency派生的自定义对象或这些对象的任意组合.

AggregateCacheDependency类与 CacheDependency类的不同之处在于前者允许您将不同类型的多个依赖项与单个缓存项关联。例如,如果您创建一个从 SQL Server 数据库表和 XML 文件导入数据的页,则可创建一个 SqlCacheDependency对象来表示数据库表的依赖项,以及一个 CacheDependency来表XML 文件的依赖项。可创建 AggregateCacheDependency类的一个实例,将每个依赖项添加到该类中,而不是为每个依赖项调用 Cache.Insert 方法。然后,可使用单个Insert 调用使该页依赖于 AggregateCacheDependency实例。

AggregateCacheDependency示例:

1 ' When the page is loaded, use the
2 ' AggregateCacheDependency class to make
3 ' a cached item dependent on two files.
4
5 Sub Page_Load(sender As Object, e As EventArgs)
6 Dim Source As DataView
7
8 Source = Cache("XMLDataSet")
9
10 If Source Is Nothing
11 Dim DS As New DataSet
12 Dim FS As FileStream
13 Dim Reader As StreamReader
14 Dim txtDep As CacheDependency
15 Dim xmlDep As CacheDependency
16 Dim aggDep As AggregateCacheDependency
17
18
19 FS = New FileStream(Server.MapPath("authors.xml"),FileMode.Open,FileAccess.Read)
20 Reader = New StreamReader(FS)
21 DS.ReadXml(Reader)
22 FS.Close()
23
24 Source = new DataView(ds.Tables(0))
25 ' Create two CacheDependency objects, one to a
26 ' text file and the other to an XML file.
27 ' Create a CacheDependency array with these
28 ' two objects as items in the array.
29 txtDep = New CacheDependency(Server.MapPath("Storage.txt"))
30 xmlDep = New CacheDependency(Server.MapPath("authors.xml"))
31 Dim DepArray() As CacheDependency = {txtDep, xmlDep}
32
33 ' Create an AggregateCacheDependency object and
34 ' use the Add method to add the array to it.
35 aggDep = New AggregateCacheDependency()
36 aggDep.Add(DepArray)
37
38 ' Call the GetUniqueId method to generate
39 ' an ID for each dependency in the array.
40 msg1.Text = aggDep.GetUniqueId()
41
42 ' Add the new data set to the cache with
43 ' dependencies on both files in the array.
44 Cache.Insert("XMLDataSet", Source, aggDep)
45 If aggDep.HasChanged = True Then
46 chngMsg.Text = "The dependency changed at: " & DateTime.Now
47
48 Else
49 chngMsg.Text = "The dependency changed last at: " & aggDep.UtcLastModified.ToString()
50 End If
51
52
53 cacheMsg1.Text = "Dataset created explicitly"
54 Else
55 cacheMsg1.Text = "Dataset retrieved from cache"
56 End If
57
58
59 MyLiteral.Text = Source.Table.TableName
60 MyDataGrid.DataSource = Source
61 MyDataGrid.DataBind()
62 End Sub
63
64
65 Public Sub btn_Click(sender As Object, e As EventArgs )
66
67 If (MyTextBox.Text = String.Empty) Then
68 msg2.Text ="You have not changed the text file."
69 Else
70 msg2.Text="You added " & MyTextBox.Text & "."
71
72 ' Create an instance of the StreamWriter class
73 ' to write text to a file.
74 Dim sw As StreamWriter
75 sw = File.CreateText(Server.MapPath("Storage.txt"))
76
77 ' Add some text to the file.
78 sw.Write("You entered:")
79 sw.WriteLine(MyTextBox.Text)
80
81 ' Write arbitrary objects to the file as needed.
82 sw.Write("Text added at:")
83 sw.WriteLine(DateTime.Now)
84 sw.WriteLine("-------------------")
85 sw.Close()
86 End If
87 End Sub
88

ASP.NET 2.0 允许您使用 SqlCacheDependency 类创建依赖于数据库中表或行的缓存项。当表中或特定行中发生更改时,带有依赖项的项便会失效,并会从缓存中移除。可以在 Microsoft SQL Server 7.0SQL Server 2000 SQL Server 2005 中设置表的依赖项。如果您使用 SQL Server 2005,还可以设置特定记录的依赖项。

ASP.NET 2.0 SQL 缓存依赖项提供以下功能:

1. SQL 缓存依赖项可用于应用程序缓存和页输出缓存。

2. 可在 SQL Server 7.0 及更高版本中使用 SQL 缓存依赖项。

3. 可以在网络园(一台服务器上存在多个处理器)或网络场(多台服务器运行同一应用程序)中使用 SQL 缓存依赖项。

4. SQL 缓存依赖项关联的数据库操作比较简单,因此不会给服务器带来很高的处理成本。

ASP.NET 2.0 SQL Server 7.0 SQL Server 2000 的缓存依赖项实现了一个轮询模型。ASP.NET 进程内的一个线程会以指定的时间间隔轮询 SQL Server 数据库,以确定数据是否已更改。如果数据已更改,缓存依赖项便会失效,并从缓存中移除。可以在 Web.config 文件中以声明方式指定应用程序中的轮询间隔,也可以使用 SqlCacheDependency类以编程方式指定此间隔。

对于 SQL Server 7.0 SQL Server 2000SQL 缓存依赖项仅限于表级别的数据更改。可以将 ASP.NET 配置为轮询数据库来确定表中的更改,但不能确定特定行中的更改。

启用 SQL 缓存

为了在 SQL Server 7.0 SQL Server 2000 中使用 SQL 缓存依赖项,必须先将 SQL Server 配置为支持缓存依赖项。ASP.NET 提供了一些实用工具,可用于配置 SQL Server 上的 SQL 缓存,其中包括一个名为 Aspnet_regsql.exe 的工具和 SqlCacheDependencyAdmin.

SQL Server 2005 为缓存依赖项实现的模型不同于 SQL Server 7.0 SQL Server 2000 中的缓存依赖项模型。在 SQL Server 2005 中,不需要执行任何特殊的配置步骤来启用 SQL 缓存依赖项。此外,SQL Server 2005 还实现了一种更改通知模型,可以向订阅了通知的应用程序服务器发送通知,而不是依赖早期版本的 SQL Server 中必需的轮询模型。

SQL Server 2005 缓存依赖项在接收通知的更改类型方面更具灵活性。SQL Server 2005 监控对特定 SQL 命令的结果集的更改。如果数据库中发生了将修改该命令的结果集的更改,依赖项便会使缓存的项失效。此功能使得 SQL Server 2005 可以提供行级别的通知。

类别:c# | 浏览(77) | 评论(0)
分享到:
评论

相关推荐

    ASP.NET2.0输出缓存

    ASP.NET 2.0 输出缓存是针对由数据库驱动的Web应用程序提高性能的关键技术。由于数据库查询通常是应用程序响应时间的主要瓶颈,尤其是面对高并发和大数据量的场景,缓存技术可以显著提升用户体验。缓存的基本原理是...

    asp.net中SqlCacheDependency缓存技术概述

    本文实例讲述了asp.net中SqlCacheDependency缓存技术,对于大型web程序设计来说具有很高的实用价值。具体如下: 对于访问量大,但更新较少的网站中使用缓存技术,可以大大提高运行效率;加上.NET 2.0提供的缓存依赖...

    asp.net开发中怎样去突破文件依赖缓存.docx

    在ASP.NET开发中,缓存是提升应用性能和效率的重要工具。Cache类是ASP.NET提供的一种内置缓存机制,位于`System.Web.Caching`命名空间下,主要用于Web应用程序中的数据缓存。它允许开发者存储各种类型的数据,并在...

    asp.net开发中怎样去突破文件依赖缓存

    在ASP.NET开发中,缓存是提升Web应用性能的关键技术之一。Cache对象是ASP.NET提供的一种高效的数据存储机制,它可以缓存数据以减少对数据库或其他资源的访问,从而提高响应速度。今天我们将深入探讨如何利用Cache...

    SqlCacheDependency 基于多表的缓存应用

    这确保了只要其中一个`CacheDependency`失效,整个`AggregateCacheDependency`就会使关联的所有缓存数据失效。 ```csharp private AggregateCacheDependency GetDependency() { AggregateCacheDependency aggDep...

    Pet Shop 4.0 架构与技术分析PPT.ppt

    Pet Shop 4.0 是一个经典的应用程序示例,主要用于展示微软.NET Framework 2.0 和 Asp.Net 技术在构建企业级Web应用程序中的应用。它起源于.NET与J2EE技术之间的比较,作为.NET平台的一个标杆案例,为开发者提供了...

    深入分析缓存依赖中cachedependency对象及周边小讲

    `AggregateCacheDependency`类则允许开发者集合多个`CacheDependency`或`SqlCacheDependency`对象,形成一个单一的依赖项,这样当集合中的任何一个对象发生变化时,缓存项都会失效。这对于处理多种类型依赖关系的...

    关于pet shop讲解的ppt

    PetShop的最新版本是4.0,基于.NET Framework 2.0和Asp.Net技术,旨在为开发者提供一个学习和理解.NET设计模式的实践案例。 【系统架构设计】 PetShop采用了典型的三层架构设计,包括数据访问层、业务逻辑层(领域...

    PetShop4.0架构设计.ppt

    它的发展历程见证了.NET Framework 2.0和Asp.Net的演进,成为学习.NET设计的宝贵案例。 PetShop 4.0的架构设计遵循了分层原则,形成了"三层"应用结构,包括数据访问层、业务逻辑层(领域层)和表示层。这种设计模式...

    PetShop 架构

    PetShop的最新版本是4.0,基于.NET Framework 2.0和Asp.Net构建,它是一个用于学习.NET设计模式和架构的优秀案例。 在【系统架构设计】方面,PetShop采用的是典型的"三层"架构,这包括数据访问层(DAL)、业务逻辑...

Global site tag (gtag.js) - Google Analytics