2011-11-03 79 views
2

什么是所有的缓存选项\在Web的应用程序BLL层可能级别asp.net各种缓存选项

(我的理解,我们可以使用会话字典只有在ASPX和ASCX后面的代码。对吧?)

+0

这真的是一个悬而未决的问题。只要BLL层是ASP.NET请求的一部分,会话就完全可用于BLL层。 (或类似的实施会议)。至于你的问题:有大量的缓存可能性。查看BCL中的新缓存支持。这可能是一个很好的开始>> http://msdn.microsoft.com/en-us/library/dd985642.aspx – Polity

回答

1

该会话在ASP.NET Web应用程序的任何级别都可用作存储介质,但涉及访问它的许多类都是密封的并且不容易嘲弄(HttpContext,HttpSessionState等),并且它被认为是不好的练习让您的业务逻辑“知道”应用程序的托管方式。我建议在通用ICache接口后面隐藏任何缓存实现,如果您在另一个应用程序中重新使用BLL,则可轻松切换。

提供给你几个选项:

使用HttpContext.Items(http://www.4guysfromrolla.com/articles/060904-1.aspx)

会话缓存每个请求高速缓存A使用HttpContext.Session(如果你的应用程序是负载平衡的,并且你没有粘性会话必须做额外的工作来确保一致的会话状态(例如使用SqlSessionState))。

使用HttpContext.Cache或HttpRuntime.Cache的应用程序缓存(如果您的应用程序负载均衡且没有粘性会话,则必须执行额外的工作以确保一致的应用程序缓存)。

希望这会有所帮助。