傳送門 ☞ 輪子的專欄 ☞ 轉載請註明 ☞ http://blog.csdn.net/leverage_1229
程序員
在上述功能架構中,除了核心層外,應用層及服務層都包括了用戶UI界面,所以服務中包括了Mashup所需的WebAPI,須要採用MVC的WebApp框架來實現。整套系統的技術架構以下圖所示,根據整體架構的設計思想,自定而下包括了客戶端、服務層、核心層、系統軟件平臺、基礎設施。整套技術架構建設在B/S架構模式下。
web
技術架構中,層次之間的鏈接主要包括了Mashup技術及WebAPP框架。spring
Mashup架構由3個不一樣的部分組成,它們在邏輯上和物理上都是相互脫離的(可能由網絡和組織邊界分隔):API/內容提供者、Mashup站點和客戶機的Web瀏覽器。sql
WebApp應用框架主要負責各種服務組件以及業務系統的構建,即內容提供者。WebApp框架主要由展示層,業務層,控制層,數據持久層組成。
整套設計思想中,從數據建模出發採用的是Top-Down設計思路;頁面構建採用的是Bottom-Up組裝方法;兩部分工做最終聚集點在業務層(Services)。經過這種分工的方法,能夠最大化地實現從業務建模到頁面組件的複用。
WebApp框架包括了表現層的一套組件,框架主要着重的是支持數據庫操做,管理數據庫鏈接以及規範架構。
目前框架主要採用的技術爲 JSF、Spring、Hibernate。在表現層是JSF,在持久層是Hibernate,框架使用Spring來管理bean之間的依賴關係。WebApp框架是一個全新的軟件產品,基於JSF組件模型,能夠大量重用JSF的組件;基於Spring的技術進行事務管理;基於Hibernate的數據庫持久策略,提供了完整的數據庫操做過程。
該框架也具備「自動生成框架」的功能。能夠經過Bottom-Up設計理念,從數據模型生成的代碼工程。輸出是一個搭好的骨架式代碼,這個「骨架」分紅三層:表示層,業務層,數據持久層。項目開發人員須要進行的是「填充骨架」的程序開發。
數據庫
架構代碼部分主要的包結構是Backing、Entity、Dao、Service這四個部分。這四個部分的名稱比較明確,很好的劃分了層次內容。其中Backing是JSF中的backingbean,處理表現層。Service是業務層,實現業務操做。Entity與Dao是屬於持久層。Entity是hibernate中ORM的數據持久化類,是一些普通的POJO,與數據庫表一一映射,entity下有hibernate的hbm文件,表示數據庫表與實體的映射關係。Dao是直接與數據庫操做的內容。
每一個路徑下,都按表來劃分的,即一個表會對應一個backing,一個entity,一個Service,一個dao。同時在backing與Service中,咱們定義了一個base一個sub,sub是提供給用戶後續開發使用的。
所以,技術框架使用自動框架生成工具,自動生成。下面清單介紹了框架的主要內容。
JSF表格頁面、增長頁面、修改頁面;
BackingBaseBean,BackingSubBaseBean;
Service接口和具體實現類;
Dao實現(包括基本方法);
配置文件faces-config.xml、applicationContext.xml、web.xml;
生成後所須要的JAR包。
注:生成後所須要的JAR包部分是與代碼生成工具一塊兒提供的,有了框架代碼和Jar包,便可以構造出完整的開發工程,進行項目開發。
瀏覽器
因爲本框架使用的是JSF+Spring+Hibernate的架構,所以WEB-INF路徑下幾個配置文件web.xml以及applicationContext.xml、faces-config.xml是比較重要的。Web.xml定義了使用的框架faces-config.xml定義了JSF頁面的backingbean以及跳轉關係,而applicationContext.xml定義了bean的依賴關係,即便用依賴注入的功能。
針對每一個表的操做,框架提供了從表現層業務層到持久層的過程。這種過程也能夠做爲項目後續開發的一個參考。以一個表對應的頁面爲例。他的頁面展示的應該是表格功能。頁面由JSF實現,現有的頁面使用了一些開源的組件,這些因爲來源不夠穩定的緣由,從此不會使用。faces-config.xml定義了頁面的backingbean。Backingbean中有一個相應Service的私有成員,它的實例化咱們使用spring的依賴注入控制。Backingbean支持頁面的數據取得,數據操做方法相應,這些與業務相關操做,是交由其Service進行。
每一個Service都有至少一個DAO的成員,它的實例化也是靠spring的依賴注入控制。咱們在Service中進行對數據的邏輯操做,其最後與數據庫交互的過程,是由DAO完成。DAO基本上是Hibernate的內容,DAO中提供了完整的數據庫操做方法,封裝好了一些經常使用的查詢,插入刪除功能,也提供了按sql語句進行操做。
對於service中的非數據庫操做,spring也提供能至關完善的無縫插入,對於JMS、WebService、RMI等分佈式遠程調用都提供了至關靈活而簡單的幫助類,當注入到具體的業務處理實現類中後能讓調用者根本無需知道具體的實現方式,對業務的實現提供能很好的擴展性,適應性,標準性和開放性。
對於項目的開發過程當中,使用了框架以後,DAO,POJO不須要修改,主要須要後續開發的是針對需求功能開發頁面和backingbean。對backingbean能夠在現有的subbackingbean進行,針對需求實現業務,在Service中開發業務邏輯。Service中對數據庫的操做,調用DAO類相應方法。
其中對於service層和DAO層的服務能力經過web容器集羣來橫向擴展,在DAO層經過web容器集羣的session複製原理來實如今多容器環境中數據的同步存儲,對service層經過web容器集羣負載均衡達到對效率的優化整合,提升service層的響應能力,以最終到達總體應用的適用性,安全性和擴充性。
安全