近年來,響應(yīng)式編程在開發(fā)者社區(qū)和客戶中很受歡迎,由于其以聲明的方式構(gòu)建應(yīng)用程序的能力,而不是強制,形成更加敏感和有彈性的應(yīng)用。Spring 5 將反應(yīng)系統(tǒng)納入其核心框架的事實已經(jīng)顯示出向聲明式編程的范式轉(zhuǎn)變。
創(chuàng)新互聯(lián)公司長期為近千家客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為紹興企業(yè)提供專業(yè)的網(wǎng)站制作、做網(wǎng)站,紹興網(wǎng)站改版等技術(shù)服務(wù)。擁有十年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。響應(yīng)式編程管理數(shù)據(jù)生產(chǎn)者和消費者之間的異步數(shù)據(jù)流,它們需要以流暢的方式對數(shù)據(jù)進行響應(yīng)。所以,響應(yīng)式編程都是異步和事件驅(qū)動的流暢應(yīng)用程序,需要少量的線程進行縮放。
響應(yīng)式編程很難構(gòu)建基于線程的架構(gòu),由于在基于共享可變狀態(tài)、線程和鎖的應(yīng)用程序擴展過程中涉及到高度復(fù)雜性。
在響應(yīng)式編程的上下文中,“在流中有數(shù)據(jù)時,所有事物都是流并以流暢方式行為。”
為什么是響應(yīng)式編程高層次的抽象與響應(yīng)式編程導(dǎo)致了代碼可讀性的提高,因此開發(fā)人員可以主要關(guān)注定義業(yè)務(wù)邏輯的事件的相互依存性。
在高度并發(fā)的環(huán)境中,響應(yīng)模式自然地適合于消息處理,這是一個常見的企業(yè)用例。
由于執(zhí)行反壓力的特性,響應(yīng)式方法最適合控制生產(chǎn)者和消費者之間的流量,這將有助于避免內(nèi)存不足。
對于一個或幾個線程,IO綁定任務(wù)可以通過異步和非阻塞方式執(zhí)行,而且不阻塞當(dāng)前線程。
在高交互和實時應(yīng)用程序或任何操作/事件時,都可能觸發(fā)多個連接子系統(tǒng)的通知,在這種情況下響應(yīng)式編程可以更有效的進行管理。
用于響應(yīng)式編程實現(xiàn)的理想案例“響應(yīng)流”定義一個 API 規(guī)范,其中包含一組最小的接口,這些接口公開了定義非阻塞反壓力的數(shù)據(jù)流的操作和實體的方法。
隨著反壓力的引入,響應(yīng)流允許用戶控制來自出版商的數(shù)據(jù)交換速率。
響應(yīng)流 API java.util.concurrent.flow 已正式成為 java 9 的一部分。
響應(yīng)流主要用作互操作層。
Spring 5 提供的響應(yīng)式編程Spring-Web-Reactive 模塊和 Spring MVC 都支持相同的 @Controller 編程,但 Spring-Web-Reactive 是在 Reactive 和非阻塞引擎上執(zhí)行的。
遵循這個文檔,見:
http://docs.spring.io/spring-framework/docs/5.0.0.BUILD-SNAPSHOT/spring-framework-reference/html/web-reactive.html
Spring-Web-Reactive 模塊和 Spring MVC 共享許多通用的算法,但 Spring-Web-Reactive 模塊已經(jīng)重新定義了許多 Spring MVC 契約,例如 HandlerMapping和HandlerAdapter,以使它們變得異步和非阻塞,以及啟用響應(yīng)式 HTTP 請求和響應(yīng)(以 RouterFunction 和 HandlerFunction 的形式)。
除了現(xiàn)有的 RestTemplate 外,新的響應(yīng)式 WebClient 也在 Spring 5 中引入。
支持響應(yīng)式編程的 HTTP 客戶端(例如 Reactor、Netty、Undertow)已經(jīng)采用了一系列響應(yīng)式的 ClientHttpRequest 和 ClientHttpResponse 抽象,它們將請求和響應(yīng)體作為 Flux <DataBuffer> 公開,并且在讀寫端提供全面的背壓支持。
Spring 5 Framework 引入了 Reactor,作為 Reactive Streams 規(guī)范的實現(xiàn)。
Reactor 是用于在 JVM 上構(gòu)建非阻塞應(yīng)用程序的下一代 Reactive 庫。
Reactor 擴展了基本的 Reactive Streams Publisher 契約,并定義了 Flux 和 Mono API 類型,分別為 0..N 和 0..1 的數(shù)據(jù)序列提供聲明性操作。
Spring Web Reactive 使用 Servlet 3.1 提供了非阻塞 I/O,并運行在 Servlet 3.1 容器上。
Spring WebFlux 提供了兩種編程模型可供選擇。
Spring 5 包含了 Spring Web Reactive(在 spring-web-reactive 模塊下)和 Spring Web MVC(在 spring-webmvc 模塊下)。
雖然 Spring Web Reactive 和 Spring Web MVC 模塊共享了很多算法,但是由于 Spring Web Reactive 能夠在響應(yīng)式的非阻塞 Reactive Streams HTTP 適配器層上運行,因此它們之間不共享代碼。
Spring MVC 執(zhí)行需要 Servlet 容器,而 Spring Web Reactive 也可以在非 Servlet 運行時上運行,比如在 Netty 和 Undertow 上運行。
如果對具有輕量級、函數(shù)式的 Web 框架的非阻塞 Web 棧的必要要求,并與 Java 8 lambda 或 Kotlin一起使用,則應(yīng)該考慮從 Spring MVC 應(yīng)用程序切換到 Spring Web Reactive。
這是一個 2.0.0 M5 版本的 pom.xml ,依賴于 WebFiux。
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.0.M5</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-webflux</artifactId> </dependency> </dependencies>
網(wǎng)站名稱:淺談Spring5響應(yīng)式編程-創(chuàng)新互聯(lián)
當(dāng)前地址:http://m.rwnh.cn/article34/cecpse.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁設(shè)計公司、企業(yè)網(wǎng)站制作、網(wǎng)站建設(shè)、用戶體驗、品牌網(wǎng)站設(shè)計、營銷型網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容