偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

響應式編程:集成到應用程序的步驟

譯文 精選
開發(fā) 前端
響應式編程是observables、observers和scheduler的結(jié)合。本文將和您探討響應式編程的術(shù)語,適用場景,以及如何將其代碼集成到應用中的基本步驟。

?譯者 | 陳峻

審校 | 孫淑娟

早在上世紀60年代, IT領(lǐng)域就首次出現(xiàn)了“響應式編程(reactive programming,Rx)”一詞。它在??維基百科中的定義??為:在計算機中,處理數(shù)據(jù)流和傳遞變更的一種聲明式編程方法。這種范式允許用戶輕松地指定靜態(tài)(如,數(shù)組)或動態(tài)(如,事件發(fā)射器)數(shù)據(jù)流,以及表明相關(guān)執(zhí)行模型內(nèi)部存在的、已推斷出的依賴關(guān)系,進而允許自動傳遞數(shù)據(jù)流的變更。在Rx編程中,各種數(shù)據(jù)流由同一個組件生成。各個Rx庫提供了底層的結(jié)構(gòu),并將這些變更傳遞給已注冊的、可接受此類數(shù)據(jù)變更的其他組件處。

關(guān)于響應式編程

總地說來,響應式編程是各種observable、observer和scheduler的結(jié)合。下面,我們將對這些術(shù)語進行深入解釋。

Observable

數(shù)據(jù)可以通過一個線程被傳輸?shù)搅硪粋€線程,并存儲在observable中。簡單地說,observable是一種數(shù)據(jù)流。根據(jù)具體設置的不同,數(shù)據(jù)可以被定期發(fā)送,或者在其生命周期內(nèi)僅發(fā)送一次。

一些操作符(operator)可以幫助observer(我們會在下一部分詳細介紹到)發(fā)出特定的數(shù)據(jù),以響應各種事件。您可以暫且把observable視為提供者(supplier)。它們不但會處理數(shù)據(jù),而且能夠?qū)⑵浒l(fā)送到系統(tǒng)的其余部分。

Observers

Observer可以被理解為是消費者(consumer)。它們使用之前已注冊的observable,發(fā)送數(shù)據(jù)流。

Schedulers

簡而言之,在異步編程中,它們輕松地實現(xiàn)了線程管理。scheduler能夠指示observable和observer使用哪些線程。

什么時候適合使用響應式編程?

通常,我們在處理異步數(shù)據(jù)流時,響應式編程是一種流行的選擇。畢竟用例中的微小變化也可能成為我們決策的決定性因素。以下便是一些在現(xiàn)實世界中使用響應式編程的示例:

使用響應式編程開發(fā)移動應用程序

由于移動設備在性能上不足以處理繁重的任務,因此我們經(jīng)常需要在執(zhí)行期間或任務之后,根據(jù)后臺線程來更新主線程上的用戶界面。對此,我們需要在服務器上執(zhí)行繁重的工作和復雜的計算??梢姡瑢τ诖祟惥W(wǎng)絡通訊活動的異步工作需求,響應式編程正好可以發(fā)揮作用。

在Netflix API中與RxJava一起使用響應式編程

為了減少網(wǎng)絡中的常規(guī)交互,我們需要使用RxJava服務器端的并發(fā)機制,在Netflix API中進行響應式編程。由于來自某個設備的每一個網(wǎng)絡請求,都會自動與其他網(wǎng)絡請求并行處理,因此如果服務器端無法支持并發(fā)執(zhí)行的話,那么單個“重”的客戶端請求,很可能都不如幾個“輕”的客戶端請求的被處理速度。而且,即使我們已將網(wǎng)絡延遲考慮在內(nèi),如果一個已壓縮的“重”請求服務器端,在處理中沒有達到相同程度的并行處理,那么它就可能會比多個“輕”的請求要慢得多。

外部調(diào)用服務

由于如今許多后端服務都是RESTful類型(即,它們使用的是HTTP),因此底層協(xié)議可能會造成阻塞,以及出現(xiàn)同步調(diào)用外部服務的情況。在進行服務開發(fā)的時候,我們不但需要經(jīng)常聯(lián)絡和調(diào)用其他的服務,而且要根據(jù)第一次調(diào)用的結(jié)果,按需調(diào)用額外更多的服務。因此,在面對眾多I/O時,我們需要在發(fā)出下一個請求之前,等待前一個調(diào)用的完成。而這往往會導致我們的客戶,因為喪失服務響應等待的耐心,而放棄后續(xù)的使用。

因此,我們有必要優(yōu)化外部服務的調(diào)用,特別是那些針對跨不同調(diào)用之間復雜依賴關(guān)系的編排。響應式編程能夠保障此類活動的背后,在邏輯上的“可組合性”,以便調(diào)用服務的開發(fā)人員能夠更容易地編寫相關(guān)的代碼。

高并發(fā)消息的消費者

一種典型的企業(yè)用例往往發(fā)生在有大量并發(fā)消息處理的消費者處,尤其是在那些高度同步的情況下。而響應式框架的優(yōu)勢就在于:通過測量微基準(microbenchmark),實現(xiàn)了每秒都能夠在JVM上處理大量的消息。

整合響應式編程

在線游戲、社交媒體和多人聊天室,都是持續(xù)使用音頻和視頻的應用程序(主要被用于流媒體)。而當涉及到特定類型的高負載、或多用戶應用時,響應式編程顯然是一個優(yōu)雅的解決方案。不過,響應式技術(shù)的引入也可能會增加不必要的復雜性,甚至會給應用程序的性能帶來影響。因此,我們需要通過如下三個簡單步驟,合理地將響應式程序集成到目標應用中:

第1步:創(chuàng)建一個Data-Emitting類型的Observable

為了讓數(shù)據(jù)庫在Observable下,發(fā)送字符串型的數(shù)據(jù)。我們可以通過提供不同的參數(shù),讓just()函數(shù)能夠逐一發(fā)送數(shù)據(jù)。

第2步:創(chuàng)建一個Data-Consuming類型的Observer

前續(xù)代碼片段中的observer能夠使用數(shù)據(jù)庫observable生成的數(shù)據(jù)。它不但可以接收數(shù)據(jù),而且能夠處理數(shù)據(jù),甚至還可以處理各種錯誤。

第3步:調(diào)節(jié)并發(fā)性

最后,我們來定義并發(fā)的scheduler。程序不但需要通過subscribeOn(Schedulers.newThread()),在后臺線程中告知數(shù)據(jù)庫observable去運行;而且需要通過observeOn(AndroidSchedulers.mainThread())在主線程上告知observer去運行。這便是最基本的響應式編程代碼。

總結(jié)

在上文中我們探討了響應模式的趨勢,以及如何將響應式編程集成到應用程序的步驟。就Java虛擬機而言,目前已有多個響應式代碼庫或框架正在被研發(fā)。它們不但功能全面,而且具有廣泛的兼容性。

譯者介紹

陳峻 (Julian Chen),51CTO社區(qū)編輯,具有十多年的IT項目實施經(jīng)驗,善于對內(nèi)外部資源與風險實施管控,專注傳播網(wǎng)絡與信息安全知識與經(jīng)驗;持續(xù)以博文、專題和譯文等形式,分享前沿技術(shù)與新知;經(jīng)常以線上、線下等方式,開展信息安全類培訓與授課。

原文標題:??Reactive Programming:The Steps To Integrate It Into Your Application???,作者:Gurpreet Singh?


責任編輯:華軒 來源: 51CTO
相關(guān)推薦

2022-06-16 13:08:30

Combine響應式編程訂閱

2010-02-26 14:40:15

Python應用程序

2021-04-30 16:54:27

分散式應用程序

2011-08-10 09:31:33

開發(fā)iPhone應用程

2012-11-01 11:34:31

IBMdw

2010-02-07 10:25:11

Android

2011-08-10 17:38:21

DB2JDBC

2012-10-29 09:40:24

云應用集成云計算管理IaaS

2009-07-03 06:57:32

2010-08-11 15:48:04

DB2編程

2010-08-11 15:48:04

DB2編程

2021-08-30 20:19:55

應用程序

2017-11-10 14:00:39

Riverbed應用程序網(wǎng)絡性能

2021-08-12 18:48:31

響應式編程Bio

2022-02-15 09:36:13

容器應用程序云服務

2009-06-01 11:37:46

EquinoxOSGi服務器

2009-07-29 17:42:47

ibmdwWeb2.0

2009-08-27 11:53:45

ibmdw云計算

2010-12-15 17:22:59

2025-05-06 01:14:00

系統(tǒng)編程響應式
點贊
收藏

51CTO技術(shù)棧公眾號