IReadOnlySessionState背后的基本原理

时间:2010-07-02 15:14:00

标签: c# asp.net session-state

我刚刚实现了一个使用IReadOnlySessionState的处理程序,并想知道为什么需要这个标记接口。 (我知道为了访问Session变量需要它,我的问题是为什么这是从框架设计者的角度来看)我的想法是,处理程序可以尽可能精简,要求他们“选择加入”他们想利用会话状态,但我想知道我是否遗漏了其他东西。

2 个答案:

答案 0 :(得分:8)

你是对的。 IReadOnlySessionState接口只是让您可以使用Context.Session对象。

但是如果你实现了IRequiresSessionState接口,那么你的处理程序会对当前会话进行独占锁定,因此在同一个会话的上下文中所有其他请求(想要使用Session对象)将等待你的处理程序完成。

IReadOnlySessionState不是很好的名字,因为实际上你可以在这样的处理程序中修改SessionState,你不会得到异常。你只需对你的并发问题负责。

答案 1 :(得分:3)

是的,AFAIK,你是对的。 IReadOnlySessionStateIRequiresSessionState都是标记接口,可以防止您使处理程序变得更重,速度更慢。

它们之间的区别仅在于会话的写入状态。