【问题标题】:Calling WCF in async manner from client makes the WCF service also act in async manner?从客户端以异步方式调用 WCF 会使 WCF 服务也以异步方式运行?
【发布时间】:2012-12-23 03:09:18
【问题描述】:

当从客户端以异步方式调用 WCF 服务时,我们知道客户端应用程序未被阻止。

但是在执行异步方法调用时,WCF 端的线程是否被阻塞,或者 WCF 释放了它用来启动方法调用的线程?

例如,如果我从 ASP.Net 应用程序以异步方式调用“添加”方法,如下面的代码所示,后端的服务实例会等到方法完成吗? WCF 使用 PerCall 的 InstanceContext。

        CalculatorClient client = new CalculatorClient();

        // AddAsync
        double value1 = 100.00D;
        double value2 = 15.99D;
        client.AddCompleted += new EventHandler<AddCompletedEventArgs>(AddCallback);
        client.AddAsync(value1, value2);

【问题讨论】:

    标签: wcf asynchronous


    【解决方案1】:

    WCF 对异步调用的支持严格来说只是客户端功能。

    事实上,服务无法(也不应该)区分两个客户端,一个进行同步调用,另一个进行异步调用。

    无论客户端是通过异步代理还是直接通过异步调用进行调用,这都是正确的。

    通过思想实验很容易证明这是真的;任何 wcf 服务都可以异步调用,此外,这与选择的绑定无关 - 因此这必须只是一个客户端工具。

    【讨论】:

      猜你喜欢
      • 2012-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-30
      • 2013-08-24
      • 2013-11-21
      • 1970-01-01
      相关资源
      最近更新 更多