wcf - 从客户端以异步方式调用 WCF 会使 WCF 服务也以异步方式运行吗?

标签 wcf asynchronous

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

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

例如,如果我从 ASP.Net 应用程序以异步方式调用“Add”方法(如下面的代码所示),后端的服务实例是否会等待方法完成? 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 对异步调用的支持严格来说只是客户端功能。

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

无论客户端是通过异步代理还是直接通过异步调用进行调用,都是如此。

通过思想实验很容易证明这是正确的;任何 wcf 服务都可以异步调用,而且这与选择的绑定(bind)无关 - 因此这必须只是客户端设施。

关于wcf - 从客户端以异步方式调用 WCF 会使 WCF 服务也以异步方式运行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14008309/

相关文章:

python - 带有 Celery 的 Django - 找不到现有对象

.NET 计时器 : Whats is the best way to be notified in X seconds?

asp.net-mvc - 使用用户身份从移动客户端访问 WCF 服务

asp.net - WCF:是否有一个属性可以使 OperationContract 中的参数成为必需的?

wcf - 创建无 session 或 session channel

java - 为什么即使在使用 SwingUtilities.invokeLater 后我的 GUI 仍然挂起?

java - GAE - 我应该链接异步回调吗?

java - 如何在权限请求完成之前正确暂停应用程序?

c# - WCF 引用出现 "Service_References"命名空间

c# - 在子目录中托管 WCF Web 服务