關於三層架構的一些想法
目前開發人員對系統開發的一個共識是使用三層架構,分為表示層,業務層,和持久層。而這三層之間的依賴關係如何?比較常見的一種看法是
表示層 --> 業務層 --> 持久層
這表明了層與層之間的呼叫關係,表示層通過呼叫業務層來完成任務,而業務層則呼叫持久層。從另一個角度來看,一種依賴關係是
表示層 --> 領域模型(Domain Model)
即表示層和持久層都應該理解(recognize)領域模型。而領域模型則是業務層的一部分。業務層正是系統的價值所在。雖說表示和持久也很重要,在某些系統中可以說是很關鍵,但是它們的最終目的都是為業務服務,所以業務層應該是系統的核心。
基於以上的認識,在系統設計的時應首先分析需求得到領域模型,找出系統中的實體、物件(靜態的一面),並明確大致的業務流程(動態的一面)。 而另兩層應盡最大努力為業務層服務,且儘量減少業務層受另兩層的限制。
各層的職責:
表示層:負責顯示資訊,及從系統外部得到輸入。表示層的設計決定系統介面的可用性,及資訊輸入和展示的可靠性。表示層只知道如何展示資訊,及收集使用者輸入,並不知道該如何對這些輸入進行處理來完成業務。
業務層:完成業務邏輯。業務層設計決定客戶價值是否能夠得到實現。這是系統的關鍵。外在的表現是功能性。業務層設計和實現的失誤表現在使用者端即功能缺失,功能不可靠等。如果需要對業務層的業務規則進行解耦,則可以使用規則引擎如Drools,把業務規則分離出來。但分離後的業務規則仍屬於業務層。業務層知道如何對使用者輸入進行處理,能夠應用業務規則完成使用者所需的業務,但它不知道資料如何讀取和儲存。
持久層:負責使用者資訊的持久化。持久層的失誤表現在外即資料處理(儲存,展示等)不可靠。持久層完全不知道業務,只專注於資料儲存和讀取。所謂持久化並不一定是指資料庫,任何方式的持久化(通過檔案,網路的持久化等)都應由持久層完成。
各層的設計都會直接影響系統效能。
三層的體積大小和複雜度在不同的系統中可能會有很大的不同。比如說GOOGLE的搜尋引擎,它的介面很簡單,可以想像表示層是比較容易實現的,而它的業務層,關係到處理關鍵字,分析搜尋結果,決定排名等,而持久層則要負責處理超大量的資料。業務層和持久層則相當複雜。而有的系統持久層會很小,比如防毒軟體,媒體播放軟體等。業務層小而另兩層大的例子暫時還沒有想到:)
表示層 --> 業務層 --> 持久層
這表明了層與層之間的呼叫關係,表示層通過呼叫業務層來完成任務,而業務層則呼叫持久層。從另一個角度來看,一種依賴關係是
表示層 --> 領域模型(Domain Model)
即表示層和持久層都應該理解(recognize)領域模型。而領域模型則是業務層的一部分。業務層正是系統的價值所在。雖說表示和持久也很重要,在某些系統中可以說是很關鍵,但是它們的最終目的都是為業務服務,所以業務層應該是系統的核心。
基於以上的認識,在系統設計的時應首先分析需求得到領域模型,找出系統中的實體、物件(靜態的一面),並明確大致的業務流程(動態的一面)。 而另兩層應盡最大努力為業務層服務,且儘量減少業務層受另兩層的限制。
各層的職責:
表示層:負責顯示資訊,及從系統外部得到輸入。表示層的設計決定系統介面的可用性,及資訊輸入和展示的可靠性。表示層只知道如何展示資訊,及收集使用者輸入,並不知道該如何對這些輸入進行處理來完成業務。
業務層:完成業務邏輯。業務層設計決定客戶價值是否能夠得到實現。這是系統的關鍵。外在的表現是功能性。業務層設計和實現的失誤表現在使用者端即功能缺失,功能不可靠等。如果需要對業務層的業務規則進行解耦,則可以使用規則引擎如Drools,把業務規則分離出來。但分離後的業務規則仍屬於業務層。業務層知道如何對使用者輸入進行處理,能夠應用業務規則完成使用者所需的業務,但它不知道資料如何讀取和儲存。
持久層:負責使用者資訊的持久化。持久層的失誤表現在外即資料處理(儲存,展示等)不可靠。持久層完全不知道業務,只專注於資料儲存和讀取。所謂持久化並不一定是指資料庫,任何方式的持久化(通過檔案,網路的持久化等)都應由持久層完成。
各層的設計都會直接影響系統效能。
三層的體積大小和複雜度在不同的系統中可能會有很大的不同。比如說GOOGLE的搜尋引擎,它的介面很簡單,可以想像表示層是比較容易實現的,而它的業務層,關係到處理關鍵字,分析搜尋結果,決定排名等,而持久層則要負責處理超大量的資料。業務層和持久層則相當複雜。而有的系統持久層會很小,比如防毒軟體,媒體播放軟體等。業務層小而另兩層大的例子暫時還沒有想到:)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7656893/viewspace-609786/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 關於多層架構一些思考架構
- 關於三層架構中各層次的關係與實現模型 (轉)架構模型
- 關於Python 3的一些想法Python
- 關於新書出版的一些想法新書
- 關於 Spring-WebFlux 的一些想法SpringWebUX
- 關於讀書分享會的一些想法
- 關於演算法的一些想法 (轉)演算法
- 三層架構及分層架構
- 三層架構理解架構
- 基於.NET的LINQ to SQL 三層架構開發之架構建立SQL架構
- 【筆記】關於大資料的一些想法筆記大資料
- MVC 與三層架構MVC架構
- Java三層架構sshJava架構
- .Net三層架構 (轉)架構
- spring框架中三層架構相關的註解Spring框架架構
- Banq, 關於您的Chain of Responsibility模式的一些想法AI模式
- 三層架構與養豬架構
- DB2 pureScale的三層架構DB2架構
- 關於資料許可權設計的一些想法
- 關於CPU、指令集、架構、晶片的一些科普架構晶片
- 關於cpu體系架構的一些有趣的故事分享架構
- 基於三層架構的增刪改查Get知識點架構
- 三層架構是什麼意思 ?架構
- MVC與三層架構區別MVC架構
- 說說三層架構和MVC架構MVC
- ASp.net 剖析三層架構ASP.NET架構
- net三層架構與MVC的區別架構MVC
- 十問 TiDB :關於架構設計的一些思考TiDB架構
- 關於Java的一點想法Java
- 關於美食網站的想法!網站
- 記錄一個前端架構的想法前端架構
- 基於分層的token架構設計架構
- MVC專案實踐,在三層架構下實現SportsStore,從類圖看三層架構MVC架構
- 關於軟體架構和業務架構的思考架構
- Asp.net 2.0三層架構的構建與理解ASP.NET架構
- 關於MVP分層架構在專案中的實際運用MVP架構
- Java Web(八) MVC和三層架構JavaWebMVC架構
- 三層架構--理論與實踐架構