我正在尝试使用带有WCF的asyn CTP,但我遇到了问题,因为Task不可序列化。
我已经安装了CTP v3。
是否可以在WCF中使用asyn CTP?是否需要配置比仅安装CTP更多的东西?
我在想如果不能使用异步CTP jet,也许不是在服务端使用异步CTP,我可以用异步CTP实现异步方法,调用服务的常规方法(不是异步方法) 。这是一个不错的选择吗?在这种情况下,服务不会实现异步方法。
其他选项在服务端,使用begin / end方法实现异步方法,使用Task.Factory.FromAsync方法将这两个方法包装在任务中。但这是更多的工作。
所以我的问题是,如果我希望客户端在等待服务响应时没有被阻止,我可以使用两种解决方案。首先在调用服务的常规方法的客户端中使用异步CTP,或者使用Task.Factory.FromAsync在服务中使用异步方法。哪个是最好的选择?为什么呢?
感谢。 Daimroc。
答案 0 :(得分:1)
我不确定使用Async CTP的VS 2010,但是使用VS 11 Beta(无论如何都应该使用它),您只需定义一个返回Task
的操作:
[OperationContract]
Task<string> GetData(int value);
然后使用async
实现它:
public async Task<string> GetData(int value)
{
return await …;
}
我认为相同的方法适用于Async CTP,但这只是一个假设。
答案 1 :(得分:0)
实现非阻塞客户端调用的最简单方法是在客户端,原因有两个:
生成客户端任务&lt;&gt;基于(以及因此异步/等待兼容)的服务方法: