Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有关WCF代理会话的问题_Wcf_Wcf Proxy - Fatal编程技术网

有关WCF代理会话的问题

有关WCF代理会话的问题,wcf,wcf-proxy,Wcf,Wcf Proxy,您知道如何向客户机添加服务引用,然后它会创建这个漂亮的代理,这样您就可以调用服务器端的方法了吗?大概是这样的: MyServiceClient proxy = new MyServiceClient(); proxy.GetMessage(); 关于刚才发生的事情,我有几个问题: 与服务器的会话何时建立?当我添加服务引用时?当我创建代理时?或者当我调用该方法时 如果我将创建另一个MyServiceClient实例,它将是我们之前创建的实例(代理)的单一副本,还是完全是一个新实例 默认情况下没有

您知道如何向客户机添加服务引用,然后它会创建这个漂亮的代理,这样您就可以调用服务器端的方法了吗?大概是这样的:

MyServiceClient proxy = new MyServiceClient();
proxy.GetMessage();
关于刚才发生的事情,我有几个问题:

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

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


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

    检查这些帖子-这将让您非常深入地了解WCF代理,并回答您的问题-

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

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

    Visual Studio连接到该服务,获取其元数据(描述),并由此生成代理类。没有涉及会议。默认情况下,客户机类只是普通类-您可以实例化任意多个副本-任何地方都看不到单个实例。因此,如果没有会话,PerCall上下文模式和PerSession(当doe在PerSession上下文模式下创建/删除服务器实例时)之间有什么区别至于PerCall和PerSession之间的区别,这是另一篇文章中类似的问题