当前位置: 首页 > 科技观察

响应式编程:集成到应用程序中的步骤翻译器_0

时间:2023-03-13 22:27:44 科技观察

翻译器|陈军审稿人|孙淑娟早在1960年代,“反应式编程(Rx)”一词就首次出现在IT领域。它在维基百科中被定义为:一种用于在计算机中处理数据流和传达变化的声明式编程方法。此范例允许用户轻松指定静态(例如,数组)或动态(例如,事件发射器)数据流,以及表达关联执行模型中存在的推断依赖关系,从而允许自动传播对数据流的更改。在Rx编程中,各种数据流由同一个组件生成。每个Rx库都提供底层结构,并将这些更改传递给已注册接受此类数据更改的其他组件。关于响应式编程一般来说,响应式编程是各种可观察对象、观察者和调度器的组合。下面,我们深入解释这些术语。可观察数据可以从一个线程传输到另一个线程并存储在可观察对象中。简而言之,可观察对象是数据流。根据设置,数据可以定期发送,或者在其生命周期内只发送一次。一些操作符(operators)可以帮助观察者(我们将在下一节详细介绍)发出特定的数据以响应各种事件。您可以暂时将可观察对象视为供应商。他们不仅处理数据,而且将其发送到系统的其余部分。ObserversObserver可以理解为一个消费者(consumer)。他们使用先前注册的可观察对象,发送数据流。调度器简而言之,它们有助于异步编程中的线程管理。调度程序可以指示可观察对象和观察者使用哪些线程。什么时候适合使用响应式编程?通常,当我们处理异步数据流时,反应式编程是一种流行的选择。毕竟,用例的微小变化也可以成为我们决策的决定性因素。以下是一些在现实世界中使用反应式编程的示例:使用反应式编程开发移动应用程序由于移动设备的功能不足以处理繁重的任务,因此我们经常需要在主线程上更新UI。为此,我们需要在服务器上进行繁重的工作和复杂的计算。可见,对于这种网络通信活动的异步工作需求,响应式编程正好可以发挥作用。在NetflixAPI中使用RxJava进行响应式编程为了减少网络中的常规交互,我们需要在NetflixAPI中使用RxJava服务器端并发机制进行响应式编程。由于来自某个设备的每个网络请求都会自动与其他网络请求并行处理,如果服务器不能支持并发执行,那么单个“重”客户端请求可能不如多个“轻”客户端请求的速度请求被处理。此外,即使我们将网络延迟考虑在内,如果一个压缩的“重”请求没有在服务器端以相同的并行度处理,它可能比多个“轻”请求慢得多。外部调用服务由于当今许多后端服务是RESTful(即它们使用HTTP),底层协议可以阻塞并同步调用外部服务。在开发服务时,我们不仅需要经常联系和调用其他服务,还需要根据第一次调用的结果调用额外的服务。因此,当面对很多I/O时,我们需要等待上一次调用完成,再发出下一次请求。而这往往会导致我们的客户因为失去等待服务响应的耐心而放弃后续使用。因此,我们有必要优化对外部服务的调用,尤其是那些跨不同调用编排复杂依赖关系的服务。响应式编程可以保证这些活动背后的逻辑“可组合性”,让调用服务的开发者更容易编写相关代码。高并发消息的消费者典型的企业用例往往发生在具有大量并发消息处理的消费者,尤其是那些高度同步的消费者。响应式框架的优势在于,通过测量微基准测试(microbenchmark),每秒可以在JVM上处理大量的消息。集成响应式编程在线游戏、社交媒体和多人聊天室都是持续使用音频和视频(主要用于流媒体)的应用程序。当涉及到某些类型的高负载或多用户应用程序时,响应式编程显然是一种优雅的解决方案。然而,响应式技术的引入也可能会增加不必要的复杂性,甚至影响应用程序的性能。因此,我们需要通过以下三个简单的步骤将反应式程序合理地集成到目标应用程序中:第一步:创建一个Data-EmittingObservable,以便数据库在Observable下发送字符串类型的数据。我们可以通过提供不同的参数,使just()函数能够一个一个地发送数据。第二步:创建一个Data-Consuming类型的Observer。前面代码片段中的观察者可以使用数据库observable生成的数据。它不仅可以接收数据,还可以处理数据,甚至可以处理各种错误。第3步:调整并发最后,让我们定义并发调度程序。程序不仅需要通过subscribeOn(Schedulers.newThread())告诉数据库observable运行在后台线程,还需要通过observeOn(AndroidSchedulers.mainThread())告诉observer运行在主线程。这是最基本的反应式编程代码。总结在上面的文章中,我们探讨了响应式模式的趋势以及如何将响应式编程集成到您的应用程序中的步骤。就Java虚拟机而言,目前有多个响应式代码库或框架正在开发中。它们不仅功能齐全,而且具有广泛的兼容性。译者简介JulianChen,社区编辑,拥有十余年IT项目实施经验,善于把控内外部资源和风险,专注传播网络与信息安全方面的知识和经验;通过其他形式分享前沿技术和新知识;经常在线上和线下开展信息安全培训和讲座。原标题:ReactiveProgramming:TheStepsToIntegratedItIntoYourApplication,作者:GurpreetSingh