浏览
月度归档: 2018年7月

[Rx.NET] 5 – 控制 Observer 与 Observable 之间的关系

[Rx.NET] 5 – 控制 Observer 与 Observable 之间的关系

假设你是一位拥有美妙声音,完美歌词,最佳表演的歌手,如果没有粉丝听众当然赚不到钱。对于 Observable 来说是一样的:如果没有 Observer 订阅的话,Observable 就什么也不做,仅仅呆在那里浪费资源。歌手和听众之间的关系何时开始何时结束也是值得研究的,尤其是当播放的是音乐专辑,听众可以跳过或结束播放时。

本篇介绍用于创建 Observer 的方法 和 Observer 必须要实现的重要操作。Observer 与 Observable 之间的订阅关系需要你来维护,你可以控制它何时开始,可以通过通知数量或时间长度控制持续时间,或者两者结合,或者其他一些复杂的逻辑。所有这些都会在本篇介绍一系列操作符时讲到。

创建 Observer

Observer 是 Observable 通知的消费者。可能有很多 Observer 订阅到一个 Observable,也可能是一个 Observer 订阅到很多个 Observable。如下图所示: ···  阅读全文

[Rx.NET] 4 – 从异步类型创建 Observable

[Rx.NET] 4 – 从异步类型创建 Observable

相信大多数人都不喜欢排队,特别是排长队,总感觉这是在浪费时间,我们完全可以做些其他事情(例如读书)。我比较喜欢那些留下排队号然后可以去做些其他事情(例如购物)的餐馆,当有位置可用或快轮到你的时候能通过短信或蜂鸣器通知你,这种服务就很人性化。

同样,我们的代码有时也会排队来等待某些事情,即我们常叫的同步方式;同样,我们的代码也可以在任务完成并能获取结果时被通知,即我们通常叫的异步方式。编写异步代码对程序的响应(并及时做出反应)至关重要,这也是响应的关键特征。本篇将介绍 .NET 的异步执行模式及其与 Observable 的关系,还会介绍从异步类型创建 Observable 的方法及执行此操作可能遇到的问题。

使用 Rx 桥接 .NET 异步类型

Rx 可以很好的处理异步类型。Observable 和 Observer 接口允许生产者(Observable)以同步或异步的形式运行在任何地方,而消费者(Observer)可以接收和处理它的消息通知。这样做有利于测试和更加灵活,因为可以轻松创建一个虚拟的 Observable 来模拟应用场景,并且很容易在生产者方做出调整而不影响消费者。这种关系如下图所示: ···  阅读全文

[Rx.NET] 3 – 创建 Observable

[Rx.NET] 3 – 创建 Observable

当开始学习使用一个东西的时候,通常都会有“从哪里开始学起”的疑问。学习使用 Rx 的答案很简单:从创建 Observable 开始学起。

本篇接下来将介绍多种创建 Observable 的方法。由于篇幅限制本篇只介绍创建同步的 Observable,下一篇介绍创建异步的 Observable。

由于有不同类型的数据源,所以会存在多种创建 Observable 的方式。例如,可以用现存的 .NET 经典事件代码或集合来创建 Observable,并且可以轻松与其他 Observable 组合使用。不同的方式适用于不同的场景,并且具有不同的含义。 ···  阅读全文

[Rx.NET] 2 – 初识 Rx

[Rx.NET] 2 – 初识 Rx

Rx旨在协调和处理像网络、传感器、UI事件等各种来源的事件和异步计算。例如,安装在建筑周围的安保摄像头与移动监测传感器联合工作,当有人靠近建筑时就会发送摄像头拍摄的照片。

本篇将通过一个例程来展示使用和不使用Rx时程序结构、可读性及可扩展性上的不同。

假设你收到了某知名金融公司CTO的来信,该公司是一家股票交易公司,为客户提供投资建议并在他们的收益中收取利息。所以快速响应股市变化十分重要。最近该公司发现通过提供在股价剧烈变动时报警的系统可以降低成本。剧烈变动这里是指股价变动超过了10%。当这种情况发生时该公司想尽快响应并买进或卖出股票。 ···  阅读全文

[Rx.NET] 1 – 响应式编程及 Rx.NET

[Rx.NET] 1 – 响应式编程及 Rx.NET

Reactive Extensions(Rx) 是 .Net 应用程序中的一个响应式编程库。Rx 简化了事件处理,并可以使用 LINQ 风格的查询来写代码。Rx 还提供了 combinators (组合操作)来将顺序发生或有关联的事件组合起来。目前 Rx 已经有 600 多个操作符(包括重载)。

本系列将介绍响应式编程思想和怎么用 Rx 轻松构建使用事件驱动的应用程序。

响应

响应就是当程序改变时,代码需要对其有所反应。改变会发生在很多地方,最简单的改变是变量在执行赋值操作后其值发生了变化。例如,在 C# 中的如下代码: ···  阅读全文