wcf - 如何应用任务异步模式和 WCF 的 ChannelFactory<TChannel>?

标签 wcf asynchronous task channelfactory

我们在 2008 年在 .NET 3.5(现在在 .NET 4.0 下重新编译)上构建了一个强大的 WCF 客户端,它通过 net.tcp 绑定(bind)与我们自己的 WCF 服务通信。健壮的客户端使用 ChannelFactory() 来生成服务代理,我们目前通过它对服务进行同步调用。我们从每次调用中获取结果;我们没有单向电话。

我们正在迁移到 .NET 4.5/C# 5,并希望使用 async/await/TAP 使客户端异步。如何以产生干净代码和良好运行时性能的方式最好地做到这一点?

(我查看了有关此主题的 MS 文档,但它总是谈论运行 svcutil。我们不使用 svcutil;我们直接使用 ChannelFactory。另外:MS 文档用于在 .NET 4.5 下使用 channel 工厂异步调用操作未更改自 .NET 3.0 天以来。似乎 ChannelFactory 还没有接受新的异步。)

最佳答案

您可以将现有的 APM ( Begin*/End* ) 端点包装到 TAP-ready Task使用 TaskFactory.FromAsync .

你可以找到我的Async WCF Today and Tomorrow post很有帮助,它展示了如何将 TAP 与 VS2012 之前的 svcutil 一起使用。

关于wcf - 如何应用任务异步模式和 WCF 的 ChannelFactory<TChannel>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13443022/

相关文章:

python - 正确理解 pexpect 的异步

hadoop - hadoop reduce任务如何处理 map 分组数据

go - 是否可以将 Go Task runner 配置为使用文件扩展名 yaml?

c# - 首先自定义 Entity Framework 代码

c# - 从 C# 应用程序到 ASP.NET 应用程序的通信

android - 当从android上传图像文件到wcf时,图像文件被破坏

c# - 当您调用不带 await 关键字的异步方法时究竟会发生什么?

.net - WCF REST 以 JSON 和 XML 形式返回单个方法

javascript - 异步回调不可能嵌套

c# - Task.IsCompleted 使用缓存标志的原因是什么?