Rx(Reactive Extensions)的由来

既然我们已经介绍了响应式编程,现在是时候了解我们的明星了:响应式扩展,通常简称为Rx。微软开发了Reactive扩展库,使其易于处理事件流和数据流。在某种程度上,时变值本身就是一个事件流;每个值更改都是一种类型的事件它会更新依赖于它的值。

Rx通过将事件流抽象为可观察对象来简化事件流的处理序列,这也是Rx表示时变值的方式。可观测的手段作为用户,您可以观察到序列所携带的值,以及序列的含义所携带的东西是有命令的。Rx是由Erik Meijer和Brian Beckman设计的,其灵感来自函数式编程风格。在Rx中,一个流由可观察对象表示,这些可观察对象可以从。net事件、任务或集合中创建。或者可以自己从另一个来源创建。使用Rx,您可以使用LINQ操作符查询可观察对象,并使用调度程序控制并发性这就是为什么是Rx通常在Rx中定义。. NET源代码为Rx = Observables + LINQ + schedulers的Rx的层。如图1.4所示。
在这里插入图片描述
图1.4 Rx层。中间的是关键的接口,表示事件流,下面是调度程序控制并发性的流处理。最重要的是强者操作符库允许您创建事件处理LINQ风格的流水线。

让我们看看Rx起源的简短历史。我认为,要完全控制某件事(尤其是技术),你应该了解它的历史和幕后的细节。让我们从Rx标志开始,其中有一条电鳗,如图所示图1.5;这条鳗鱼是微软Live实验室的Volta项目标志。
在这里插入图片描述
Volta项目是一个用于创建多层的实验性开发人员工具集云的应用程序,在云这个术语正式定义之前。利用沃尔塔,您可以指定应用程序的哪一部分需要在云中运行(服务器)和客户端(桌面、JavaScript或Silverlight),以及Volta编译器会为您做艰苦的工作。很快,差距就显现出来了在将从服务器产生的事件传输到客户端时。因为。net事件不是一等公民,它们不能被序列化并推送到客户端,因此形成了可观察对象和观察者对(尽管当时还没有这样称呼)。

Rx并不是Volta项目的唯一技术。JavaScript编译器的中间语言(IL)也被发明出来,它是微软的起源
打印稿。制作《Volta》的团队也是创造《Rx》的团队。

自2010年发布以来,Rx一直是一个成功的故事,被许多人采用公司。它在.NET之外的其他社区也取得了成功,而且很快就成功了被移植到其他语言和技术。例如,Netflix就使用Rx广泛地在其服务层,并负责RxJava端口,微软还在内部使用Rx来运行cortana——托管的智能个人助理。在每个Windows Phone设备中;当你创建一个事件时,一个可观察对象是在后台创建的。

在撰写本文时,Rx在10多种语言中得到支持,包括JavaScript, c++, Python和Swift。响应式扩展现在是一个开放的项目。您可以在https://reactivex.io/找到有关它们的信息以及文档和新闻,.NET的响应式扩展托管在GitHub,网址是https://github.com/Reactive-Extensions/Rx.NET。现在我们已经了解了一些历史,并得以讲述它,让我们开始探索Rx的内部吧。

——未完待续

译者:重庆教主 20240513

网站:WPF中文网 wpfsoft.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/837022.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【AHK】固定wps的窗口大小/解决wps2019版重新打开窗口会缩小至100*100的bug

解决办法就是每一次点击lbutton添加触发事件,同样也可以换成其他快捷键 #IfWinActive ahk_exe wpp.exe ~lbutton:: justfyWin(ahk_exe wpp.exe) #IfWinActive#IfWinActive ahk_exe wps.exe ~lbutton:: justfyWin(ahk_exe wps.exe) return #IfWinActive#IfWinActive …

使用Docker安装Nginx

一、Nginx介绍 Nginx 是一款高性能的开源 Web 服务器和反向代理服务器,具有高效能、高稳定性、低资源消耗等优点。可以处理大量并发请求,支持多种协议,还能实现负载均衡、缓存等功能,在互联网应用中被广泛使用。在Nginx中&#xf…

【数据可视化01】matplotlib实例介绍1

目录 一、引言二、实例介绍1.柱状图1)简单柱状图2)堆叠柱状图 2.线条形式3.折线图(多子图)4.散点图5.水平和垂直线条6.饼状图1)饼状图2)“条形饼”图 一、引言 matplotlib是一个用于绘制数据可视化的Python库。它可以创建各种静态…

想在先锋文汇发表文章?看看投稿方法吧

、 1. 主题明确:选择一个鲜明的主题,与党的工作和中心任务相关。可以选择与当前热点问题、党的路线方针政策有关的话题,以各级党组织开展的活动、党员先进事迹等为素材。编辑【yangwei013049】 2. 紧密联系实际:文章要贴近实际&…

虚拟资源在线交易服务平台源码 线上虚拟商品交易平台搭建

在信息爆炸的时代,虚拟资源、素材、源码系统等等以其独特的魅力,逐渐成为人们日常生活和工作中不可或缺的一部分。如何高效地获取、管理和交易这些虚拟资源,分享一款虚拟资源在线交易服务平台源码,轻松搭建线上虚拟商品交易平台&a…

C++之Eigen库基本使用(下)

1、常见变换 Eigen::Matrix3d //旋转矩阵(3*3) Eigen::AngleAxisd //旋转向量(3*1) Eigen::Vector3d //欧拉角(3*1) Eigen::Quaterniond //四元数(4*1) Eigen::Isom…

STL库具体容器与用法

vector动态数组: 算法&#xff1a;for_each迭代器&#xff1a;vector<int>::iterator 头文件:<vector> 声明&#xff1a;vector<数据类型> 变量名 定义一个整形的vector容器&#xff1a;vector<int> v 迭代器&#xff1a;vector<数据类型>:…

drm 和 sysfs

DRM 全称是Direct Rendering Manager&#xff0c;进行显示输出管理、buffer 分配、帧缓冲。对应userspace 库为libdrm&#xff0c;libdrm 库提供了一系列友好的控制封装&#xff0c;使用户可以方便的进行显示的控制和buffer 申请。 DRM的设备节点为"/dev/dri/cardX"…

Docker运行出现iptables: No chain/target/match by that name报错如何解决?

在尝试重启 Docker 容器时遇到的错误信息表明有关 iptables 的配置出了问题。这通常是因为 Docker 需要配置网络&#xff0c;而 iptables 规则没有正确设置或被意外删除。具体到你的错误信息中&#xff0c;报错 iptables: No chain/target/match by that name 表示 Docker 尝试…

深入理解与应用C++ Vector

1. C Vector 简介与基本使用 C 的 vector 是一个序列容器&#xff0c;用于表示可变大小的数组。它结合了数组的高效元素访问和动态大小调整的灵活性。与静态数组相比&#xff0c;vector 的大小可以根据需要自动调整&#xff0c;这是通过在底层使用动态数组来实现的。当新元素被…

[原创](Modern C++)现代C++的Lambda表达式常规概念以及细节探讨

[简介] 常用网名: 猪头三 出生日期: 1981.XX.XX QQ联系: 643439947 个人网站: 80x86汇编小站 https://www.x86asm.org 编程生涯: 2001年~至今[共22年] 职业生涯: 20年 开发语言: C/C、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 开发工具: Visual Studio、D…

【Day2:JAVA变量、数据类型、运算符的认识】

目录 1、变量的介绍、定义、使用2、标识符2.1 概念2.2 标识符的命名规则2.3 标识符的命名规范 3、数据类型3.1 基本数据类型3.2 引用数据类型 4、Scanner键盘录入4.1 键盘录入效果介绍4.2 键盘录入的三个步骤 5、运算符5.1 运算符和表达式5.2 算数运算符5.3 自增自减运算符5.4 …

JUC------共享模型------管程

概念 什么是管程 管程&#xff08;Monitor&#xff0c;直译是”监视器“的意思&#xff09;是一种操作系统中的同步机制&#xff0c;它的引入是为了解决多线程或多进程环境下的并发控制问题。 翻译为 Java 领域的语言&#xff0c;就是管理类的成员变量和成员方法&#xff0c;…

在vue3中测试执行typescript代码片段

官方推荐的vitest方法 在vue3typescript项目中&#xff0c;一般来说用vite做构建系统。做测试的话&#xff0c;目前官方推荐的是vitest。官方文档在 https://vitest.dev/guide/ 在vue3typescriptvite5项目中&#xff0c;运行安装命令 npm install -D vitest 就可以把vites…

批量获取oracle库存储过程

场景:需要获取oracle库下的存储过程做备份 示例:获取单个存储过程,sql实现如下 SELECT owner,object_name,object_type FROM dba_objects; SELECT DBMS_LOB.SUBSTR(DBMS_METADATA.GET_DDL(FUNCTION,CONCATSTR,TEST)) FROM DUAL; CREATE OR REPLACE EDITIONABLE FUNCTION &quo…

【教学类-55-02】20240512图层顺序挑战(四格长条纸加黑色边框、4*4、7张 、43200张去掉非7色有23040张,去掉重复样式有几种?)

作品展示 背景需求&#xff1a; 之前的代码吗存在几个问题&#xff0c;最大的问题是不能生成“”长条黑边框”” 【教学类-55-01】20240511图层顺序挑战&#xff08;四格长条纸&#xff09;&#xff08;4*4&#xff09;和“手工纸自制参考图”-CSDN博客文章浏览阅读485次&…

使用Navicat将MySql数据库导入和导出

一&#xff0c;导出数据表 1.使用Navicat打开数据库&#xff0c;右键数据库&#xff0c;点击转储SQL文件&#xff0c;点击结构和数据。 2.选择生成文件的地方 3.等待生成完成 4.生成完成 二&#xff0c;导入数据库表和数据SQL文件 1.新建一个数据库 2.右键选择运行SQl文件 记…

OSPF协议1

OSPF开放式最短路径优先协议 1&#xff0c;OSPF协议因为其传递的是拓扑信息&#xff0c;之后&#xff0c;通过SPF算法将图形结构转换成为树形结构&#xff0c;所以&#xff0c;其计算出的路径不存在环路。并且&#xff0c;OSPF是使用带宽作为开销值的评判标准&#xff0c;所以…

如何利用甘特图来提高资源的是使用效率?

在项目管理中&#xff0c;甘特图是一种常用的工具&#xff0c;用于规划和跟踪项目进度。它通过条形图的形式展示项目的时间表和任务依赖关系&#xff0c;帮助项目经理和团队成员清晰地了解项目的时间线和进度。通过合理利用甘特图&#xff0c;可以显著提高资源的使用效率&#…

一文入门DNS

概述 DNS是一个缩写&#xff0c;可以代表Domain Name System&#xff0c;域名系统&#xff0c;是互联网的一项基础服务。也可以代表Domain Name Server&#xff0c;域名服务器&#xff0c;是进行域名和与之相对应的IP地址相互转换的服务器。DNS协议则是用来将域名转换为IP地址…