响应式编程:集成到应用程序的步骤

​译者 | 陈峻

成都创新互联服务项目包括怒江州网站建设、怒江州网站制作、怒江州网页制作以及怒江州网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,怒江州网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到怒江州省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

审校 | 孙淑娟

早在上世纪60年代, IT领域就首次出现了“响应式编程(reactive programming,Rx)”一词。它在​​维基百科中的定义​​为:在计算机中,处理数据流和传递变更的一种声明式编程方法。这种范式允许用户轻松地指定静态(如,数组)或动态(如,事件发射器)数据流,以及表明相关执行模型内部存在的、已推断出的依赖关系,进而允许自动传递数据流的变更。在Rx编程中,各种数据流由同一个组件生成。各个Rx库提供了底层的结构,并将这些变更传递给已注册的、可接受此类数据变更的其他组件处。

关于响应式编程

总地说来,响应式编程是各种observable、observer和scheduler的结合。下面,我们将对这些术语进行深入解释。

Observable

数据可以通过一个线程被传输到另一个线程,并存储在observable中。简单地说,observable是一种数据流。根据具体设置的不同,数据可以被定期发送,或者在其生命周期内仅发送一次。

一些操作符(operator)可以帮助observer(我们会在下一部分详细介绍到)发出特定的数据,以响应各种事件。您可以暂且把observable视为提供者(supplier)。它们不但会处理数据,而且能够将其发送到系统的其余部分。

Observers

Observer可以被理解为是消费者(consumer)。它们使用之前已注册的observable,发送数据流。

Schedulers

简而言之,在异步编程中,它们轻松地实现了线程管理。scheduler能够指示observable和observer使用哪些线程。

什么时候适合使用响应式编程?

通常,我们在处理异步数据流时,响应式编程是一种流行的选择。毕竟用例中的微小变化也可能成为我们决策的决定性因素。以下便是一些在现实世界中使用响应式编程的示例:

使用响应式编程开发移动应用程序

由于移动设备在性能上不足以处理繁重的任务,因此我们经常需要在执行期间或任务之后,根据后台线程来更新主线程上的用户界面。对此,我们需要在服务器上执行繁重的工作和复杂的计算。可见,对于此类网络通讯活动的异步工作需求,响应式编程正好可以发挥作用。

在Netflix API中与RxJava一起使用响应式编程

为了减少网络中的常规交互,我们需要使用RxJava服务器端的并发机制,在Netflix API中进行响应式编程。由于来自某个设备的每一个网络请求,都会自动与其他网络请求并行处理,因此如果服务器端无法支持并发执行的话,那么单个“重”的客户端请求,很可能都不如几个“轻”的客户端请求的被处理速度。而且,即使我们已将网络延迟考虑在内,如果一个已压缩的“重”请求服务器端,在处理中没有达到相同程度的并行处理,那么它就可能会比多个“轻”的请求要慢得多。

外部调用服务

由于如今许多后端服务都是RESTful类型(即,它们使用的是HTTP),因此底层协议可能会造成阻塞,以及出现同步调用外部服务的情况。在进行服务开发的时候,我们不但需要经常联络和调用其他的服务,而且要根据第一次调用的结果,按需调用额外更多的服务。因此,在面对众多I/O时,我们需要在发出下一个请求之前,等待前一个调用的完成。而这往往会导致我们的客户,因为丧失服务响应等待的耐心,而放弃后续的使用。

因此,我们有必要优化外部服务的调用,特别是那些针对跨不同调用之间复杂依赖关系的编排。响应式编程能够保障此类活动的背后,在逻辑上的“可组合性”,以便调用服务的开发人员能够更容易地编写相关的代码。

高并发消息的消费者

一种典型的企业用例往往发生在有大量并发消息处理的消费者处,尤其是在那些高度同步的情况下。而响应式框架的优势就在于:通过测量微基准(microbenchmark),实现了每秒都能够在JVM上处理大量的消息。

整合响应式编程

在线游戏、社交媒体和多人聊天室,都是持续使用音频和视频的应用程序(主要被用于流媒体)。而当涉及到特定类型的高负载、或多用户应用时,响应式编程显然是一个优雅的解决方案。不过,响应式技术的引入也可能会增加不必要的复杂性,甚至会给应用程序的性能带来影响。因此,我们需要通过如下三个简单步骤,合理地将响应式程序集成到目标应用中:

第1步:创建一个Data-Emitting类型的Observable

为了让数据库在Observable下,发送字符串型的数据。我们可以通过提供不同的参数,让just()函数能够逐一发送数据。

第2步:创建一个Data-Consuming类型的Observer

前续代码片段中的observer能够使用数据库observable生成的数据。它不但可以接收数据,而且能够处理数据,甚至还可以处理各种错误。

第3步:调节并发性

最后,我们来定义并发的scheduler。程序不但需要通过subscribeOn(Schedulers.newThread()),在后台线程中告知数据库observable去运行;而且需要通过observeOn(AndroidSchedulers.mainThread())在主线程上告知observer去运行。这便是最基本的响应式编程代码。

总结

在上文中我们探讨了响应模式的趋势,以及如何将响应式编程集成到应用程序的步骤。就Java虚拟机而言,目前已有多个响应式代码库或框架正在被研发。它们不但功能全面,而且具有广泛的兼容性。

译者介绍

陈峻 (Julian Chen),社区编辑,具有十多年的IT项目实施经验,善于对内外部资源与风险实施管控,专注传播网络与信息安全知识与经验;持续以博文、专题和译文等形式,分享前沿技术与新知;经常以线上、线下等方式,开展信息安全类培训与授课。

原文标题:​​Reactive Programming:The Steps To Integrate It Into Your Application​​​,作者:Gurpreet Singh​

当前文章:响应式编程:集成到应用程序的步骤
标题路径:http://www.shufengxianlan.com/qtweb/news26/225626.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联