C# 3.5SP1下的Rx正向与4.0下的Rx和TPL兼容吗?

C# 3.5SP1下的Rx正向与4.0下的Rx和TPL兼容吗?,c#,.net-3.5,.net-4.0,system.reactive,task-parallel-library,C#,.net 3.5,.net 4.0,System.reactive,Task Parallel Library,我想开始启用C#.NET 3.5SP1项目的异步代码。我的主要用例是异步调用WCF服务 我们的WCF服务层完全基于接口,但这些接口方法签名意味着实现被假定为同步执行(例如,SomeDataContract GetSomeDataContractByID(SomeID id));。我希望避免改装过多的接口,以支持使用.NET framework异步模式IAsyncResult和BeginOperation/内操作的异步执行。我想要一种更易于管理的方法来实现这一点 我们使用T4模板生成大量代码,因此

我想开始启用C#.NET 3.5SP1项目的异步代码。我的主要用例是异步调用WCF服务

我们的WCF服务层完全基于接口,但这些接口方法签名意味着实现被假定为同步执行(例如,
SomeDataContract GetSomeDataContractByID(SomeID id));
。我希望避免改装过多的接口,以支持使用.NET framework异步模式
IAsyncResult
BeginOperation
/
内操作
的异步执行。我想要一种更易于管理的方法来实现这一点

我们使用T4模板生成大量代码,因此我希望能够在同步模板的基础上生成接口的异步版本。异步接口的实现将异步调用WCF服务,理想情况下使用.NET 4.0的TPL的
任务
将操作表示为任务并重新启动问题是.NET 3.5SP1没有这样的TPL,因此也没有好的
任务

记住.NET 3.5SP1和.NET 4.0之间的兼容性,我在这里有什么选择?我愿意放弃
任务(如果我误解了它的目的),而选择两个框架之间交叉兼容的其他东西,比如Rx?

Rx的API在3.5和4.0上(几乎)相同(区别在于有一个额外的ISScheduler对任务进行排队)。Rx在这里是一个不错的选择,因为它可以让您以一种现实的方式轻松地存根WCF服务调用:

return Observable.Return(stubObject).Delay(TimeSpan.FromMilliseconds(750));
Rx的API在3.5版和4.0版上(几乎)是相同的(区别在于额外的ISScheduler对任务进行排队)。Rx在这里是一个不错的选择,因为它可以让您以一种现实的方式轻松地存根WCF服务调用:

return Observable.Return(stubObject).Delay(TimeSpan.FromMilliseconds(750));

我需要知道的一切。谢谢!奇怪的是,我现在公开的服务方法的返回类型是什么?是否有一个与
Task
等价的Rx来包装
T
?与Task等价的Rx是一个IObservable,它只返回一个项目并完成。请查看将TPL博客文章翻译成我需要知道的RxAll。谢谢!Curi另外,我现在公开的服务方法的返回类型是什么?是否有一个与
Task
等效的Rx来包装
T
?与Task等效的Rx是一个IObservable,它只返回一个项目并完成。请查看将TPL博客文章转换为Rx的方法