某大型銀行深化系統之十四:技術架構

傳送門 ☞ 輪子的專欄 ☞ 轉載請註明 ☞ http://blog.csdn.net/leverage_1229
程序員

技術架構

        在上述功能架構中,除了核心層外,應用層及服務層都包括了用戶UI界面,所以服務中包括了Mashup所需的WebAPI,須要採用MVC的WebApp框架來實現。整套系統的技術架構以下圖所示,根據整體架構的設計思想,自定而下包括了客戶端、服務層、核心層、系統軟件平臺、基礎設施。整套技術架構建設在B/S架構模式下。
web


客戶端
        用戶入口,完成UI界面的功能,包括在Windows下的瀏覽器界面、XPE嵌入式系統的掃描終端、流程定義工具、監控、報表展示等等,經過ActiveX嵌入方式提供瀏覽器的通用環境,支持B/S和C/S兩種方式。
服務層
        每一個服務都包含了業務處理界面,採用典型的MVC框架構成自治系統。服務包括了展示層、控制層、業務層、持久層。服務層框架大部分採用JSF+Spring+Hibernate的WebApp框架,經過OR-Mapping等工具自動生成大部分的代碼和框架,規範服務的編制。橫向擴展經過Hiberate的二級分佈式Cache在WebLogic容器中完成分佈式複製和備份。
核心層
        包括了以流程管理爲中心的工做項池、流程定義、流程監控、優先級管理、統計報表,以及統一日誌管理,SSO單點登陸系統,以及ECM等。
系統軟件平臺
        包括了支持各種服務的Weblogic容器及中間件、Documentum 內容管理ECM、Oracle關係型數據庫,包括了支撐各種平臺所需的RedHat AS4(Linux)、Windows Server 200三、IBM AIX等操做系統。
基礎設施
        包括了以掃描補錄中心爲表明的高速內部局域網,各種服務運行時的主機服務器、數據庫服務器,提供影像存儲的SAN等網絡存儲介質,同時爲達到系統的穩定性和提升系統響應性和擴展性而引入的LVS負載均衡器。

        技術架構中,層次之間的鏈接主要包括了Mashup技術及WebAPP框架。spring

1Mashup架構


        Mashup架構由3個不一樣的部分組成,它們在邏輯上和物理上都是相互脫離的(可能由網絡和組織邊界分隔):API/內容提供者、Mashup站點和客戶機的Web瀏覽器。sql

1.1API/內容提供者

        它們是正在進行融合的內容提供者。爲了方便數據的檢索,提供者將本身的內容經過Web協議對外提供(例如REST、Web服務和RSS/Atom)。

1.2Mashup站點

        即mashup所在的地方,是mashup 邏輯所在的地方,而不是執行這些邏輯的地方。從一方面來講,mashup能夠直接使用服務器端動態內容生成技術(例如Java servlets、CGI、PHP或ASP)實現爲相似傳統Web應用程序。另外,合併內容能夠直接在客戶機的瀏覽器中經過客戶機端腳本(即JavaScript)或applet生成。客戶機端的邏輯是直接在mashup的Web頁面中嵌入的代碼與這些Web頁面引用的腳本API庫或applet(由內容提供者提供)的組合。mashup使用的這種方法能夠稱爲胖Internet應用程序(RIA),這意味着它們是以交互式用戶體驗爲導向的。客戶機端進行數據集成的優勢包括:對mashup服務器的所產生的負載較輕(數據能夠直接從內容提供者那裏傳送過來)、具備更好無縫用戶體驗(頁面能夠請求對內容的一部分進行更新,而不用刷新整個頁面)。
        一般,mashup都使用服務器和客戶機端邏輯的組合來實現本身的數據集成。mashup應用程序都使用了直接由用戶提供的數據,(至少)使一個數據集是本地的。另外,對多數據源的數據執行復雜查詢所須要的計算是不可能在客戶機的Web瀏覽器中執行的。

1.3客戶機的Web瀏覽器

        是以圖形化的方式呈現應用程序的地方,也是用戶交互發生的地方。正如上面介紹的同樣,mashup一般都使用客戶機端的邏輯來構建合成內容。

2WebApp框架

        WebApp應用框架主要負責各種服務組件以及業務系統的構建,即內容提供者。WebApp框架主要由展示層,業務層,控制層,數據持久層組成。
        整套設計思想中,從數據建模出發採用的是Top-Down設計思路;頁面構建採用的是Bottom-Up組裝方法;兩部分工做最終聚集點在業務層(Services)。經過這種分工的方法,能夠最大化地實現從業務建模到頁面組件的複用。
        WebApp框架包括了表現層的一套組件,框架主要着重的是支持數據庫操做,管理數據庫鏈接以及規範架構。
        目前框架主要採用的技術爲 JSF、Spring、Hibernate。在表現層是JSF,在持久層是Hibernate,框架使用Spring來管理bean之間的依賴關係。WebApp框架是一個全新的軟件產品,基於JSF組件模型,能夠大量重用JSF的組件;基於Spring的技術進行事務管理;基於Hibernate的數據庫持久策略,提供了完整的數據庫操做過程。
        該框架也具備「自動生成框架」的功能。能夠經過Bottom-Up設計理念,從數據模型生成的代碼工程。輸出是一個搭好的骨架式代碼,這個「骨架」分紅三層:表示層,業務層,數據持久層。項目開發人員須要進行的是「填充骨架」的程序開發。
數據庫

        WebApp框架最上層是頁面部分,它使用JSF技術實現,主要負責頁面呈現。
        接下來是Backing Bean,Backing Bean也屬於表現層,主要進行的是頁面組件綁定,頁面呈現後臺處理,頁面動做處理,頁面跳轉控制。同時負責調用Service層。
        Service層,也就是業務層。它負責處理業務邏輯,同時負責調用下層DAO進行數據庫操做。本層主要編寫相應的業務邏輯,開發人員在本層增長業務邏輯處理代碼,已有的代碼只是對本表的增、刪、改、查,在編寫代碼時能夠調用其餘dao中的方法,取對應的數據。
        DAO層,屬於數據持久層。DAO層主要進行的是針對一個數據庫表的CRUD(增刪查改)操做。POJO層是數據持久層的一部分。POJO也是數據持久層的一部分,是對數據庫表進行ORM映射的。
        該框架的優點較爲明顯:較好的使用技術框架,能夠大大提升項目開發速度,提升組件的可充用性,下降開發成本,下降程序員進入門坎。各層次的職能很是明確,確保了程序的可維護性,對於團隊分層協做開發提供了牢固的基礎,能極大的提升項目開發速度以及應對需求變化的能力。

3代碼結構

        架構代碼部分主要的包結構是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包,便可以構造出完整的開發工程,進行項目開發。
瀏覽器

4框架機制

        因爲本框架使用的是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層的響應能力,以最終到達總體應用的適用性,安全性和擴充性。
安全

相關文章
相關標籤/搜索