SaaS系列介紹之十三 SaaS系統(tǒng)體系架構_第1頁
SaaS系列介紹之十三 SaaS系統(tǒng)體系架構_第2頁
免費預覽已結束,剩余18頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、SaaS系列介紹n十二SaaS系統(tǒng)體系架構1系統(tǒng)體系架構設計軟件開發(fā)中系統(tǒng)體系架構決定了一個系統(tǒng)穩(wěn)定性、健壯性、可擴展性、兼容性和可用性,它是系統(tǒng)的靈魂。體系架構是架構師所關注的核心。良好的體系架構是系統(tǒng)成功的開端,否則,再好的代碼與設計也無濟于事。2當前.net主要的開發(fā)框架簡介lCastleCastle是針對.NET平臺的一個開源項目,從數(shù)據(jù)訪問框架ORM到IOC容器,再到WEB層的MVC框架、AOP,基本包括了整個開發(fā)過程中的所有東西,為我們快速的構建企業(yè)級的應用程序提供了很好的服務。其中關鍵的技術是ActiveRecord,Facilities,MonoRail等等。優(yōu)點:體現(xiàn)了ORM

2、、IOC、ActiveRecorder思想,MVC框架。不足:框架層次劃分不太清楚l PetShopPetShop是微軟用它來展示.Net企業(yè)系統(tǒng)開發(fā)的能力。PetShop4.0,這個實例是Microsoft針對SQLServer2005以及VisualStudio2005發(fā)布的。其中運用了一些新的技術。緩存數(shù)據(jù)與數(shù)據(jù)庫的更新同步,新的Web控件,以及母版的應用,異步通訊,消息隊列。這些都是很實用的技術。PetShop中大量運用了抽象工廠模式,由于采用了MasterPages,Membership,以及Profile,表現(xiàn)層的編碼量減少了25%,數(shù)據(jù)層的編碼量減少了36%。圖1PetShop4

3、.0的體系架構PetShop4.0在數(shù)據(jù)訪問層(DAL)中,采用DALInterface抽象出數(shù)據(jù)訪問邏輯,并以DALFactory作為數(shù)據(jù)訪問層對象的工廠模塊。對于DALInterface而言,分別有支持MS-SQL的SQLServerDAL和支持Oracle的oracleDAL具體實現(xiàn)。而Model模塊則包含了數(shù)據(jù)實體對象??梢钥吹?,在數(shù)據(jù)訪問層中,完全采用了“面向接口編程”思想。抽象出來的IDAL模塊,脫離了與具體數(shù)據(jù)庫的依賴,從而使得整個數(shù)據(jù)訪問層利于數(shù)據(jù)庫遷移。DALFactory模塊專門管理DAL對象的創(chuàng)建,便于業(yè)務邏輯層訪問。SQLServerDAL和OracleDAL模塊均實現(xiàn)

4、IDAL模塊的接口,其中包含的邏輯就是對數(shù)據(jù)庫的Select,Insert,Update和Delete操作。因為數(shù)據(jù)庫類型的不同,對數(shù)據(jù)庫的操作也有所不同,代碼也會因此有所區(qū)別。此外,抽象出來的IDAL模塊,除了解除了向下的依賴之外,對于其上的業(yè)務邏輯層,同樣僅存在弱依賴關系。優(yōu)點:體現(xiàn)了工廠模式ORM,IOC思想,.Net企業(yè)級開發(fā)。不足:沒有ORM思想。lNhibernatehibernate是一個目前應用的最廣泛的開放源代碼的對象關系映射框架,它對Java的JDBC(類似于ADO.NET)進行了非常輕量級的對象封裝,使得程序員可以隨心所欲的使用對象編程思維來操縱數(shù)據(jù)庫,目前在國內(nèi)Java

5、開發(fā)界已經(jīng)頗為流行。而NHibernate,如同NUnit,NAnt樣,是基于.Net的Hibernate實現(xiàn)。主要體現(xiàn)了ORM的思想,解決了分層開發(fā)中的持久層的問題,在N層開發(fā)中非常重要。優(yōu)點:體現(xiàn)了ORM,持久層。不足:配置復雜,過份信賴于XML文件。所用技術總結:ORMapping思想,分層架構思想,Castle-ActiveRecorder,Atlas,反射,設計模式(單例模式,簡單工廠模式,策略模式),XML,IOC,框架。3當前2ee主要的開發(fā)框架簡介lStruts框架Struts框架是一開源產(chǎn)品,基于模型-視圖-控制器(MVC)設計范例來開發(fā)Web應用軟件。它使用并且擴展了Jav

6、aServletAPI,最初由CraigMcClanahan創(chuàng)建。在2000年5月,它被捐贈到ApacheFoundation。Struts框架展示了一個強有力的定制標簽庫,平鋪顯示,表單檢驗和I18N(國際化)。另外,Struts支持許多描述層,包括JSP,XML/XSLT使得Java程序員可以隨心所欲的使用對象編程思維來操縱數(shù)據(jù)庫,avaServerFaces(SF)和Velocity;還支持一些模型層,包括JavaBeans和EJB。下面是Struts的核心內(nèi)容:JSP(TagLib)>ActionForm>Action>Event&gt

7、;EJBAction>EJB>DAO>DatabaseJSP(TagLib)(forward)<Action<EventResponse<優(yōu)點:基于MVC模式,結構很好,基于JSP。不足:擴展性不太好,邏輯復雜的大型項目不適用,框架層次劃分不太清楚。lspring框架Spring框架是一個分層的Java/J2EE應用程序框架,基于ExpertOne-on-OneJ2EE設計和發(fā)行的代碼。Spring框架提供一種簡單的開發(fā)技術,用于自動化處理工程中大量的屬性文件和助理類。Spring是一個開源框架,由RodJoh

8、nson創(chuàng)建并且在他的著作J2EE設計開發(fā)編程指南里進行了描述。它是為了解決企業(yè)應用開發(fā)的復雜性而創(chuàng)建的。Spring使使用基本的JavaBeans來完成以前只可能由EJB完成的事情變得可能了。然而,Spring的用途不僅限于服務器端的開發(fā)。從簡單性、可測試性和松耦合的角度而言,任何Java應用都可以從Spring中受益。Spring框架包括的主要特色有:1強有力的基于JavaBeans的配置管理,使用Inversion-of-Control(loC)原則。2 個核心bean工廠,可用在任何環(huán)境,從applets到J2EE容器程序。3 通用的抽象層適合于數(shù)據(jù)庫事務管理,允許可插入的事務管理器,

9、并且不需要處理低層次的問題就可容易地劃分各事務的界限。4 個很有意義的異常處理的JDBC抽象層。5與Hibernate集成到一起,DAO實現(xiàn)支持以及事務策略。優(yōu)點:體現(xiàn)了2EE、容器、輕量級、控制反轉、面向切面的思想。不足:結構復雜,不易理解。lHibernate框架Hibernate是一個開放源代碼的對象關系映射(ORM)框架,它對JDBC進行了非常輕量級的對象封裝,它提供一個易用的框架來實現(xiàn)把一個面向?qū)ο蟮挠蚰P陀成涞揭粋鹘y(tǒng)的關系數(shù)據(jù)庫,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數(shù)據(jù)庫。它不僅負責從Java類到數(shù)據(jù)庫表格(以及來自Java數(shù)據(jù)類型的SQL數(shù)據(jù)類型)的映射,而且還

10、提供數(shù)據(jù)查詢和檢索能力,并能大大減少花在SQL和JDBC手工數(shù)據(jù)處理上的開發(fā)時間。最具革命意義的是,Hibernate可以在應用EJB的J2EE架構中取代CMP,完成數(shù)據(jù)持久化的重任。Hibernate的目標是減輕開發(fā)者的與大量普通的數(shù)據(jù)持續(xù)性相聯(lián)系的編程任務。Hibernate還能夠適應開發(fā)進程,無論它是剛開始設計還是來自一現(xiàn)成的數(shù)據(jù)庫。Hibernate可以自動生成SQL,使開發(fā)者擺脫了手工處理結果集和進行對象轉化的繁瑣任務,并能使應用程序移植到所有的SQL數(shù)據(jù)庫。它還能提供透明的持續(xù)性,對持續(xù)性類的唯一的要求的是實現(xiàn)一個無參數(shù)的構造器。優(yōu)點:主要應用在EJB層,可配置性強,靈活,簡化了數(shù)

11、據(jù)庫操作。不足:難以配置。4常見的軟件體系架構l三層體系架構在軟件體系架構設計中,分層式結構是最常見,也是最重要的一種結構。分層式結構一般分為三層,從下至上分別為:數(shù)據(jù)訪問層、業(yè)務邏輯層(又或成為領域?qū)樱?、表示層,如圖所示:圖2三層體系架構數(shù)據(jù)訪問層:有時候也稱為是持久層,其功能主要是負責數(shù)據(jù)庫的訪問。簡單的說法就是實現(xiàn)對數(shù)據(jù)表的Select,Insert,Update,Delete的操作。如果要加入ORM的元素,那么就會包括對象和數(shù)據(jù)表之間的mapping,以及對象實體的持久化。業(yè)務邏輯層(BusinessRules):是整個系統(tǒng)的核心,它與這個系統(tǒng)的業(yè)務(領域)有關。以STS系統(tǒng)為例,業(yè)務

12、邏輯層的相關設計,均和銷售跟蹤的邏輯相關。在結構上它封裝了數(shù)據(jù)訪問層的相關操作。該層主要由實現(xiàn)具體業(yè)務邏輯的類組成。表示層(WebUI):是系統(tǒng)的UI部分,負責使用者與整個系統(tǒng)的交互。在這一層中,理想的狀態(tài)是不應包括系統(tǒng)的業(yè)務邏輯。表示層中的邏輯代碼,僅與界面元素有關。在當前項目中,是利用ASP.NET來設計的,因此包含了許多Web控件和相關邏輯。l五層體系架構SaaS軟件體系架構也可以分為五層,從上而下分別為:用戶界面層(表現(xiàn)層)、業(yè)務邏輯層、通用層、應用框架層、遠程訪問(WebService)層、數(shù)據(jù)訪問層,如圖所示:圖3基于微軟的.NET架構設計用戶界面層(UI)用戶界面層是用戶直接操作

13、的界面。該層由界面外觀、表單控件、框架及其它部分構成。用戶界面層負責使用者與整個系統(tǒng)的交互。在這一層中,理想的狀態(tài)是不應包括系統(tǒng)的業(yè)務邏輯。表示層中的邏輯代碼,僅與界面元素有關。在當前項目中,是利用ASP.net來設計的,因此包含了許多Web控件和相關邏輯。2界面外觀包括skip(皮膚)、Images(圖片)、css(樣式表)2表單控件主要包括常用表單、用戶自定義控件。2框架主要包括MasterPage、FramePage。2其它主要包括JavaScript文件、Dll文件、Report報表、Schema建數(shù)據(jù)庫、Model開發(fā)模板。業(yè)務邏輯層(BusinessRules)是整個系統(tǒng)的核心,它

14、與這個系統(tǒng)的業(yè)務(領域)有關。以STS系統(tǒng)為例,業(yè)務邏輯層的相關設計,均和銷售跟蹤的邏輯相關。在結構上它封裝了數(shù)據(jù)訪問層的相關操作。該層主要由實現(xiàn)具體業(yè)務邏輯的類組成。2BLFactory業(yè)務邏輯工廠2IBL業(yè)務邏輯接口2BusinessRules業(yè)務邏輯實現(xiàn)通用層通用層貫穿整個項目的表示層和業(yè)務邏輯層。主要存放該項目中較為通用的常量定義和通用服務(Service),這里指的Service是當前項目業(yè)務邏輯上通用的方法,我們把它們寫在對應的靜態(tài)類中。以服務的形式提供。CommonLayer:存放通用的常量及方法。數(shù)據(jù)訪問層該層結構是最復雜的,主要由以下層組成:數(shù)據(jù)訪問工廠層(DALFactor

15、y),數(shù)據(jù)訪問接口層(IDAL),自定義查詢層(PersistenceFacade),臨時層(DataAccessLayer),數(shù)據(jù)持久層(PersistenceLayer)。面由下向上介紹:2PersistenceLayer層,這是框架設計的最底層(除應用框架層外)。它主要負責用ORM思想將物理數(shù)據(jù)庫對象化。簡單來說就是將數(shù)據(jù)庫表映射為實體類,將相應的字段映射為類的屬性。這樣一來物理數(shù)據(jù)庫對于開發(fā)者是完全透明的,應用ORM的思想我們徹底擺脫了物理數(shù)據(jù)庫。并且獨立于數(shù)據(jù)庫具體實現(xiàn)。2具體實現(xiàn)我們應用著名的開源項目Castle下的輕量級數(shù)據(jù)訪問組件ActiveRecorder實現(xiàn)。2Persis

16、tenceFacade層和IDAL,這里定義了項目中用到的所有查詢方法。與PersistenceLayer層定義的數(shù)據(jù)實體相對應。在這些字定義的查詢類中可以應用ActiverRecorder提供的三種查詢方法(ActiverRecorderBase提供的簡單接口,簡單查詢SimpleQuery,自定義查詢CustomerQuery)的任意組合。并且這里的每一個類都要實現(xiàn)IDAL接口層定義的相關接口。2DALFactory層,做為數(shù)據(jù)訪問的工廠,通過.Net的反射機制調(diào)用IDAL和PersistenceFacade組成的數(shù)據(jù)訪問組件中的相關操作。2DataAccessLayer臨時層。首先聲明這

17、層是完全沒有必要的。因為我們在項目中是可以不寫任何Sql語句的。所有的Sql都用Hql代替。設計這層的目的是為了允許項目組中的人員的技術過渡。此層可以通過Sql操作數(shù)據(jù)庫(不推薦)。架構穩(wěn)定后本層將不再提供。應用框架層(Framework)本層的目的是技術沉淀。將項目之間通用的東西移入應用框架層達到代碼重用的目的。本層以后可以黑盒化??梢园ㄍㄓ玫慕M件。2Framework:積累一些可以抽象出來的方法及控件2MSMQMessag:消息處理隊列的實現(xiàn)2Pager:通用翻頁類2Report:通用報表類2Controls:控件處理類2DataFormat:數(shù)據(jù)格式轉換類2WebUI:頁面處理類2Va

18、lidate:數(shù)據(jù)校驗2Object:對象之間的轉換及訪問5 分層式體系結構的好處1、開發(fā)人員可以只關注整個結構中的其中某一層;2、可以很容易的用新的實現(xiàn)來換原有層次的實現(xiàn);3、可以降低層與層之間的依賴;4、有利于標準化;5、利于各層邏輯的復用。概括來說,分層式設計可以達至如下目的:分散關注、松散耦合、邏輯復用、標準定義一個好的分層式結構,可以使得開發(fā)人員的分工更加明確。一旦定義好各層次之間的接口,負責不同邏輯設計的開發(fā)人員就可以分散關注,齊頭并進。例如UI人員只需考慮用戶界面的體驗與操作,領域的設計人員可以僅關注業(yè)務邏輯的設計,而數(shù)據(jù)庫設計人員也不必為繁瑣的用戶交互而頭疼了。每個開發(fā)人員的任

19、務得到了確認,開發(fā)進度就可以迅速的提高。松散耦合的好處是顯而易見的。如果一個系統(tǒng)沒有分層,那么各自的邏輯都緊緊糾纏在一起,彼此間相互依賴,誰都是不可替換的。一旦發(fā)生改變,則牽一發(fā)而動全身,對項目的影響極為嚴重。降低層與層間的依賴性,既可以良好地保證未來的可擴展,在復用性上也是優(yōu)勢明顯。每個功能模塊一旦定義好統(tǒng)一的接口,就可以被各個模塊所調(diào)用,而不用為相同的功能進行重復地開發(fā)。進行好的分層式結構設計,標準也是必不可少的。只有在一定程度的標準化基礎上,這個系統(tǒng)才是可擴展的,可替換的。而層與層之間的通信也必然保證了接口的標準化?!敖馃o足赤,人無完人”,分層式結構也不可避免具有一些缺陷:1、降低了系統(tǒng)

20、的性能。這是不言而喻的。如果不采用分層式結構,很多業(yè)務可以直接造訪數(shù)據(jù)庫,以此獲取相應的數(shù)據(jù),如今卻必須通過中間層來完成。2、有時會導致級聯(lián)的修改。這種修改尤其體現(xiàn)在自上而下的方向。如果在表示層中需要增加一個功能,為保證其設計符合分層式結構,可能需要在相應的業(yè)務邏輯層和數(shù)據(jù)訪問層中都增加相應的代碼。6 軟件架構視圖PhilippeKruchten在其著作Rational統(tǒng)一過程引論中寫道:一個架構視圖是對于從某一視角或某一點上看到的系統(tǒng)所做的簡化描述,描述中涵蓋了系統(tǒng)的某一特定方面,而省略了于此方面無關的實體。也就是說,架構要涵蓋的內(nèi)容和決策太多了,超過了人腦“一蹴而就”的能力范圍,因此采用“分而治之”的辦法從不同視角分別設計;同時,也為軟件架構的理解、交流和歸檔提供了方便。圖4PhilippeKruchten提出的4+1視圖方法該方法的不同架構視圖承載不同的架構設計決策,支持不同的目標和用途:l邏輯視圖:當采用面向?qū)ο蟮脑O計方法時,邏輯視圖即對象模型。l開發(fā)視圖:

溫馨提示

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

評論

0/150

提交評論