下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、SOA-SSH分層架構(gòu)的設(shè)計(jì)與應(yīng)用1基于SSH架構(gòu)的應(yīng)用開(kāi)發(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ù)持久層。表現(xiàn)層Service Locator業(yè)務(wù)層DAO Class持久層Struts MVCSpringHibernateOR MappingxyDomain Model Business Objects系統(tǒng)采用可重用的、成熟穩(wěn)定的SSH框架可以構(gòu)建健壯的、可重用的、可擴(kuò)
2、充的、易維護(hù)的Web應(yīng)用程序。Struts框架是基于 MVC模式的Web框架。MVC設(shè)計(jì)模式是由模型(Model),視圖 (View)和控制器(Controller)3 個(gè)部分組成,而Struts是一個(gè)免費(fèi)的開(kāi)源 Web層應(yīng)用框架, 具有很高的可配置性。Spring框架提供了一種輕量級(jí)的企業(yè)業(yè)務(wù)解決方案,用于建立快 速裝配式企業(yè)組件”。在此基礎(chǔ)上,Spring 還提供了包括聲明式事務(wù)管理,RMI或WebServices遠(yuǎn)程訪問(wèn)業(yè)務(wù)邏輯,以及可以多種方法進(jìn)行的持久化數(shù)據(jù)庫(kù)的解決方案。Hibernate 框架是一個(gè)優(yōu)秀的開(kāi)放源代碼的 JAVA對(duì)象持久層輕量級(jí)框架。它的工作原理是 通過(guò)配置文件把 J
3、AVA域?qū)ο蠛蛿?shù)據(jù)庫(kù)表之間建立起一個(gè)映射關(guān)系,這樣,只需要通過(guò)操作這些域?qū)ο筮_(dá)到操作數(shù)據(jù)庫(kù)的目的。通過(guò)3種框架優(yōu)化組合實(shí)現(xiàn)系統(tǒng)分層解耦,一方面有利于項(xiàng)目組各角色的明確分工, 提高開(kāi)發(fā)效率,縮短系統(tǒng)開(kāi)發(fā)周期;另一方面使系統(tǒng)具有良好的擴(kuò)展能力和可維護(hù)性。頁(yè)面表現(xiàn)層頁(yè)面層由Struts實(shí)現(xiàn),Struts是基于MVC模型的框架。MVC模型將一個(gè) Web應(yīng)用 分割成為模型(Model )、視圖(View )和控制器(Controller )三個(gè)部件,這三個(gè)部件既相互獨(dú)立又能協(xié)同工作, 通用的控制組件 ActionServlet 接收來(lái)自客戶端的 HTTP請(qǐng)求,根 據(jù)Struts-config.xml 配
4、置文件,把請(qǐng)求轉(zhuǎn)發(fā)給相應(yīng)的 Action對(duì)象,然后Action類實(shí)現(xiàn)業(yè) 務(wù)邏輯和動(dòng)作處理,通過(guò)流程跳轉(zhuǎn)將處理結(jié)果返回給客戶端業(yè)務(wù)邏輯層由Spring實(shí)現(xiàn)業(yè)務(wù)組件的組裝關(guān)聯(lián)與管理,Spring是個(gè)流行的輕量級(jí)容器,是一個(gè)開(kāi)源的并且普遍兼容的非強(qiáng)制性的框架。它通過(guò)IoC (Inversion of Control ,又稱 DI,DependencyInjection)、AOP(Aspect-Oriented Programming)的應(yīng)用、使用面向接口的編程最大限度地降低業(yè)務(wù)組件之間的耦合度,增強(qiáng)系統(tǒng)兼容性和可擴(kuò)展性。數(shù)據(jù)持久層借助開(kāi)源框架 Hibernate 對(duì)JDBC進(jìn)行輕量級(jí)的對(duì)象封裝,將數(shù)
5、據(jù)庫(kù)表與對(duì)象進(jìn)行關(guān)聯(lián),實(shí)現(xiàn)數(shù)據(jù)庫(kù)訪問(wèn)性能優(yōu)化和與數(shù)據(jù)庫(kù)交互的常用操作CRUD。Hibernate 封裝了數(shù)據(jù)庫(kù)訪問(wèn)、事務(wù)管理、數(shù)據(jù)緩存等工作,可以大大提供開(kāi)發(fā)效率。將這三種技術(shù)有機(jī)結(jié)合起來(lái)構(gòu)建的SSH技術(shù)框架,不但可以有效提高系統(tǒng)開(kāi)發(fā)效率,而且在系統(tǒng)安全性、穩(wěn)定性和健壯性上都有良好的改進(jìn)。域?qū)ο笤诟鱾€(gè)層之間移動(dòng),為表示層提供所需要的數(shù)據(jù)源,為持久層提供對(duì)象,使得各個(gè)層以一種松散耦合的方式彼此作用而無(wú)需考慮低層的技術(shù)細(xì)節(jié),進(jìn)而構(gòu)建出一個(gè)完整的Web開(kāi)發(fā)框架。2 SSH架構(gòu)分層實(shí)現(xiàn)數(shù)據(jù)持久層的搭建持久層Persistenee主要完成數(shù)據(jù)的訪問(wèn),它操作底層的數(shù)據(jù)庫(kù)表,使用DAO組件封裝具體的操作細(xì)節(jié)
6、,為業(yè)務(wù)層提供接口,使業(yè)務(wù)邏輯與數(shù)據(jù)持久化分離。在Hibernate中,O/R通過(guò)配置相應(yīng)的 XML文件(*.hbm.xml )來(lái)完成對(duì)象與表、對(duì)象屬性與表字段的映射”關(guān)系。Hibernate 運(yùn)行時(shí),會(huì)自動(dòng)讀取 XML映射文件,然后按照該文件指定的規(guī)則動(dòng) 態(tài)構(gòu)建Java類,以便管理數(shù)據(jù)在數(shù)據(jù)庫(kù)與Java程序之間的轉(zhuǎn)換。持久層的訪問(wèn)通過(guò)DAO組件完成,下面以渠道組織機(jī)構(gòu)信息表(Dchngroupmsg)為例介紹DAO組件建立的過(guò)程。SSH 為 Struts+Spring+Hibernate的組成方式,Struts 實(shí)現(xiàn) MVC,Spring 負(fù)責(zé)架構(gòu)的結(jié)合,Hibernate進(jìn)行數(shù)據(jù)的持久化。
7、通常其分層開(kāi)發(fā)的結(jié)構(gòu)圖(以一個(gè)業(yè)務(wù)新增為例)如下:這樣的結(jié)構(gòu),滿足了一般的業(yè)務(wù)需要,但是對(duì)于當(dāng)前日益復(fù)雜化的WEB2.0的開(kāi)發(fā),卻存在不少問(wèn)題,歸納起來(lái)主要有以下幾點(diǎn)的不足:A)DAO和服務(wù)層容易出現(xiàn)職責(zé)不明,由于按照MVC邏輯,業(yè)務(wù)代碼應(yīng)該寫在 StrutsAction里,但是其事務(wù)的提供,卻是配置在Service層。為了一組在邏輯上完整的數(shù)據(jù)操作業(yè)務(wù)邏輯,需要涉及兩個(gè)層( Serveice、Action )來(lái)進(jìn)行編寫,遇到判斷的情況下,為了保證完整的事務(wù)操作,則需要將業(yè)務(wù)代碼移到Service層完成,而通常習(xí)慣了在StrutsAction里調(diào)用多次Service而產(chǎn)生多個(gè)事務(wù)而在出現(xiàn)Exc
8、eption 時(shí)導(dǎo)致出錯(cuò)時(shí)操作之前調(diào)用的Service事務(wù)的業(yè)務(wù)數(shù)據(jù)沒(méi)有回滾。B)當(dāng)需要返回的數(shù)據(jù)供 AJAX使用,操作JSON或XML的的大量使用時(shí)。開(kāi)發(fā)起來(lái)會(huì)很費(fèi)力,一段同樣的業(yè)務(wù)代碼,為了使用AJAX和XML可能需要重新編寫一次,或者在同一個(gè)ACTION里通過(guò)標(biāo)志來(lái)判斷,對(duì)分層結(jié)構(gòu)造成了比較糟糕的破壞。如果設(shè)計(jì)得不好,為了使用JSON和XML還得額外增加大量的配置,嚴(yán)重降低了開(kāi)發(fā)效率。因此,為了克服這些缺點(diǎn),本人對(duì)于 SSH架構(gòu),進(jìn)行了實(shí)現(xiàn)了重新的分層,共享了業(yè)務(wù)代 碼。簡(jiǎn)化了開(kāi)發(fā)、增強(qiáng)了與AJAX技術(shù)、MXL技術(shù)的結(jié)合。提供了一種更高效的開(kāi)發(fā)模式。本架構(gòu)的優(yōu)點(diǎn),由于業(yè)務(wù)代碼統(tǒng)一實(shí)現(xiàn)Ib
9、us in essService 接口,使得只需要相對(duì)固定的幾個(gè)Struts Action類調(diào)用Service層的方法,便可以完成工作。包括JSON格式輸出,XML輸出及 WebService 輸出均調(diào)用Service層方法來(lái)完成功能。這樣便實(shí)現(xiàn)了業(yè)務(wù)代碼的分離,以及與前端框架的極大解耦。3分層架構(gòu)設(shè)計(jì)結(jié)合上面對(duì)SOA和J2EE開(kāi)發(fā)中基于SSH的分層架構(gòu)的分析,提出了 SOA-SSH分層 架構(gòu)。這個(gè)架構(gòu)是基于 SOA的,也是基于J2EE的,所以這個(gè)架構(gòu)同時(shí)含有了二者的特征。 J2EE體系中,通常采用 EJB組件或Spring來(lái)實(shí)現(xiàn)業(yè)務(wù)邏輯層,而在 SOA系統(tǒng)中業(yè)務(wù)是基 于服務(wù)的,于是這個(gè)架構(gòu)中
10、采用把業(yè)務(wù)邏輯層的組件包裝成Web Service的方式,使用Web Service作為SOA的服務(wù)提供者,Spring作為服務(wù)的實(shí)現(xiàn),同時(shí)使用企業(yè)服務(wù)總線 (ESB)技術(shù)來(lái)實(shí)現(xiàn)SOA中的服務(wù)中介,并且在 J2EE體系的業(yè)務(wù)層之下添加了一個(gè)服務(wù)代理 層,用來(lái)封裝對(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)如圖所示。強(qiáng)嫌業(yè)勞對(duì)眼;服代 理RequestRequest業(yè)4 由4 53中的:個(gè)巾色架構(gòu)中有關(guān)部分的說(shuō)明:表示層:JSP/Html/JavaApplet是表示層的實(shí)現(xiàn)技術(shù),用來(lái)生成Web頁(yè)面。用戶通過(guò)瀏覽器來(lái)
11、訪問(wèn) Web頁(yè)面。Struts中Servlet Control 是控制器部分,負(fù)責(zé)頁(yè)面層和內(nèi)部業(yè)務(wù) 的結(jié)合,以及頁(yè)面之間的切換。通常情況下在Web.xml文件中配置。服務(wù)代理層:服務(wù)的請(qǐng)求處理程序,用來(lái)與服務(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)過(guò)一系列的消息處理發(fā)送給業(yè)務(wù)服務(wù),由它進(jìn)一步轉(zhuǎn)給外部的服務(wù)提供者。
12、服務(wù)層:Web Service 是服務(wù)的提供者,由無(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)件的開(kāi)發(fā)。持久化組件:企業(yè)應(yīng)用和關(guān)系數(shù)據(jù)庫(kù)之間的中間件,優(yōu)秀的 ORM工具。業(yè)務(wù)數(shù)據(jù)在內(nèi)存 中表現(xiàn)為對(duì)象,在關(guān)系數(shù)據(jù)庫(kù)中則表現(xiàn)為關(guān)系數(shù)據(jù),把對(duì)象持久化到關(guān)系數(shù)據(jù)庫(kù)中,需要進(jìn)行對(duì)象一關(guān)系映射(ObjectRelationMapping,簡(jiǎn)稱 ORM)。數(shù)據(jù)庫(kù)層:關(guān)系型數(shù)據(jù)庫(kù),存儲(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í)的分布部署模型,通過(guò)對(duì)服務(wù)的注冊(cè)、發(fā)布、流程化等一系列的管理,提供服務(wù)倉(cāng)庫(kù),并可以將服務(wù)倉(cāng)庫(kù)中來(lái)自各系統(tǒng)的服務(wù)根據(jù)業(yè)務(wù)需求有機(jī)的結(jié)合起來(lái),同時(shí)它還可以消除不同應(yīng)用之間的技術(shù)差異,讓不同的應(yīng)用服務(wù)器協(xié)調(diào)運(yùn)作,實(shí)現(xiàn)了不同服務(wù)之間的通信與整合。有了 ESB,SOA才能釋放它的最大價(jià)值。ES
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 淺談我國(guó)精密儀器與裝備的現(xiàn)狀和發(fā)展
- 腸道微生態(tài)行業(yè)發(fā)展趨勢(shì)
- 石河子大學(xué)《醫(yī)藥數(shù)理統(tǒng)計(jì)》2022-2023學(xué)年第一學(xué)期期末試卷
- 石河子大學(xué)《試驗(yàn)設(shè)計(jì)與數(shù)據(jù)分析》2023-2024學(xué)年第一學(xué)期期末試卷
- 石河子大學(xué)《解析幾何》2021-2022學(xué)年第一學(xué)期期末試卷
- 石河子大學(xué)《健康評(píng)估》2022-2023學(xué)年第一學(xué)期期末試卷
- 石河子大學(xué)《阿拉伯國(guó)家歷史與文化常識(shí)》2023-2024學(xué)年第一學(xué)期期末試卷
- 沈陽(yáng)理工大學(xué)《室外空間設(shè)計(jì)方法》2022-2023學(xué)年第一學(xué)期期末試卷
- 沈陽(yáng)理工大學(xué)《矩陣分析》2021-2022學(xué)年第一學(xué)期期末試卷
- 父親的病閱讀題
- 另辟蹊徑-利用MSYS2安裝MinGW+Qt開(kāi)發(fā)環(huán)境(含32位-64位-動(dòng)態(tài)庫(kù)-靜態(tài)庫(kù)-qwt-opencv等等)
- 初高中數(shù)學(xué)銜接知識(shí)
- V系列有載分接開(kāi)關(guān)講義
- 圖書(shū)室開(kāi)放時(shí)間表(精編版)
- 其他食品生產(chǎn)許可證審查細(xì)則
- 廣東旅游資源匯總21個(gè)城市
- 小學(xué)生楷體字帖臨摹練習(xí)
- 土地地類一覽表
- 學(xué)習(xí)王紅旭舍己救人光榮事跡心得體會(huì)(精選多篇)
- 產(chǎn)科常見(jiàn)的疾病護(hù)理診斷及要求措施
- 小學(xué)數(shù)學(xué)教學(xué)中的預(yù)習(xí)
評(píng)論
0/150
提交評(píng)論