前端工程師-企業(yè)級系統(tǒng)架構(gòu)的理解_第1頁
前端工程師-企業(yè)級系統(tǒng)架構(gòu)的理解_第2頁
前端工程師-企業(yè)級系統(tǒng)架構(gòu)的理解_第3頁
前端工程師-企業(yè)級系統(tǒng)架構(gòu)的理解_第4頁
前端工程師-企業(yè)級系統(tǒng)架構(gòu)的理解_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、.星期八職場閱歷網(wǎng)xingqiba【現(xiàn)成閱歷助他快速完成任務(wù)】:.;企業(yè)級系統(tǒng)架構(gòu)的了解在我們剛開場學(xué)習(xí)架構(gòu)的時(shí)候,首先會想到分層的概念,分層架構(gòu)比較經(jīng)典的是三層架構(gòu),那么,什么是三層架構(gòu)呢?它包括表現(xiàn)層,業(yè)務(wù)層,數(shù)據(jù)訪問層;而對于一個新手來說,從籠統(tǒng)意義上的三層架構(gòu),邏輯上就劃分為三個層。 AD: 這個是最根本的三層架構(gòu)方式。表現(xiàn)層充任系統(tǒng)的界面呈現(xiàn)以及UI邏輯的角色,也就是說,UI(用戶界面)屬于表現(xiàn)層;舉一個對于 WebForm來說,人們喜歡把對于UI的控制邏輯(效力器控件的讀取、設(shè)置、事件等等)寫在頁面的后置隱藏代碼中,并且依賴業(yè)務(wù)邏輯層。當(dāng)然,效力器控件支持?jǐn)?shù)據(jù)綁定的功能,可以經(jīng)過數(shù)

2、據(jù)源進(jìn)展綁定控件。這樣就可以節(jié)省在后置隱藏中的代碼。因此,我們就可以把表現(xiàn)層分為UI用戶界面以及UI邏輯:UI用戶界面的職責(zé)只是作為數(shù)據(jù)輸入和輸出后的展現(xiàn)任務(wù)。UI邏輯的職責(zé)是擔(dān)任業(yè)務(wù)邏輯層以及UI用戶界面之間的數(shù)據(jù)交互,并且盡能夠地讓UI邏輯不依賴于UI技術(shù)。其中UI用戶界面的實(shí)現(xiàn)方式有很多,包括ASP.NET,WinForm,WPF,Silverlight,挪動Web,智能設(shè)備等等。將表現(xiàn)層中UI頁面和UI邏輯分別的戰(zhàn)略中,當(dāng)前運(yùn)用最多的兩種方式是MVC方式和MVP方式。MVC方式,即模型-視圖-控制器方式,經(jīng)過視圖觸發(fā)并執(zhí)行某個操作,調(diào)用控制器,經(jīng)過控制器去操作業(yè)務(wù)層,最終前往模型,在視

3、圖中進(jìn)展展現(xiàn)。這里的模型可以是一個領(lǐng)域模型(DM),也可以是一個數(shù)據(jù)遷移對象(DTO)。MVP方式,即模型-視圖-展現(xiàn)器方式,和MVC方式有點(diǎn)像,不同的是MVP中視圖和模型是被完全分別出來的,視圖中定義一個接口,而展現(xiàn)器經(jīng)過調(diào)用該接口的方法以控制視圖。因此,視圖和模型是松散的,展現(xiàn)器也充任了一個控制器的角色,同時(shí)它也不依賴于UI技術(shù)。另外再引見一種方式PM(Preentation Model),它可以說是MVP的變體,在PM中,視圖不定義接口,這里的模型只是表示視圖形狀的類,視圖中的元素被直接綁定到模型屬性上。例如在WPF中,WPF就先天的具有數(shù)據(jù)雙向綁定機(jī)制以及事件通知屬性機(jī)制。所以它特別適

4、用于WPF,Sliverlight等等。在開場業(yè)務(wù)層之前,不得不說一個前提,在一個小型工程中,直接讓表現(xiàn)層調(diào)用業(yè)務(wù)層,足以處理一切問題。但是,當(dāng)工程大到運(yùn)用多種表現(xiàn)方式,如運(yùn)用了各種UI技術(shù),ASP.NET,WPF,挪動設(shè)備等等,就要思索在他的表現(xiàn)層和業(yè)務(wù)層之間添加一個層,以致于讓表現(xiàn)層和業(yè)務(wù)層解耦,由于業(yè)務(wù)層作為一個業(yè)務(wù)中間件的平臺,最好不要暴露于表現(xiàn)層中,這個層就是傳說中的效力層。架構(gòu)圖又演化為:效力層實(shí)踐上并不執(zhí)行任何詳細(xì)的任務(wù),其功能在于組織各個業(yè)務(wù)對象,效力層將業(yè)務(wù)層一切的細(xì)節(jié)對表現(xiàn)層都隱藏起來,效力器將組織業(yè)務(wù)邏輯層中的組件,并且經(jīng)過數(shù)據(jù)遷移對象(DTO)與表現(xiàn)層交互,因此就產(chǎn)生一

5、個DTO模型。為了實(shí)現(xiàn)效力的可重用性,需求運(yùn)用效力接口,表現(xiàn)層經(jīng)過規(guī)定的接口訪問功能。效力的實(shí)現(xiàn)承繼效力接口,而效力的實(shí)現(xiàn)專注于業(yè)務(wù)層的調(diào)用。對于效力層,常用的方法包括Web效力、.NET Remoting、Rest以及WCF技術(shù)。本人比較建議運(yùn)用WCF作為效力,由于可以方便地經(jīng)過配置到達(dá)遠(yuǎn)程調(diào)用效力的目的。效力層消除了兩個表現(xiàn)層和業(yè)務(wù)層之間的耦合,效力層可以實(shí)現(xiàn)一個遠(yuǎn)程接口,到達(dá)多UI技術(shù)甚至多平臺上的通訊。當(dāng)然添加效力層也有缺陷,假設(shè)運(yùn)用WCF效力,會添加系統(tǒng)的調(diào)用開銷,進(jìn)而影響性能。業(yè)務(wù)層中包含系統(tǒng)所需求業(yè)務(wù)過程上的實(shí)現(xiàn),并與下層的數(shù)據(jù)訪問層交互。我們通常也叫做業(yè)務(wù)層叫做業(yè)務(wù)邏輯層,但我

6、以為業(yè)務(wù)邏輯層是屬于業(yè)務(wù)層的一方面,業(yè)務(wù)邏輯更專注于業(yè)務(wù)上邏輯算法的實(shí)現(xiàn)。由于業(yè)務(wù)層還可以包括其他的方面。業(yè)務(wù)層必需包括對業(yè)務(wù)虛體盡心建模的對象模型,表達(dá)了客戶的一切戰(zhàn)略和需求的業(yè)務(wù)規(guī)那么,因此就產(chǎn)生了領(lǐng)域模型。(PS:假設(shè)這里他不運(yùn)用領(lǐng)域模型,那么需求采用業(yè)務(wù)規(guī)那么層進(jìn)展業(yè)務(wù)功能上的業(yè)務(wù)規(guī)那么的驗(yàn)證和控制)領(lǐng)域模型包括對實(shí)體的屬性定義,方法定義以及實(shí)體與實(shí)體之間的關(guān)系。從這個角度上看,UML建模至關(guān)重要,經(jīng)過對UML動態(tài)圖和靜態(tài)圖的描畫,可以映射到領(lǐng)域模型中。從效力層剛剛講到了DTO模型,這里需求一個機(jī)制將DTO轉(zhuǎn)化為領(lǐng)域模型,所以產(chǎn)生了DTO映射層(DTOMapper)。另外業(yè)務(wù)層還包括中

7、心中間件技術(shù),包括第三方組件,以及任務(wù)流引擎等等。業(yè)務(wù)層需求思索到一些與數(shù)據(jù)訪問層交互的設(shè)計(jì)方式,方式中包括事物腳本方式、表模塊方式、活動記錄方式、領(lǐng)域模型方式。事物腳本方式是經(jīng)過方法來執(zhí)行業(yè)務(wù)流程,它是一個過程式模型,事物腳本的每個方法都有一個特定的事物腳本,它偏重于業(yè)務(wù)上一系列流程上的順序操作,它實(shí)現(xiàn)起來很簡單,但是它有個致命的缺陷就是它會呵斥很多反復(fù)的代碼。表模塊方式比起事物腳本方式,具有一定的構(gòu)造,它的思想也很簡單,每個數(shù)據(jù)表都定義一個業(yè)務(wù)組件(實(shí)體類,實(shí)體操作類),在.NET中更多的運(yùn)用DataSet作為表模型的數(shù)據(jù)交互。但是它也有一個缺陷就是它是從數(shù)據(jù)庫驅(qū)動它不適宜于大量的數(shù)據(jù)表以

8、及數(shù)據(jù)表之間的復(fù)雜關(guān)系?;顒佑涗浄绞街械膶ο笾?,可以包含數(shù)據(jù)和方法。它接近于數(shù)據(jù)表的構(gòu)造,它的對象中執(zhí)行方法中可以包含CRUD操作,驗(yàn)證算法,以及其他的計(jì)算功能。普通來說,領(lǐng)域模型不是太復(fù)雜,活動記錄方式是個好選擇。當(dāng)然他也存在問題,同樣地,它對于復(fù)雜的業(yè)務(wù)上,維護(hù)的本錢也很高,并且假設(shè)需求變卦導(dǎo)致數(shù)據(jù)庫修正,就需求調(diào)整記錄對象模型中的相關(guān)代碼。經(jīng)典運(yùn)用:LINQ-TO-SQL以及Castle ActiveRecord。領(lǐng)域模型方式是從領(lǐng)域驅(qū)動設(shè)計(jì)中衍生來的,它是以業(yè)務(wù)為中心的設(shè)計(jì)方式。它對于復(fù)雜的業(yè)務(wù)邏輯,相當(dāng)適用。前三種方式運(yùn)用的是以數(shù)據(jù)驅(qū)動方式,數(shù)據(jù)驅(qū)動方式特點(diǎn)簡單,但是當(dāng)系統(tǒng)到了一定的

9、規(guī)模后,就會到難以維護(hù)的程度。數(shù)據(jù)訪問層的目的很明確,主要作為提供數(shù)據(jù)耐久化的功能,包括數(shù)據(jù)的讀取和寫入,另外還必需包括事務(wù)處置,并發(fā)控制等等。操作數(shù)據(jù)庫的方法可以有兩種方式,ORM方式,ADO.NET方式。ORM可以采用一些第三方的ORM框架來實(shí)現(xiàn),ADO.NET采用ASP.NET自帶的數(shù)據(jù)庫操作來實(shí)現(xiàn)。不同的數(shù)據(jù)庫具有不同的耐久化實(shí)現(xiàn),因此這里添加一個存儲倉庫接口層,來順應(yīng)不同的數(shù)據(jù)庫實(shí)現(xiàn),這里他可以運(yùn)用IOC依賴注入方式進(jìn)展數(shù)據(jù)庫選型,可以利用Unity、Spring.NET、Castle的IOC容器等等。最后各個層中都可以依賴于公共根底設(shè)備層。公共根底設(shè)備層可以包括Common通用模塊,Logging日志模塊,Exception異常模塊,Configuration配置模塊,DI依賴注入模塊,單元測試模塊以及第三方組件(例如NHibernate、Sprint.NET

溫馨提示

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

最新文檔

評論

0/150

提交評論