Web 应用程序 BLL 层中所有可能的缓存选项\级别是什么
(我知道我们只能在后面的 aspx 和 ascx 代码中使用 Session 字典,对吗?)
最佳答案
session 在 ASP.NET Web 应用程序的任何级别都可以作为存储介质使用,但是访问它所涉及的许多类都是密封的并且不容易模拟(HttpContext、HttpSessionState 等),这被认为是不好的做法让您的业务逻辑“知道”您的应用程序是如何托管的。我建议将任何缓存实现隐藏在通用 ICache 接口(interface)后面,如果您在另一个应用程序中重新使用 BLL,则可以轻松切换。
您可以使用的几个选项是:
使用 HttpContext.Items 的每个请求缓存 (http://www.4guysfromrolla.com/articles/060904-1.aspx)
使用 HttpContext.Session 的 session 缓存(如果您的应用程序是负载平衡的,并且您没有粘性 session ,则必须完成额外的工作以确保一致的 session 状态(例如使用 SqlSessionState))。
使用 HttpContext.Cache 或 HttpRuntime.Cache 的应用程序缓存(同样,如果您的应用程序是负载平衡的并且您没有粘性 session ,则必须完成额外的工作以确保一致的应用程序缓存)。
希望这对您有所帮助。
关于c# - asp.net BLL 类中的各种缓存选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7992149/