【发布时间】:2013-05-09 19:31:58
【问题描述】:
我知道为了让 ASP.Net 处理程序支持会话状态,您需要同时实现 IHttpHandler 和 IRequireSessionState,但为什么默认情况下不提供会话状态?如果出于性能原因,那么有一个像IDoesNotRequireSessionState这样的接口不是更好吗?
【问题讨论】:
标签: asp.net session-variables ihttphandler
我知道为了让 ASP.Net 处理程序支持会话状态,您需要同时实现 IHttpHandler 和 IRequireSessionState,但为什么默认情况下不提供会话状态?如果出于性能原因,那么有一个像IDoesNotRequireSessionState这样的接口不是更好吗?
【问题讨论】:
标签: asp.net session-variables ihttphandler
这是因为会话阻塞了异步操作,并且句柄通常用于长时间操作,例如文件的制作和下载 - 如果您保持会话长时间操作,则会阻塞其余页面。
句柄也是根据获得响应所需的最低限度的想法制作的。
关于会话锁:
Web app blocked while processing another web app on sharing same session
jQuery Ajax calls to web service seem to be synchronous
ASP.NET Server does not process pages asynchronously
Replacing ASP.Net's session entirely
【讨论】:
如果出于性能原因,那么最好有一个 IDoesNotRequireSessionState 之类的接口?
绝对不是,因为每个实现处理程序的人都必须知道这个接口的存在。就性能而言,从 ASP.NET 获得的 HTTP 处理程序是最快的。因此,如果您想用诸如会话之类的垃圾来污染它,那么您最好明确地这样做,并为此承担全部责任,通过实现一些您应该知道的接口。
【讨论】: