写点什么

Reactive Extensions for .NET 4.5

2011 年 11 月 17 日

.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:341568

评论

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

Go编程(一) 怎么写Go代码

dongfanger

go 编程 开发

java安全编码指南之:异常处理

程序那些事

java安全编码 java安全 java安全编码指南

一篇文章搞定 Nginx 反向代理与负载均衡

哈喽沃德先生

nginx 负载均衡 反向代理 服务器 正向代理与反向代理

10多家公司的Java开发面试常见问题合集

Java架构师迁哥

2020面试阿里字节跳动90%被问到的JVM面试题附答案

Java架构师迁哥

架构师训练营第三周学习总结

邓昀垚

极客大学架构师训练营

数据挖掘技术在轨迹数据上的应用实践

滴滴技术

人工智能 数据挖掘 滴滴技术 轨道技术 创新公交

倒计时!Pulsar Summit Asia 2020 演讲征集

Apache Pulsar

开源 云原生 pulsar Apache Pulsar 消息中间件

为什么推广ipv6以及网站ipv6改造基本步骤

MySQL从删库到跑路

Web IP 网络

奈学:Java 和 JavaScript 是什么关系?

奈学教育

Java

点对点音视频应用场景及优势

anyRTC开发者

音视频 WebRTC 直播 RTC 安卓

信息公交服务在滴滴的应用实践

滴滴技术

滴滴技术 人工只能 信息公交 路径优化

看看别人是怎么面试蚂蚁金服的!社招Java面经分享

Java架构师迁哥

Java 阿里巴巴 面试 蚂蚁金服

不一样的面向对象(三)

书旅

php 面向对象 面向对象编程

Java源码系列1——ArrayList

超超不会飞

Java

图解 K8S 源码 - Deployment Controller 篇

郭旭东

Kubernetes Kubernetes源码

永续合约系统开发app源码,合约交易所平台搭建

WX13823153201

永续合约系统开发

国庆假期快来了,打开8天长假的正确方式是...

老胡爱分享

读书 书籍推荐 随笔杂谈

作业帮基于Apache Doris的数仓实践

DorisDB

数据库 数据仓库 数据分析 OLAP 大数据架构

聊一下《技术力量-一线技术团队成功启示录》

Man

中台 研发管理

StreamNative 宣布开源 MoP:Apache Pulsar 支持原生 MQTT 协议

Apache Pulsar

开源 云原生 mqtt Apache Pulsar 消息中间件

一次注定失败的裸面

escray

ruby 面试题 面经 大龄程序员 面试经历

Go编程(二) 多线程简单斗地主

dongfanger

go 编程 开发

奈学:Java 和 JavaScript 是什么关系?

古月木易

Java

打造一个全功能的浏览器

Daniel

比曲婉婷云尽孝更可怕的是:2020年,低收入家庭仍然在被收割

成周

心理学 教育 培训 维权 曲婉婷

2020年行摄回忆录(上)

穿过生命散发芬芳

生活 摄影

DàYé玩转数据战略Step By Step

曲水流觞TechRill

数据中台 数字化

初学源码之——Spring IOC 应用

Java架构师迁哥

浅谈滴滴需求响应式公交背后的技术

滴滴技术

滴滴技术 创新公交 路径优化

JAVA集合之ConcurrentHashMap

彭阿三

Java JAVA集合

Reactive Extensions for .NET 4.5-InfoQ