代码之家  ›  专栏  ›  技术社区  ›  heisenberg

IReadonlysessionstate背后的基本原理

  •  4
  • heisenberg  · 技术社区  · 14 年前

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

    2 回复  |  直到 12 年前
        1
  •  3
  •   SWeko    14 年前

    是的,阿法克,你是对的。两个 IReadOnlySessionState IRequiresSessionState 标记接口可以保护您不让您的处理程序变得更重、更慢。

    它们之间的区别只是会话的写入状态。

        2
  •  8
  •   renadeen    12 年前

    你说得对。 IReadOnlySessionState 接口只提供使用context.session对象的可能性。

    但是如果你实施 IRequiresSessionState 接口,您的处理程序在当前会话上放置独占锁,因此同一会话上下文中的所有其他请求(希望使用会话对象)都将等待处理程序完成。

    IReadonlysession状态 不是很好的名称,因为实际上您可以在此类处理程序中修改sessionstate,并且不会得到异常。你只需对自己同时出现的问题负责。