用Spring Web Flow和Terracotta搭建Web應用

來源:互聯網
上載者:User

標籤:序列化   flash   可用性   編程模型   基礎   lse   生命週期   有趣   狀態   

什麼是Spring Web Flow?

Spring Web Flow是Spring Framework中的web應用組件,它提供了一種編寫有狀態和基於會話的web應用的簡便手段。Spring Web Flow 使得邏輯流程成為web應用中的一等公民,它能讓你定義為自包含模組,以獨立於應用的其它部分來配置和重用。它不依賴於架構從而能夠方便的與可選的web應用程式框架一同使用,比如Spring MVC、Struts或者JSF等。

頁面流轉使用一種領域定義語言(DSL)來配置,這個語言專門開發用來定義和組合頁面流轉。目前的實現方式是XML和Java.

Spring Web Flow引入了能滿足多種使用者案例和需求的幾種有狀態資料域:request、flash、flow和conversation,這給你開發有狀態web應用提供了很大的靈活性和能力。

這裡是1.0 release中最有趣特性的快速概要:

在一個地方而不是把邏輯分散在很多地方來定義應用任務的所有控制邏輯,比如一個搜尋流程。

把簡單的流轉組合在一起來建立富控制模組。

使用自然和物件導向的線性編程模型,而不是冗長的的if/else塊來定義嚴格的使用者導航規則。

但流轉結束或到期時自動清除你在流轉執行中分配的記憶體。

在使用你選擇的基礎web架構的Servlet環境中Deploy一個可執行檔流轉。

改變web架構(比如Struts、Spring MVC、JSF及其它)而不用修改流轉定義。

和環境一起改變而不需要修改你的流轉定義, 比如從JUnit測試到Portlet。

開發時在不重啟容器的情況下不斷完善你的應用導航規則。

自動正確響應瀏覽器按鈕(後退、前進、重新整理)而不需要定製編程。

在4個受管理域中儲存任務資料:request、flash、flow、和、conversation等,每個都有自己的獨特語義。

脫離容器單獨測試流轉。能在部署前確保應用控制邏輯能正常運作。

使用Spring IDE 2.0進行可視化編輯你的流轉導航邏輯圖

什麼是Terracotta for Spring?

Terracotta for Spring是基於spring應用的運行時,它為Spring 應用提供了透明的高效能叢集支援,對應用代碼和部署及配置流程影響都很小。它通過在應用下面的堆層級進行叢集而不是直接叢集應用。
這讓開發人員能夠開發與無狀態方式不同的單節點有狀態Spring應用。這使得在需要擴充的應用開始設計時不考慮叢集。而在應用需要擴充或者要保證搞可用性和故障恢複時,他們只需要在Terracotta 設定檔中定義哪些Spring應用上下文中的beans需要進行叢集。Terracotta for Spring 使得應用能夠被自動和透明的叢集,還保證在叢集間的語義和單節點一樣。
對於Spring Web Flow來說,這實際上更簡單。使用者為了獲得web應用的狀態和持續倉庫的叢集能力, 只需要在Terracotta設定檔中把特定的web應用聲明為啟用“session-support”。(詳細內容見下面的章節“聲明式配置”)

從宏觀上看,Terracotta for Spring提供了:

 HTTP session狀態的叢集。保證Spring Web Flow中的使用者狀態和擴充倉庫或放入HTTP session的其它狀態的高可用性和故障恢複能力。

 Spring bean的叢集。Springbean的生命週期語義和域在叢集間被儲存,它們在“邏輯”上相同的ApplicationContext中。目前能被叢集的bean類型是singleton和session scoped. 使用者可以聲明式配置哪個application contexts中的哪個bean需要被叢集。

 透明叢集POJO。 不需要修改已有的代碼,甚至不需要原始碼。應用基於很少的聲明式XML 設定檔,在載入期透明的生效。Terracotta for Spring不需要實現Serializable, Externalizable或其它介面的類。能這樣實現的原因它並沒有使用序列化,而只是將實際的差量和已經改變了的資料轉送給當前需要的節點 (lazily)。

虛擬記憶體管理。它也提供分布式垃圾收集和虛擬堆功能。比如,由於實體記憶體在需要時被換入換出,它能在一個4G RAM的機器上運行需要200G堆的Web應用。 這也意味著你不需要關心Spring Web Flow 會話資料的大小是否超過了物理堆大小。

用Spring Web Flow和Terracotta搭建Web應用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.