我不幸地离开了城镇,无法测试我需要向同事传达的信息,所以我希望得到一些帮助。
当我创建服务引用到Web服务,并检查异步复选框,我发现,即使我的web服务具有全部同步在它的客户端还对方法,代理或元数据创建相同方法的同步版本。
换句话说,我的Web服务上有一个名为 GetCategoriesAsync 的方法。即使没有为 GetCategories 编写的方法,客户端上的Reference.cs文件(在服务引用内)也会自动生成它。我也可以在WCF服务测试客户端中执行此方法。
我的问题是,我是否可以选择从我的客户端调用同步或异步方法,它将通过intellisense显示?显然,这将假设使用或不使用 async,Task 和等待关键字调用适当的方法。
答案 0 :(得分:2)
服务器和客户端由网络分隔。他们不关心另一个人做什么来生成web服务协议指定的字节。他们都无法检测对方是同步还是异步。
选择你喜欢的。
您可以拥有同步服务器端实现和异步客户端存根方法。只需让生成器发出异步版本,您就可以以异步方式调用任何服务。 “它们仍将通过intellisense出现......?” - 是的,当然,你生成的一切都会出现。如果需要,可以生成它们。
TL; DR:如果要使用异步方法,请生成它们并使用它们。您无需修改服务器。如果您不拥有服务器(可能是第三方非.NET服务器),您仍然可以以异步方式调用它。