首页 > 其他分享 >ReactiveUI使用笔记,教程总结

ReactiveUI使用笔记,教程总结

时间:2023-04-18 09:12:51浏览次数:44  
标签:异步 教程 代码 Rx 观察者 LINQ 笔记 集合 ReactiveUI

ReactiveUI使用笔记,教程总结

一、LINQ和Rx

LINQ(Language Intergrated Query)

对数据集合、关系数据、XML文件等对象进行查询和提取数据的技术,提供了统一的类似SQL的语法来对数据进行查询,而不用关心数据源的不同。

二、Rx(Reactive Extensions)

对LING的一种扩展,提供了一种新的组织和协调异步事件的方式,极大简化了代码的编写。他的目标是对异步的集合进行操作,也就是说,集合中的元素是异步填充的。

Rx最显著的特征是使用可观察集合(Observable Collection)来达到集成异步(composing asynchronous)和基于事件(event-based)的编程的效果。

  • 组合(Composing): Reactive Extension的首要目标之一就是将多种异步操作组合起来是的代码更加简单。要做到这一点,数据流必须定义清楚,这样代码就很清晰集中,使得异步操作代码异步处理代码不会充斥整个应用程序。
  • 异步(Asynchronous): 虽然Rx不仅仅能处理异步操作,但是使用Rx,大大简化了异步操作的实现,并且代码容易理解进而容易维护。
  • 基于事件(Event-based): Rx简化了传统的异步编程方式,在后面的文章中我们会看到拖放(drag and drop)模式的实现
  • 可观察集合(Observable collections): Rx的核心,它是一种集合,集合的元素在第一次访问的时候可能还没有填充。它对于Rx的重要性类似于enumerable集合对LINQ的重要性。

三、观察者模式(发布和订阅模式Publish and Subscribe ):

Observer 观察者

Observable 被观察对象

  1. 被观察对象:观察者 = 1:n
  2. 被观察对象有一些行为或者属性(状态信息),
  3. 观察者可以订阅某些感兴趣的属性或者行为,
  4. 被观察对象状态发生变化,会通知所有观察者,观察者将做出相应的反应(react)。

Why?

在程序设计中,很多代码是对改变的东西做出反应的,你或许可以使用 C#事件、回调、 switch 语句、委托、 lambdas、 observable、通知和绑定等实现,但这会使你的应用程序变得越来越复杂,难以理解。

反应式编程会将更改自动传播到整个系统中。

当A或B改变时,C会自动更新

Rx将事件流抽象为Observable sequences(可观察序列)表示异步数据流,使用LINQ运算符查询异步数据流,并使用Scheduler来控制异步数据流中的并发性。简单地说:Rx = Observables + LINQ + Schedulers。

 

标签:异步,教程,代码,Rx,观察者,LINQ,笔记,集合,ReactiveUI
From: https://www.cnblogs.com/aijiao/p/17328272.html

相关文章

  • TypeScript学习笔记-尚硅谷TypeScript教程(李立超老师TS新课)
    TypeScript学习笔记-尚硅谷TypeScript教程(李立超老师TS新课)https://blog.csdn.net/m0_46549017/article/details/124626987?ops_request_misc=&request_id=&biz_id=&utm_medium=distribute.pc_search_result.none-task-blog-2~all~koosearch~default-2-124626987-null-null.142^......
  • Linux学习笔记
    IP地址和主机名IP地址ifconfig可以用来查询本机的IP地址,如果不能使用,可以通过installnet-tools安装。Centos系统下ens33表示主网卡;inet后表示IP地址;lo表示本地回环网卡;127.0.0.1表示代指本机;0.0.0.0可以用于代指本机,同时在放行设置中0.0.0.0表示允许任意IP访问。主机名h......
  • 2023/4/17笔记
    bind函数std::bind函数定义在头文件functional中,是一个函数模板,是函数适配器f - Callableobject(functionobject,pointertofunction,referencetofunction,pointertomemberfunction,orpointertodatamember)thatwillbeboundtosomearguments(参数).Cal......
  • 《代码大全》阅读笔记1
    第一部分打好基础第2章隐喻重要的研发成果常常产自类比(analogy)。通过把你不太理解的东西和一些你较为理解、且十分类似的东西做比较,你可以对这些不太理解的东西产生深刻的理解。这种使用隐喻的方法叫做“建模”。目前最合适隐喻:建造软件(BuildingSoftware)第3章前期准备(Measu......
  • 【进阶13】【自学笔记】Python logging模块封装
    一、定义  Pythonlogging模块是一个可以通过控制日志级别、输出位置等方式来实现记录日志的模块。logger对象的不同方法来记录不同级别的日志。  其中,debug()方法用于记录debug级别的日志,info()方法用于记录info级别的日志,warning()方法用于记录warning级别的日志,err......
  • 【学习笔记】SAM的应用
    command_block-SAM的应用感谢大佬的指点暴论:后缀数组什么辣鸡啊,再也不用后缀数组啦!加入SAM神教!CF802IFakeNews(hard)建出后缀自动机,可知一个串的出现次数即为endpos个数也是后缀链接树上的子节点个数。同一endpos集合的子集中子串长度连续且长度区间为\([maxlen(sam[c......
  • centos7安装RabbitMQ教程
    转载自:https://www.cnblogs.com/qiansm/p/15241295.html==================== centos7安装RabbitMQ教程erlang版本:22.2.1RabbitMQ版本:3.8.21、安装Erlang1.1安装依赖yuminstallepel-releaseyuminstallgccgcc-c++unixODBCunixODBC-develwxBasewxGTKSDLwxGTK-g......
  • 梦断代码读书笔记1
    这个月我开始了对《梦断代码》这本书的阅读。《梦断代码》一书记录的是作者罗森伯格对OSAF主持的Chandler项目进行田野调查,通过Chandler开发过程来揭示软件开发过程中一些根本性的大问题。对本书才刚刚阅读了三分之一,就已经忍不住对作者描述的开发过程所感叹,虽然刚进入软件领域不......
  • 《用户故事与敏捷方法》读书笔记4
    用户故事和Scrum团队需要逐步地完善整个系统,不断地给软件添加更多的细节,软件的功能也由此越来越完备。Scrum是敏捷方法中一种迭代递增的软件过程,实施scrum过程的项目往往采用30天为周期的迭代,称为Sprint,团队确认这个Sprint需要完成的工作,将所有任务放到成为产品Backlog的列表中......
  • Git基础内容笔记
    Git笔记更多gitlog命令可查看:http://git-scm.com/docs/git-log目录Git笔记Git工作流程一、Git的下载和安装1.1Ubuntu系统下载1.2Windows系统下载1.3设置用户名和邮箱二、基本使用2.1创建仓库gitinitgitclone2.2添加文件2.3提交文件至本地仓库gitadd命令gitcommi......