有关WCF代理会话的问题



您知道如何向客户端添加服务引用,然后它创建这个漂亮的代理,以便您可以调用服务器端的方法吗?类似这样的东西:

MyServiceClient proxy = new MyServiceClient();
proxy.GetMessage();

关于刚刚发生的事情,我有几个问题:

  1. 何时建立与服务器的会话?当我添加服务参考时?我何时创建代理?或者当我调用该方法时?

  2. 如果我要创建另一个MyServiceClient实例,它是我们之前创建的实例(代理)的单例副本,还是完全是一个新实例?

默认情况下没有"会话"。当您拨打服务电话时,会建立一个新的连接,并且只持续到收到响应为止。如果要对多个调用进行分组(以确保它们使用相同的实例,并依次强制执行处理),则需要在服务约定上使用SessionMode属性,这将影响代理客户端的行为。

查看这些帖子-这将让您非常深入地了解WCF代理,并应回答您的问题-http://blogs.msdn.com/b/wenlong/archive/2007/10/27/performance-improvement-of-wcf-client-proxy-creation-and-best-practices.aspxhttp://blogs.msdn.com/b/wenlong/archive/2007/10/26/best-practice-always-open-wcf-client-proxy-explicitly-when-it-is-shared.aspx

会话是在调用该方法时建立的。这是可选的-WCF中的默认值是没有会话。通常,如果您创建了一个新的代理,那么它与以前的代理是完全独立的。也有一些例外:

  • 您可以强制代理使用相同的会话(例如,如果您为它们提供共享令牌的常见客户端安全行为)
  • 服务器可以决定将所有请求视为属于同一会话(PerHost实例化),在这种情况下,所有请求(来自所有代理,而不仅仅是您机器上的代理)都将位于同一服务器上下文中

最新更新