SOA-SSH分層架構(gòu)的設(shè)計(jì)與應(yīng)用.doc_第1頁
SOA-SSH分層架構(gòu)的設(shè)計(jì)與應(yīng)用.doc_第2頁
SOA-SSH分層架構(gòu)的設(shè)計(jì)與應(yīng)用.doc_第3頁
SOA-SSH分層架構(gòu)的設(shè)計(jì)與應(yīng)用.doc_第4頁
免費(fèi)預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

.SOA-SSH分層架構(gòu)的設(shè)計(jì)與應(yīng)用1 基于SSH架構(gòu)的應(yīng)用開發(fā)框架系統(tǒng)基于輕量級(jí)J2EE軟件SSH架構(gòu),由Struts、Spring、Hibernate根據(jù)其各自的應(yīng)用特性而進(jìn)行整合而成,選擇以Spring框架為核心并整合Struts和Hibernate的框架組合。SSH組合框架如圖所示,包括表現(xiàn)層、業(yè)務(wù)邏輯層和數(shù)據(jù)持久層。系統(tǒng)采用可重用的、成熟穩(wěn)定的SSH框架可以構(gòu)建健壯的、可重用的、可擴(kuò)充的、易維護(hù)的Web應(yīng)用程序。Struts框架是基于MVC模式的Web框架。MVC設(shè)計(jì)模式是由模型(Model),視圖(View)和控制器(Controller)3個(gè)部分組成,而Struts是一個(gè)免費(fèi)的開源Web層應(yīng)用框架,具有很高的可配置性。Spring框架提供了一種輕量級(jí)的企業(yè)業(yè)務(wù)解決方案,用于建立“快速裝配式企業(yè)組件”。在此基礎(chǔ)上,Spring還提供了包括聲明式事務(wù)管理,RMI或Web Services遠(yuǎn)程訪問業(yè)務(wù)邏輯,以及可以多種方法進(jìn)行的持久化數(shù)據(jù)庫的解決方案。Hibernate框架是一個(gè)優(yōu)秀的開放源代碼的JAVA對(duì)象持久層輕量級(jí)框架。它的工作原理是通過配置文件把JAVA域?qū)ο蠛蛿?shù)據(jù)庫表之間建立起一個(gè)映射關(guān)系,這樣,只需要通過操作這些域?qū)ο筮_(dá)到操作數(shù)據(jù)庫的目的。通過3種框架優(yōu)化組合實(shí)現(xiàn)系統(tǒng)分層解耦,一方面有利于項(xiàng)目組各角色的明確分工,提高開發(fā)效率,縮短系統(tǒng)開發(fā)周期;另一方面使系統(tǒng)具有良好的擴(kuò)展能力和可維護(hù)性。頁面表現(xiàn)層頁面層由Struts實(shí)現(xiàn),Struts是基于MVC模型的框架。MVC模型將一個(gè)Web應(yīng)用分割成為模型(Model)、視圖(View)和控制器(Controller)三個(gè)部件,這三個(gè)部件既相互獨(dú)立又能協(xié)同工作,通用的控制組件ActionServlet接收來自客戶端的HTTP請(qǐng)求,根據(jù)Struts-config.xml配置文件,把請(qǐng)求轉(zhuǎn)發(fā)給相應(yīng)的Action對(duì)象,然后Action類實(shí)現(xiàn)業(yè)務(wù)邏輯和動(dòng)作處理,通過流程跳轉(zhuǎn)將處理結(jié)果返回給客戶端業(yè)務(wù)邏輯層由Spring實(shí)現(xiàn)業(yè)務(wù)組件的組裝關(guān)聯(lián)與管理,Spring是個(gè)流行的輕量級(jí)容器,是一個(gè)開源的并且普遍兼容的非強(qiáng)制性的框架。它通過IoC (Inversion of Control,又稱DI,Dependency Injection)、AOP(Aspect-Oriented Programming)的應(yīng)用、使用面向接口的編程最大限度地降低業(yè)務(wù)組件之間的耦合度,增強(qiáng)系統(tǒng)兼容性和可擴(kuò)展性。數(shù)據(jù)持久層借助開源框架Hibernate對(duì)JDBC進(jìn)行輕量級(jí)的對(duì)象封裝,將數(shù)據(jù)庫表與對(duì)象進(jìn)行關(guān)聯(lián),實(shí)現(xiàn)數(shù)據(jù)庫訪問性能優(yōu)化和與數(shù)據(jù)庫交互的常用操作CRUD。Hibernate封裝了數(shù)據(jù)庫訪問、事務(wù)管理、數(shù)據(jù)緩存等工作,可以大大提供開發(fā)效率。 將這三種技術(shù)有機(jī)結(jié)合起來構(gòu)建的SSH技術(shù)框架,不但可以有效提高系統(tǒng)開發(fā)效率,而且在系統(tǒng)安全性、穩(wěn)定性和健壯性上都有良好的改進(jìn)。域?qū)ο笤诟鱾€(gè)層之間移動(dòng),為表示層提供所需要的數(shù)據(jù)源,為持久層提供對(duì)象,使得各個(gè)層以一種松散耦合的方式彼此作用而無需考慮低層的技術(shù)細(xì)節(jié),進(jìn)而構(gòu)建出一個(gè)完整的Web開發(fā)框架。2 SSH架構(gòu)分層實(shí)現(xiàn)數(shù)據(jù)持久層的搭建持久層Persistence主要完成數(shù)據(jù)的訪問,它操作底層的數(shù)據(jù)庫表,使用DAO組件封裝具體的操作細(xì)節(jié),為業(yè)務(wù)層提供接口,使業(yè)務(wù)邏輯與數(shù)據(jù)持久化分離。在Hibernate中,通過配置相應(yīng)的XML文件(*.hbm.xml)來完成對(duì)象與表、對(duì)象屬性與表字段的“O/R映射”關(guān)系。Hibernate運(yùn)行時(shí),會(huì)自動(dòng)讀取XML映射文件,然后按照該文件指定的規(guī)則動(dòng)態(tài)構(gòu)建Java類,以便管理數(shù)據(jù)在數(shù)據(jù)庫與Java程序之間的轉(zhuǎn)換。持久層的訪問通過DAO組件完成,下面以渠道組織機(jī)構(gòu)信息表(Dchngroupmsg)為例介紹DAO組件建立的過程。SSH為Struts+Spring+Hibernate的組成方式,Struts實(shí)現(xiàn)MVC,Spring負(fù)責(zé)架構(gòu)的結(jié)合,Hibernate進(jìn)行數(shù)據(jù)的持久化。通常其分層開發(fā)的結(jié)構(gòu)圖(以一個(gè)業(yè)務(wù)新增為例)如下:這樣的結(jié)構(gòu),滿足了一般的業(yè)務(wù)需要,但是對(duì)于當(dāng)前日益復(fù)雜化的WEB2.0的開發(fā),卻存在不少問題,歸納起來主要有以下幾點(diǎn)的不足:A)DAO和服務(wù)層容易出現(xiàn)職責(zé)不明,由于按照MVC邏輯,業(yè)務(wù)代碼應(yīng)該寫在Struts Action里,但是其事務(wù)的提供,卻是配置在Service層。為了一組在邏輯上完整的數(shù)據(jù)操作業(yè)務(wù)邏輯,需要涉及兩個(gè)層(Serveice、 Action)來進(jìn)行編寫,遇到判斷的情況下,為了保證完整的事務(wù)操作,則需要將業(yè)務(wù)代碼移到Service層完成,而通常習(xí)慣了在Struts Action里調(diào)用多次Service而產(chǎn)生多個(gè)事務(wù)而在出現(xiàn)Exception時(shí)導(dǎo)致出錯(cuò)時(shí)操作之前調(diào)用的Service事務(wù)的業(yè)務(wù)數(shù)據(jù)沒有回滾。B)當(dāng)需要返回的數(shù)據(jù)供AJAX使用,操作JSON或XML的的大量使用時(shí)。開發(fā)起來會(huì)很費(fèi)力,一段同樣的業(yè)務(wù)代碼,為了使用AJAX和XML可能需要重新編寫一次,或者在同一個(gè)ACTION里通過標(biāo)志來判斷,對(duì)分層結(jié)構(gòu)造成了比較糟糕的破壞。如果設(shè)計(jì)得不好,為了使用JSON和XML還得額外增加大量的配置,嚴(yán)重降低了開發(fā)效率。因此,為了克服這些缺點(diǎn),本人對(duì)于SSH架構(gòu),進(jìn)行了實(shí)現(xiàn)了重新的分層,共享了業(yè)務(wù)代碼。簡(jiǎn)化了開發(fā)、增強(qiáng)了與AJAX技術(shù)、MXL技術(shù)的結(jié)合。提供了一種更高效的開發(fā)模式。本架構(gòu)的優(yōu)點(diǎn),由于業(yè)務(wù)代碼統(tǒng)一實(shí)現(xiàn)IbusinessService接口,使得只需要相對(duì)固定的幾個(gè) Struts Action類調(diào)用Service層的方法,便可以完成工作。包括JSON格式輸出,XML輸出及WebService輸出均調(diào)用Service層方法來完成功能。這樣便實(shí)現(xiàn)了業(yè)務(wù)代碼的分離,以及與前端框架的極大解耦。3 分層架構(gòu)設(shè)計(jì)結(jié)合上面對(duì)SOA和J2EE開發(fā)中基于SSH的分層架構(gòu)的分析,提出了SOA-SSH分層架構(gòu)。這個(gè)架構(gòu)是基于SOA的,也是基于J2EE的,所以這個(gè)架構(gòu)同時(shí)含有了二者的特征。J2EE體系中,通常采用EJB組件或Spring來實(shí)現(xiàn)業(yè)務(wù)邏輯層,而在SOA系統(tǒng)中業(yè)務(wù)是基于服務(wù)的,于是這個(gè)架構(gòu)中采用把業(yè)務(wù)邏輯層的組件包裝成Web Service的方式,使用Web Service作為SOA的服務(wù)提供者,Spring作為服務(wù)的實(shí)現(xiàn),同時(shí)使用企業(yè)服務(wù)總線(ESB)技術(shù)來實(shí)現(xiàn)SOA中的服務(wù)中介,并且在J2EE體系的業(yè)務(wù)層之下添加了一個(gè)服務(wù)代理層,用來封裝對(duì)服務(wù)的具體調(diào)用代碼。架構(gòu)采用ESB擔(dān)當(dāng)SOA服務(wù)注冊(cè)中心的角色,使用ESB能夠?qū)崿F(xiàn)異構(gòu)系統(tǒng)的集成。SOA-SSH分層架構(gòu)如圖所示。 架構(gòu)中有關(guān)部分的說明:表示層:JSP/Html/JavaApplet是表示層的實(shí)現(xiàn)技術(shù),用來生成Web頁面。用戶通過瀏覽器來訪問Web頁面。Struts中Servlet Control是控制器部分,負(fù)責(zé)頁面層和內(nèi)部業(yè)務(wù)的結(jié)合,以及頁面之間的切換。通常情況下在Web.xml文件中配置。服務(wù)代理層:服務(wù)的請(qǐng)求處理程序,用來與服務(wù)交互,從而向系統(tǒng)內(nèi)增加、更新和查詢信息,通常由一組java類組成。編寫服務(wù)調(diào)用代碼時(shí)需從服務(wù)總線獲得服務(wù)的WSDL描述文件,然后根據(jù)此文件進(jìn)行編寫。ESB企業(yè)服務(wù)總線:服務(wù)請(qǐng)求者和服務(wù)提供者之間的中間層,對(duì)服務(wù)進(jìn)行集中管理。在ESB中的具體工作:客戶端向服務(wù)總線發(fā)送請(qǐng)求消息時(shí),首先發(fā)到了代理服務(wù),代理服務(wù)收到服務(wù)請(qǐng)求后,經(jīng)過一系列的消息處理發(fā)送給業(yè)務(wù)服務(wù),由它進(jìn)一步轉(zhuǎn)給外部的服務(wù)提供者。服務(wù)層:Web Service是服務(wù)的提供者,由無狀態(tài)會(huì)話bean生成,通常是粗粒度的,對(duì)應(yīng)企業(yè)的業(yè)務(wù)邏輯。業(yè)務(wù)組件層:負(fù)責(zé)實(shí)現(xiàn)業(yè)務(wù)邏輯的J2EE組件。由Spring或EJB完成業(yè)務(wù)構(gòu)件的開發(fā)。持久化組件:企業(yè)應(yīng)用和關(guān)系數(shù)據(jù)庫之間的中間件,優(yōu)秀的ORM工具。業(yè)務(wù)數(shù)據(jù)在內(nèi)存中表現(xiàn)為對(duì)象,在關(guān)系數(shù)據(jù)庫中則表現(xiàn)為關(guān)系數(shù)據(jù),把對(duì)象持久化到關(guān)系數(shù)據(jù)庫中,需要進(jìn)行對(duì)象一關(guān)系映射(ObjectRelationMapping,簡(jiǎn)稱ORM)。數(shù)據(jù)庫層:關(guān)系型數(shù)據(jù)庫,存儲(chǔ)企業(yè)數(shù)據(jù)。4 企業(yè)服務(wù)總線ESB企業(yè)服務(wù)總線(ESB),是由中間件技術(shù)實(shí)現(xiàn)并支持的面向服務(wù)架構(gòu)(SOA)的一組基礎(chǔ)架構(gòu)功能,支持異構(gòu)環(huán)境中的服務(wù)、消息以及基于事件的交互,并且具有適當(dāng)?shù)姆?wù)級(jí)別的可管理性。ESB具有輕量級(jí)的分布部署模型,通過對(duì)服務(wù)的注冊(cè)、發(fā)布、流程化等一系列的管理,提供服務(wù)倉庫,并可以將服務(wù)倉庫中來自各系統(tǒng)的服務(wù)根據(jù)業(yè)務(wù)需求有機(jī)的結(jié)合起來,同時(shí)它還可以消除不同應(yīng)用之間的技術(shù)差異,讓不同的應(yīng)用服務(wù)器協(xié)調(diào)運(yùn)作,實(shí)現(xiàn)了不同服務(wù)之間的通信與整合。有了ESB,SOA才能釋放它的最大價(jià)值。ESB提供了智能的消息

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論