如何实现的数据缓存在 ASP.NET 中,通过使用 Visual Basic.net 中的基于密钥的依赖项

文章翻译 文章翻译
文章编号: 312358 - 查看本文应用于的产品
本文已归档。它按“原样”提供,并且不再更新。
展开全部 | 关闭全部

本文内容

概要

使用本逐步式指南来实现的数据缓存在 ASP.NET 应用程序中的基于密钥的依赖项。

本示例创建并插入到高速缓存的 DataSet 对象,与通过引用它的键缓存项的另一项上设置的依赖项。有关更多信息和示例的带有基于时间的或基于文件的依赖项缓存数据,请参阅本文中的 REFERENCES 部分。

Back to the top

要求

下面的列表概述了建议的硬件、 软件、 网络的基础结构和服务包,您需要:
  • Microsoft Windows 2000 或 Windows XP。
  • Microsoft Internet Information Services (IIS)。
  • microsoft.net 框架。
  • Microsoft SQL Server。
Back to the top

通过使用 Visual Basic.net 创建 ASP.NET Web 应用程序

以下过程创建新的 ASP.NET Web 应用程序名为 DataCacher
  1. 启动 Microsoft Visual Studio.net。
  2. 文件 菜单上指向 新建,然后单击 项目
  3. 新建项目 对话框中的在 项目类型 框中,单击 Visual Basic 项目。在 模板 框中,单击 ASP.NET Web 应用程序
  4. 位置 框替换 WebApplication # 新项目名称: DataCacher。如果使用的本地服务器为 http://localhost 保留服务器名称。位置 框中看起来类似于这样:
    http://localhost/DataCacher
Back to the top

生成 Web 窗体

注意有关更多的信息,请参阅本文后面的"运行代码"部分。
  1. 添加到您的项目在 Visual Studio.net 中命名 DataCacheSample.aspx 的新 web 窗体。若要这样做,请按照下列步骤操作:
    1. 用鼠标右键单击该项目节点,在解决方案资源管理器中,指向 添加,然后再单击 添加新 web 窗体
    2. 命名该 web 窗体 DataCacheSample.aspx,然后单击 打开
  2. 在 Visual Studio.net 集成的开发环境 (IDE) 切换到设计视图。
  3. 将一个 web 窗体按钮添加到页中:
    1. 拖到绘图页后,web 窗体的按钮。
    2. 选择 web 窗体按钮。将 ID 属性改为 CreateNewOrCached,并将 文本 属性更改为 创建新或缓存
  4. 添加第二个 web 窗体按钮:
    1. 将另一个 web 窗体按钮拖动到页上,并将其放置 CreateNewOrCached 按钮之后。
    2. 选择 web 窗体按钮、 ID 属性更改为 RemoveEntry,然后将 文本 属性改为 RemoveEntry
  5. 添加一个 web 窗体标签,请执行以下操作:
    1. 工具箱 拖到绘图页上的 web 窗体的标签。
    2. 选择 web 窗体标签,并将 ID 属性更改为 CacheStatus,并清除 文本 属性。
  6. 添加一个数据网格,请执行以下操作:
    1. 拖到绘图页后,web 窗体 DataGrid 控件。保留默认的 DataGrid1 ID 属性。
Back to the top

添加代码

添加代码以插入缓存项移除缓存项,并生成缓存依赖项:
  1. 用鼠标右键单击.aspx 网页,然后单击 查看代码 以显示代码。
  2. 要为命名空间列表中添加以下命名空间:
    Imports System.Data.SqlClient
    Imports System.Web.Caching
    						
    笔记 如果省略命名空间,或如果您的命名空间的冗余列表,您将收到一条警告消息。
  3. 切换到设计视图。
  4. 双击 CreateNewOrCached 按钮以显示 CreateNewOrCached_Click 事件的代码。将下面的代码添加到 CreateNewOrCached_Click 事件。

    注意此代码要求您安装 SQL Server Pubs 数据库。
         Private Sub CreateNewOrCached_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CreateNewOrCached.Click
            ' Create a DataSet object from the cache entry with the
            ' CacheDataSetEmployees key.
            Dim CacheDataSetEmployees As Object = CType(Cache.Get("CacheDataSetEmployees"), DataSet)
    
            ' Verify if the object is null.
            If (CacheDataSetEmployees Is Nothing) Then
    
                ' Set a value for the cache entry that serves as the 
                ' key for the dependency.
                Cache("SqlPubsEmployees") = "SomeValue"
    
                ' Create the array of cache key item names.
                Dim keys() As String = {"SqlPubsEmployees"}
    
    
                Dim ds As DataSet = New DataSet()
                ' Create the connection and pass in the ConnectionString.
                Dim MySqlConn As SqlConnection = New SqlConnection("Server=localhost;Database=Pubs;uid=sa;pwd=")
                ' Create the Data Adapter and pass the command text and 
                ' connection to use.
                Dim MySda As SqlDataAdapter = New SqlDataAdapter("SELECT TOP 10 * FROM Employee", MySqlConn)
                ' Populate the DataTable "Employees" in the DataSet.
                MySda.Fill(ds, "Employee")
                ' Set the DataGrid's DataSource to the "Employee" DataTable.
                DataGrid1.DataSource = ds.Tables("Employee")
    
                ' Create a dependency object referencing the array of cache 
                ' keys (keys).
                Dim MyDependency As New CacheDependency(Nothing, keys)
    
                ' Insert the DataSet into Cache with a dependency on 
                ' MyDependency
                Cache.Insert("CacheDataSetEmployees", ds, MyDependency)
                MySqlConn.Close()
    
                ' Display the status of the DataSet/Cache Entry.
                CacheStatus.Text = "New Version Created"
    
    
            Else
    
                ' Display the status of the DataSet/Cache Entry.
                CacheStatus.Text = "Cached Version Used"
                ' Set the DataSource to the cached version of the DataSet.
                DataGrid1.DataSource = CacheDataSetEmployees
            End If
    
            ' Bind the DataGrid to the DataSource.
            DataGrid1.DataBind()
    
        End Sub
    						
    注释 修改了 ConnectionString 上述代码中与您 SQL Server 正常工作。
  5. 切换回设计视图中该 DataCacheSample.aspx 页。
  6. 双击 RemoveEntry 按钮以显示 RemoveEntry_Click 事件代码。
  7. 将下面的代码添加到 RemoveEntry_Click 事件:
    Private Sub RemoveEntry_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RemoveEntry.Click
            ' Remove the cache item listed in the CacheKeys array (keys).
            Cache.Remove("SqlPubsEmployees")
    
            ' Display the status of the cache item.
            CacheStatus.Text = "Cache Item Removed"
    End Sub
    					
  8. 文件 菜单上单击 全部保存 以保存该 web 窗体和其他相关联的项目文件。
  9. 生成项目: 在 Visual Studio.net IDE 中将 生成 菜单上单击 生成解决方案
Back to the top

运行代码

  1. 用鼠标右键单击在解决方案资源管理器中,DataCacheSample.aspx 网页,然后单击 在浏览器中的查看
  2. 单击 CreateNewOrCached 按钮。CacheStatus 标签显示 新的版本创建,并填充 DataGrid 控件。

    注释
    • 因为 CacheDataSetEmployees 缓存键未引用有效的缓存项,当您输入该事件时,会出现 CacheStatus 标签的 新版本创建 设置。在这种情况下创建 数据集DataGrid 控件绑定到,数据集数据集 由使用 CacheDataSetEmployees 高速缓存项输入到高速缓存。
    • 创建名为 MyDependencyCacheDependency 对象。通过使用 Insert 方法添加到缓存中时,MyDependency 对象被列为 CacheDataSetEmployees 项目依赖项。尽管此示例演示基于密钥的依存关系,您还可以使用其他类型的依赖项基于缓存条件,(如文件或时间戳。
  3. 请再次单击 CreateNewOrCached 按钮。

    请注意 CacheStatus 标签显示 缓存版本使用。这意味着使用缓存的 数据集。要验证这是缓存的数据,请使用 SQL 查询分析器或其他工具来修改 Pubs 数据库中显示的记录的一个。修改记录后,请再次单击 CreateNewOrCached 按钮。请注意所做的更改不会显示。 单击 RemoveEntry,然后单击 CreateNewOrCached 再次以查看您对数据库所做的更改。
  4. 单击 RemoveEntry 按钮。

    请注意 CacheStatus 标签显示 缓存项删除。高速缓存项具有 SqlPubsEmployees 键将 RemoveEntry_Click 事件中使用 Cache.Remove 方法中移除。创建时 MyDependency 会列出该数组,其中包含已删除的项的缓存项名称。CacheDataSetEmployees 项将被删除,因为它由作为其依赖项参数使用 Insert 方法和引用 MyDependency 创建。
  5. 请再次单击 CreateNewOrCached

    请注意 CacheStatus 标签显示 创建的新版本。based 上,它不再存在于缓存时都会激发该事件创建数据集。

    此外,请注意 DataGrid 控件显示如填充了数据,即使是从缓存中移除 数据集 项。这是因为默认情况下 EnableViewState 属性设置为 True。这将保持该控件的状态和与缓存项操作,在代码中不相关。对于每个阶段的控件的状态更加直观表示,将 EnableViewState 设置为 False
在现实世界的情况中缓存键数组 (在此示例 数组) 可能会保存用于其他表或其他缓存项的缓存键。 如果使用这些的项目更改然后缓存项 (在此示例 CacheDataSetEmployees) 项之一创建的则将从缓存中移除该依赖项。如果您有您可以通过一个回调反应。有关回调的详细信息,请参阅本文后面"参考"一节。

Back to the top

疑难解答

  • 在高速缓存项数组中列出的项名称必须与实际的缓存项相关联。如果它们不使用依赖项的项不会保留在缓存中正确--例如对于如果键数组中的代码示例包含另一个数组元素,并在元素设置为一个无效的高速缓存项的名称。
  • 缓存键数组没有任何特定的意义,直到它与 CacheDependency 对象一起使用。
  • 如果没有依赖项或其他到期高速缓存中插入项,然后在运行时控件确定何时从缓存中移除该项目。
Back to the top

参考

有关 CacheItemRemovedCallback 请访问下面的 Microsoft 网站:
CacheItemRemovedCallback 委托
http://msdn2.microsoft.com/en-us/library/system.web.caching.cacheitemremovedcallback(vs.71).aspx
注意CacheItemRemovedCallback 定义用于从缓存中移除缓存的项时通知应用程序的回调方法。

关于 CacheDependency 类的信息,请访问下面的 Microsoft 网站:
CacheDependency 类
http://msdn2.microsoft.com/en-us/library/system.web.caching.cachedependency(vs.71).aspx
CacheDependency 类跟踪缓存依赖项的文件、 文件夹,或应用程序的缓存中的其他对象的键。

多个缓存选项可用的 ASP.NET 的简要概述,请访问下面的 Microsoft 网站:
向缓存添加项
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconaddingitemstocache.asp
有关更多的信息请单击下面文章编号,以查看 Microsoft 知识库中相应的文章:
305140信息: ASP.NET 路线图
307225ASP.NET 缓存概述
Back to the top

属性

文章编号: 312358 - 最后修改: 2014年2月24日 - 修订: 4.5
这篇文章中的信息适用于:
  • Microsoft ASP.NET 1.0
  • Microsoft Visual .NET 2002 标准版
  • Microsoft ASP.NET 1.1
  • Microsoft Visual Basic .NET 2003 标准版
关键字:?
kbnosurvey kbarchive kbmt kbcaching kbdatabase kbhowtomaster KB312358 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 312358
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com