何为reactive applications

putdns 16-01-25
              

如题,何为reactive applications,reactive 编程是什么?请科普一下!

              

4
lileiqx
2016-01-25 15:22

http://www.reactivemanifesto.org/
参考这个
[该贴被lileiqx于2016-01-25 15:22修改过]

banq
2016-02-06 09:23

reactive准确说应该是主动响应,过去程序运行模式是一种被动响应,也就是服务器端各个模块对来自于客户端的一个请求,按照时间或逻辑前后顺序响应处理,如同各个模块过独木桥,下一个处理需要等前一个处理完成,而主动响应打破这种被动处理方式,下一个模块处理不一定要等前一个模块处理完成,两个模块可以同时处理,处理完成推送结果到原来的主流程,在主流程最后合并结果。

参考RxJava:
http://www.jdon.com/idea/rxjava/

freeren
2016-02-24 13:20

不是很理解,如果提前响应,那前提条件是响应不可能没请求就响应吧?另外,响应所需的数据怎么提供呢?如果响应所需数据是前一个响应返回的数据,那如何做?

banq
2016-02-24 14:41

2016-02-24 13:20 "@freeren"的内容
如果提前响应,那前提条件是响应不可能没请求就响应吧?另外,响应所需的数据怎么提供呢?如果响应所需数据是前一个响应返回的数据,那如何做 ...


Reactive可认为是主动响应或主动反应,强调积极主动,当然响应这个词语让人容易联想到请求,请求响应是我们通常联系起来使用,其实最初我翻译时是将Reactive编程翻译成反应式编程,但是网络上其他人将其翻译成响应式编程。

Reactive是基于事件驱动的,所以,事件模型不同于请求/响应模型(request/response),如果没有请求,后端也会在你设置响应条件时,如果某时刻条件满足,触发事件,主动推送响应。如果像这样不需要请求的响应,响应所需要的数据如何提供?很显然,这如同linux的contab或windows的计划任务,类似数据库的trigger,一旦状态发生变化,会导致相应的Action发出,React.js便是基于这点。

如果响应是基于前一个响应的返回的数据,这如同两个函数串联在一起,一个函数的输出是另外一个函数的输入,这就属于函数编程范畴,java 8 Stream支持的是函数组合的同步模型,而Reactive方式比如RxJava支持函数组合的异步模型,RxJava支持很多java 8 Stream类似的相同高层次操作比如map和filter,区别是RxJava是异步的。