1、反应式编程
它是一种编程范式,将事件作为数据流异步监听和处理。与编辑Excel表格类似,单个元素的值是由其他单元格的值决定的公式。一旦其他单元格的值发生变化,该公式的单个单元格将相应更新。
如果操作是以声明方式描述的,那么它就是函数式反应式编程。
反应式编程的优点是描述了一种简单易维护的方法来处理异步、无竞争的计算和IO,从而增加了多核、多CPU硬件上计算资源的使用。事件的控制从“请求”变成了“等待”。在大数据的实时流处理环境中,采用了反应式编程,如推文系统处理、日志系统收集等。
2、.NET中的工具
中有基于委托的模型事件。. NET。订户的事件处理程序注册一系列事件,并在被调用时触发它们。Button的Click事件常用于桌面应用,绑定事件是用+=。所以传统的事件是处理GUI用户界面的交互。这种命令式编程很难处理复杂事件的排列,容易造成内存泄漏。
您可以使用F#中的| >管道运算符来连接多个事件。如果不熟悉F#,就不解释了。主要看C# if处理。
3、Reactive Extensions(Rx)反应式扩展
LINQ是一系列查询顺序数据的词、词和函数。内置的LINQ到对象(基于IEnumerable)和LINQ到实体(基于IQueryable)是两个最常用的LINQ捐赠者。还有很多其他的提供商,大部分都采用相同的基本架构。查询被延迟,只有在需要时才会从序列中获取数据。从概念上讲,这是一种拉模式。在查询过程中,数据项被一个接一个地拉出。
反应式扩展将事件视为依次到达的数据序列。因此,也可以将Rx视为事件的LINQ(基于IObservable),这与其他LINQ提供商的不同之处在于Rx采用推送模式。也就是说,Rx的查询指定了当事件到达时程序应该如何响应。Rx是在LINQ的基础上构建的,加入了一些强大的算子作为扩展方法。