HOW TO: 使用 ASP.NET 和 Visual C# .NET 将数据存储在应用程序范围内
概要
本分步指南演示如何通过
Application、
Cache 和
AppSettings 对象存储应用程序范围内的数据。 应用程序范围内的数据是指可用于整个 Web 应用程序的数据。使用 Application 对象
1. | 新建一个 Visual C# ASP.NET Web 应用程序。 |
2. | 向 WebForm1.aspx 添加一个 TextBox 控件。默认情况下将创建 TextBox1。 |
3. | 将以下代码添加到 Page_Load 事件中: TextBox1.Text = Application["abc"].ToString(); |
4. | 将以下代码添加到 Global.asax 文件的代码隐藏模块中的 Application_Start 事件中: Application["abc"] = "hi"; |
5. | 编译该项目。 |
6. | 在浏览器中查看 WebForm1.aspx。 |
使用 Cache 对象
1. | 新建一个 Visual C# ASP.NET Web 应用程序。 |
2. | 向 WebForm1.aspx 添加一个 TextBox 控件。默认情况下将创建 TextBox1。 |
3. | 将以下代码添加到 Page_Load 事件中: TextBox1.Text = Cache["abc"].ToString(); |
4. | 将以下代码添加到 Global.asax 文件的代码隐藏模块中的 Application_Start 事件中: Context.Cache.Insert ("abc", "Hello", null, DateTime.MaxValue, TimeSpan.Zero); |
5. | 备注: 在 Global.asax 文件内部使用 Cache 对象时,必须通过 Context 对象(如 Context.Cache)来访问它。 |
6. | 编译该项目。 |
7. | 在浏览器中查看 WebForm1.aspx。 |
使用 AppSettings 对象
1. | 新建一个 Visual C# ASP.NET Web 应用程序。 |
2. | 向 WebForm1.aspx 添加一个 TextBox 控件。默认情况下将创建 TextBox1。 |
3. | 将以下代码添加到 Page_Load 事件中: TextBox1.Text = ConfigurationSettings.AppSettings["abc"].ToString(); |
4. | 将以下代码添加到同一个代码隐藏文件的顶部: using System.Configuration; |
5. | 在 Web.config 文件中,找到以下部分: <configuration> |
6. | 将以下文本添加到 <configuration> 下面。 请注意 appSettings 是区分大小写的。 <appSettings><add key="abc" value="Hello World" /></appSettings> |
7. | 编译该项目。 |
8. | 在浏览器中查看 WebForm1.aspx。 |
其他备注
• | 如果您对 Global.asax 或 Web.config 文件进行修改(甚至包括用“记事本”),Web 应用程序将重新启动。 这将清除存储在内存中的所有数据,如应用程序和缓存数据,而且,如果会话数据是存储在内存中(亦即,如果您使用的是 InProc 会话状态模式)的话,还包括会话数据。 |
• | Cache 对象具有高级内存管理功能。 出于演示目的,本文将 DateTime.MaxValue 用作绝对到期时间。 因此,该代码并未以最优方式利用这些内存管理功能。 有关 Cache 对象的其他信息,请单击下面的文章编号以查看 Microsoft 知识库中的文章:307225 (http://support.microsoft.com/kb/307225/EN-US/) INFO: ASP.NET Caching Overview(ASP.NET 缓存概4000述) |
• | 如何知道哪种方法最适合您? 您为何选择这一种方法而不选择另一种?在应用程序运行过程中修改代码中变量的值 (read/write) 的这一能力有利有弊。 如果多个处理器 (CPU) 或多个服务器正在运行您的 Web 应用程序,则这一点是有害的。 每个 CPU 或服务器都维护其各自的变量值。 如果您更改一个变量的值,则所作更改不影响其他任何值。• | 使用 Cache 对象:Read/Write - 您可以在应用程序运行过程中添加或修改代码中的项。若要模仿只读代码的模式,请在 Application_Start 事件中设置变量的值,以后在任何地方都不更改它。Cache 对象在您使用它的内存管理功能时变得更加有趣。 如果您的数据需要定期或偶尔刷新,则此对象具有许多基于时间和基于依赖项的功能,它们可以调用回调函数以便让您用来刷新数据。 或者,如果一些函数生成大量可以(或无法)被重用的数据,则缓存会以较低的优先级保持该数据并在其他对象需要内存时将其清除。 | • | 使用 Application 对象:Read/Write - 您可以在应用程序运行过程中添加或修改代码中的项。若要模仿只读代码的模式,请在 Application_Start 事件中设置变量的值,以后在任何地方都不更改它。Application 变量适于存储需要被全局访问但可在运行时被修改的静态项。 | • | 使用 AppSettings 对象:Read only - 在应用程序刚启动时从 Web.config 文件读入的项。 不重新启动应用程序就无法添加或修改项。与 Application 对象变量类似,AppSettings 最适于那些保持为静态且比较易于在一个地方维护的项。 |
|