写点什么

Reactive Extensions for .NET 4.5

  • 2011-11-17
  • 本文字数:785 字

    阅读完需:约 3 分钟

.NET 4.5 带来了新的功能,我们可以趁这个机会再来探讨一下独立的 Reactive Extensions 库。 Bart De Smet 谈到了 Rx 实验分支里的情况,也提到了 JavaScript 和 C++ 的 Rx。

首先是 Rx 支持 ExceptionDispatchInfo 。在之前版本的.NET 里,捕捉异常和抛出异常的线程一般是相同的。如果库需要把它们挪到另一个线程,会通过封送回调的字段传递它们,然后通过一个泛型异常包装它们。新的异常不能隐藏下面发生的真正错误。

ExceptionDispatchInfo.Capture 方法用于捕获异常,然后通过 ExceptionDispatchInfo.Throw 在正确的线程里重新抛出。堆栈跟踪同时包括新的和原来位置的帧,并通过“End of stack trace from previous location where exception was thrown”文字分割两者。

Reactive Extensions 创建的时候无法使用 Task,因为那时 Task Parallel Library 还不能用,即使现在,许多平台仍然不支持 TPL,比如说,Silverlight。作为替代方案,Rx 库是在.NET 原来的异步模式上构建的。因此 Observable 可以通过 Observable.FromAsyncPattern 方法创建。

由于 C# 5 和 VB 11 支持的 async/await 是在任务之上构建的,各个平台现在应该完全支持 Task Parallel Library 了。这使得 Rx 项目最终可以直接从 Task构建 Observable。

除了任务和 Observable 之间的转换,Reactive Extensions 还将直接支持 await 关键字。这会返回 IObservable 序列的最后一项。如果想要序列里的全部项,可以通过 ToList 方法把 IObservable转成 IObservable<List>。

另一个改变是替换了 Average 和 ForEach 等阻塞操作。举个例子,新的 ForEachAsync 方法将会返回一个可以等待的 Task。

JavaScript 版的 RxJS 将会有一个新的版本,基于 Rx 的当前产品版本。目前还没有时间表,但他们表示已经进入完善阶段。Reactive Extensions 组还有一个本地开发者负责 C++ 版,暂命名为 RxC。

查看英文原文: Reactive Extensions for .NET 4.5

2011-11-17 07:342254

评论

发布
暂无评论
发现更多内容

编程好习惯之理清数据的可变性

顿晓

4月日更 不可变

【Java试题】从一道题目再看Java继承

程序员架构进阶

Java 面试 28天写作 4月日更

vue接入腾讯实时音视频trtc-js-sdk的技术难点与解决方案

孙叫兽

Vue 音视频 解决方案 trtc-js-sdk

学生管理系统架构

Fleng

架构实战营

架构师实战营 模块一作业 微信业务架构图

好吃不贵

Vue中Echarts基本使用

Chalk

大前端 eCharts 4月日更

数据结构和算法

奈奈奈奈

数据结构与算法

CLOSE_WAIT过多导致Jetty服务器假死

风翱

Java Jetty Web 4月日更

区块链技术引领新一轮技术变革浪潮

CECBC

博文推荐|多图详解 Apache Pulsar 消息存储模型

Apache Pulsar

大数据 开源 流计算 Apache Pulsar 消息系统

H1 作业1

wade

Redis 6.0 多线程、客户端缓存、权限控制

escray

redis 学习 极客时间 Redis 核心技术与实战 4月日更

复兴or幻象?VR的2021三重门

脑极体

架构实战营课程一作业

Saber

架构实战营

面试官

ES_her0

4月日更

架构实战营 模块一 总结

Pitt

华仔架构设计-模块1作业

大师兄

区块链技术,通证经济未来趋势,两者有什么关系?

CECBC

区块链

架构实战营 模块一作业

ercjul

架构实战营

业务架构训练营第 0 期模块一作业

菠萝吹雪—Code

跟着源码一起学:手把手教你用WebSocket打造Web端IM聊天

JackJiang

网络编程 websocket 即时通讯 IM

模块1作业

王硕

架构实战营

架构实战营 模块一 作业

Pitt

架构实战营 模块1 课后作业

Keyto

Wireshark数据包分析学习笔记Day26

穿过生命散发芬芳

Wireshark 数据包分析 4月日更

软件架构设计分层模型和构图思考

xcbeyond

方法论 分层架构 架构设计 4月日更

模块一作业

鲲哥

架构实战营模块一 - 总结

凯迪

树莓派的组装与开机

IT蜗壳-Tango

IT蜗壳教学 4月日更

作业1-20210406

Geek_b437fc

区块链技术解决信任问题

CECBC

信任 信任机制

Reactive Extensions for .NET 4.5_.NET_Jonathan Allen_InfoQ精选文章