目前我不使用服务引用,因为我觉得它自动生成的代码比我需要的更重。相反,我通过执行以下操作生成代理类:
public class MyClient : ClientBase<IMyService>, IMyService
这对我很有用,没有生成代理类,所以我重用了相同的数据类型。但这只能让我创建同步客户端方法。
生成异步版本需要什么?我已经看过添加服务引用会自动生成的代码,它看起来像是太多样板了。大量的开始/结束/ onbegin / oncomplete关联事件arg数据类型等等。
创建异步客户端方法需要更少的脚手架是否有更简单的方法? 我的最终目标是能够在webservice客户端上使用新的c#5 async / await关键字
答案 0 :(得分:2)
您始终可以创建与IMyAsyncService
完全相同的合同IMyService
,但使用开始/结束异步模式(并且[ServiceContract(Name="IMyService")]
保持相同的名称)。它将是相同的电汇合同,并与ClientBase
一起使用,但现在您可以使用await
的异步方法。
答案 1 :(得分:0)
我认为加上这个 [OperationContract(IsOneWay = true)]
在您的服务接口上的方法声明将确定其异步。
答案 2 :(得分:0)
async / await的CTP只是对这些功能支持的预览。他们计划将它们完全整合到WCF中。