自WCF发布以来,WCF的默认实例管理模式是否从Per Call更改为Per Session?

时间:2011-05-18 20:58:05

标签: .net wcf

在本文(link)中,Juval Lowy声明PerCall是默认值。但是,在当前文档(link)中,默认值被描述为PerSession。

自WCF发布以来,这是否发生了变化?如果是这样,有人知道理由吗?

我所读到的关于WCF的所有文档都说避免有状态(PerSession)服务,而是支持无状态(PerCall)服务。

我可能只是看错了吗?

感谢任何照明!

更新:我实际上找到了我正在寻找的内容,并将其添加为答案。谢谢!

3 个答案:

答案 0 :(得分:3)

我实际上找到了我想要的答案:

查看此link

我们在六月份的CTP中对此进行了更改。这是推理:

“使用PerCall,在ServiceContract中需要会话的用户将获得一个持续一次调用持续时间的会话,除非他们将InstanceContextMode更改为PerSession。

使用PerSession的 new 默认值,需要会话的用户将获得与会话通道生命周期相关的实例生命周期,正如他们所期望的那样。在合同中不需要会话的用户仍将获得看起来像PerCall的实例生命周期。这种变化的好处是,用户可以在合同上设置会话要求后获得他们期望的实例生命周期,而无需调整InstanceContextMode。“

答案 1 :(得分:1)

我认为逻辑是ServiceBehavior的默认值是perSession,但ServiceContract的会话是NotAllowed,使每个调用生效。

查看MSDN链接,您可以看到该框架的所有版本,ServiceBehavior默认值始终为perSession。

答案 2 :(得分:1)

我可以向您保证,basicHttp通道的默认行为是PerCall,因为basicHttp绑定不支持PerSession实例化。我有一个运行该配置的服务。 见this blog