5 asp.net webforms global-variables
这是一个示例全局声明变量:
Public Shared str as String
Run Code Online (Sandbox Code Playgroud)
但是,此全局声明仅适用于一种Web表单。是否可以声明其他Web表单可以使用的全局变量?
Web 编程,即:asp.net,是无状态的。这意味着与传统的桌面编程不同,一个页面请求与另一个页面请求无关。
在页面之间共享信息有几种标准方式:全局、会话、Cookie、缓存、数据库、查询字符串参数和表单发布参数。
全局- 数据存储在 global.asax 文件中声明的全局变量中。此数据可跨所有用户/页面使用,并且会一直存在,直到 IIS 重置或您有意将其清除。通常这是一个非常糟糕的主意,因为当值发生变化时,您很容易遇到线程问题,并且您通常不会在所有用户/会话之间共享可变值。
会话- 数据存储在服务器端(或在 Web 服务器的内存中或在状态服务器中)。这是每个用户。适用于单个 Web 服务器实现;然而,对于这篇关于负载平衡 Web 服务器的简单帖子来说,存在一些过于复杂的缺点。在应用程序重新启动期间,内存会话可能会被清除;状态服务器将允许在该事件中持久化会话值。然而,状态服务器通常需要数据库往返,这通常会抵消使用它而不是进行常规数据库调用的所有优势。
Cookies - 数据存储在浏览器中,并在每次页面请求时发送。这是每个用户。适用于少量数据,一般小于 4KB。然而,数据被发送到浏览器,当然可以被最终用户检查。通常你会希望数据加密。负载平衡的 Web 服务器没有问题;但是会导致客户端和服务器之间来回发送的数据量稍大。也没有关于 Web 服务器重启的问题。可以设置为关闭浏览器后自动清除。
缓存- 数据存储在类似 memcache 的缓存机制中,该机制可能与 Web 服务器位于同一台机器上,也可能不在同一台机器上。通常用于更高级的分布式应用程序。做你的研究。
数据库- 数据存储在某种类型的数据库中,例如 MS SQL Server。非常适合需要长期生存的持久数据。缺点是需要调用数据库来按需拉取数据;这可以通过一般硬件和网络速度来缓解。请注意,会话状态服务器具有完全相同的缺点。
查询字符串- 在页面之间传输一些数据的简单方法。例如在一个页面上显示帐户列表并链接到另一个页面上的单个帐户视图。对于在整个应用程序中保留一段数据通常没有用。可以轻松地为网站上的特定视图添加书签。
表单发布- 类似于查询字符串。主要区别在于数据从一个页面发布到另一个页面,而不是在查询字符串行上;这也是不可标记的。
| 归档时间: |
|
| 查看次数: |
5891 次 |
| 最近记录: |