在不使用服务引用的情况下创建异步WCF客户端

时间:2010-11-09 23:34:24

标签: c# wcf asynchronous

目前我不使用服务引用,因为我觉得它自动生成的代码比我需要的更重。相反,我通过执行以下操作生成代理类:

public class MyClient : ClientBase<IMyService>, IMyService

这对我很有用,没有生成代理类,所以我重用了相同的数据类型。但这只能让我创建同步客户端方法。

生成异步版本需要什么?我已经看过添加服务引用会自动生成的代码,它看起来像是太多样板了。大量的开始/结束/ onbegin / oncomplete关联事件arg数据类型等等。

创建异步客户端方法需要更少的脚手架是否有更简单的方法? 我的最终目标是能够在webservice客户端上使用新的c#5 async / await关键字

3 个答案:

答案 0 :(得分:2)

您始终可以创建与IMyAsyncService完全相同的合同IMyService,但使用开始/结束异步模式(并且[ServiceContract(Name="IMyService")]保持相同的名称)。它将是相同的电汇合同,并与ClientBase一起使用,但现在您可以使用await的异步方法。

答案 1 :(得分:0)

我认为加上这个     [OperationContract(IsOneWay = true)]

在您的服务接口上的方法声明将确定其异步。

答案 2 :(得分:0)

async / await的CTP只是对这些功能支持的预览。他们计划将它们完全整合到WCF中。

http://blogs.msdn.com/b/endpoint/archive/2010/11/13/simplified-asynchronous-programming-model-in-wcf-with-async-await.aspx