WCF 仅异步操作

Posted

技术标签:

【中文标题】WCF 仅异步操作【英文标题】:WCF Async only operation 【发布时间】:2018-04-01 09:46:44 【问题描述】:

我有一个使用 WCF 服务的异步和同步方法的客户端。

我看不出有什么好的理由来保持同步通话。因为我可以使用 Task 在同步方法中调用异步方法。

当我调用我的服务时,最好不要阻塞 UI。

所以我目前正在尝试删除每个同步调用。 首先,它是 WCF 中的一个好习惯吗?如果不是为什么?

其次,我使用 svcutils 来生成我的文件。我有同步和异步调用。

项目很大,删除同步调用最简单的方法是只使用 svcutils 生成异步调用。 因此,如果出现编译错误,我将只能轻松保持异步。

但我在 svcutils 上找不到任何禁用同步方法生成的选项。

有什么办法吗?

【问题讨论】:

【参考方案1】:

如果是 UI 应用程序,最好只使用异步方法,如您所说 - 在调用期间不要阻塞 UI。

关于 svcutil.exe,它不能只创建异步方法而忽略同步。 您可以使用 /async 参数,但它会将所有内容创建为异步,这对您不起作用。意思是,最好先手动删除同步方法。

【讨论】:

以上是关于WCF 仅异步操作的主要内容,如果未能解决你的问题,请参考以下文章

使用 WCF 中的任务构建异步操作合同的正确方法

异步 WCF 服务超时

WCF服务需要调用异步

WCF - 通道工厂与客户群

如果异步操作已成功获取数据并更新状态,则也仅调度一次操作

WCF系列教程之客户端异步调用服务