有关WCF代理会话的问题

时间:2013-07-20 12:21:41

标签: wcf wcf-proxy

您知道如何向客户端添加服务引用,然后创建这个好的代理,以便您可以在服务器端调用方法吗?像这样:

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

我对刚刚发生的事情有几个问题:

  1. 什么时候与服务器建立会话?当我添加服务引用?当我创建代理?或者当我调用方法时?

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

3 个答案:

答案 0 :(得分:1)

没有&#39;会话&#39;默认情况下。您进行服务呼叫时会建立新连接,并且仅在收到响应之前持续。如果要对多个调用进行分组(以确保它们使用相同的实例并依次强制执行处理),则需要在服务协定上使用SessionMode属性,这将影响代理客户端的行为方式。< / p>

答案 1 :(得分:0)

答案 2 :(得分:0)

调用方法时会建立会话。这是可选的 - WCF中的默认值是没有会话。 通常,如果您创建新代理,则它与先前的代理完全分开。有一些例外:

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