3.5SP1下的Rx是否与4.0下的Rx和TPL向前兼容?

本文关键字:Rx TPL 0下 下的 5SP1 是否 | 更新日期: 2023-09-27 18:03:03

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

我们的WCF服务层完全是基于接口的,但是那些接口方法签名意味着假定实现是同步执行的(例如SomeDataContract GetSomeDataContractByID(SomeID id);。我希望避免修改过多的接口来支持使用。net框架的IAsyncResultBeginOperation/EndOperation异步模式的异步执行。我想要一个更容易管理的方法。

我们使用T4模板生成大量代码,因此我希望能够基于同步版本生成接口的异步版本。异步接口的实现将异步调用WCF服务,理想情况下使用。net 4.0的TPL的Task<T>将操作表示为任务并将其返回给调用者。问题是。net 3.5SP1没有这样的TPL,因此没有好的Task<T>

我在这里有什么选择,记住。net 3.5SP1和。net 4.0之间的兼容性?我愿意放弃Task<T>(如果我误解了它的目的),以支持两个框架之间交叉兼容的其他东西,比如Rx?

3.5SP1下的Rx是否与4.0下的Rx和TPL向前兼容?

Rx的API在3.5和4.0上(几乎)相同(不同之处在于额外的isscheduler用于队列任务)。Rx在这里是一个很好的选择,因为它可以很容易地让您以一种现实的方式存根WCF服务调用:

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