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

And*_*ebb 13 wcf asynchronous task channelfactory

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

我们正在迁移到.NET 4.5/C#5,并希望使用async/await/TAP使客户端异步.如何以最佳方式执行此操作以获得干净的代码和良好的运行时性能?

(我已经看过关于这个主题的MS文档,但它总是讨论运行svcutil.我们不使用svcutil;我们直接使用ChannelFactory.另外:使用.NET 4.5下的通道工厂异步调用操作的MS文档不变自.NET 3.0起.似乎ChannelFactory尚未接受新的异步.)

Ste*_*ary 7

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

您可能会发现我的Async WCF Today和Tomorrow post有用,它显示了如何在VS2012之前的svcutil中使用TAP.