三層架構和其優(yōu)點_第1頁
三層架構和其優(yōu)點_第2頁
三層架構和其優(yōu)點_第3頁
已閱讀5頁,還剩2頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、三層架構及其優(yōu)點(2009-04-01 22:54:37)標簽:三層架構是:一:界面層界面層提供給用戶一個視覺上的界面,通過界面層,用戶輸入數據、獲取數據。界面層同時也提供一 定的安全性,確保用戶不用看到不必要的機密信息。二:邏輯層邏輯層是界面層和數據層的橋梁,它響應界面層的用戶請求,執(zhí)行任務并從數據層抓取數據,并將必 要的數據傳送給界面層。三:數據層數據層定義、維護數據的完整性、安全性,它響應邏輯層的請求,訪問數據。這一層通常由大型的數 據庫服務器實現,如 Oracle 、Sybase、MS SQl Server 等。從開發(fā)角度和應用角度來看,三層架構比雙層或單層結構都有更大的優(yōu)勢。三層結構

2、適合群體開發(fā), 每人可以有不同的分工,協同工作使效率倍增。開發(fā)雙層或單層應用時,每個開發(fā)人員都應對系統(tǒng)有 較深的理解,能力要求很高,開發(fā)三層應用時,則可以結合多方面的人才,只需少數人對系統(tǒng)全面了 解,從一定程度工降低了開發(fā)的難度。三層架構屬于瘦客戶的模式,用戶端只需一個較小的硬盤、較小的內存、較慢的 CPU 就可以獲得不 錯的性能。相比之下,單層或胖客戶對面器的要求太高。三層架構的另一個優(yōu)點在于可以更好的支持分布式計算環(huán)境。 邏輯層的應用程序可以有多個機器上運 行,充分利用網絡的計算功能。分布式計算的潛力巨大,遠比升級CPU 有效。三層架構的最大優(yōu)點是它的安全性。用戶端只能通過邏輯層來訪問數據

3、層,減少了入口點,把很多危 險的系統(tǒng)功能都屏蔽了。另外三層架構還可以支持如下功能:Remote Access遠程訪問資料),例如可透過In ternet存取遠程數據庫;High Performanee(提升運算效率)解決集中式運算(Centralize)及主從式架構(Client-Server)中,數據庫主機的運算負擔,降低數據庫主機的Connection Load,并可藉由增加App Server處理眾多的數據處理要求,這一點跟前面講到的分布式計算提高運算能力是一個道理;Client端發(fā)岀Request工作要求)后,便可離線,交由App Server和DataBase Server共同把工作

4、完成,減少Client端的等待時間; 這個功能我覺得應用場合不是很多,自己感受也不是很深刻,從理論上是成立的。-fadeless摘自網絡。三層架構三層架構(3-tierapplication)通常意義上的三層架構就是將整個業(yè)務應用劃分為:表現層(UI )、業(yè)務邏輯層(BLL)、數據訪問層(DAL)。區(qū)分層次的目的即為了“高內聚,低耦合”的思想。目錄展開概念簡介1、表現層(UI ):通俗講就是展現給用戶的界面,即用戶在使用一個系統(tǒng)的時候 他的所見所得。2、業(yè)務邏輯層(BLL ):針對具體問題的操作,也可以說是對數據層的操作,對 數據業(yè)務邏輯處理。3、數據訪問層(DAL ):該層所做事務直接操作數

5、據庫,針對數據的增添、刪除、修改、更新、查找等。概述在軟件體系架構設計中,分層式結構是最常見,也是最重要的一種結構。推薦的 分層式結構一般分為三層,從下至上分別為:數據訪問層、業(yè)務邏輯層(又或成為領 域層)、表示層。三層結構原理:3個層次中,系統(tǒng)主要功能和業(yè)務邏輯都在業(yè)務邏輯層進行處理。所謂三層體系結構,是在與數據庫之間加入了一個中間層”,也叫組件層。這里所說的三層體系,不是指物理上的三層,不是簡單地放置三臺機器就是三層體系結構,也不僅僅有 B/S應用才是三層體系結構,三層是指邏輯上的三層,即使這三個層放置 到一臺機器上。三層體系的將業(yè)務規(guī)則、數據訪問、合法性校驗等工作放到了中間層進行處理。

6、通常情況下,客戶端不直接與數據庫進行交互,而是通過COM/DCOM 通訊與中間層建立連接,再經由中間層與數據庫進行交互。表示層位于最外層(最上層),離用戶最近。用于顯示數據和接收用戶輸入的數據,為 用戶提供一種交互式操作的界面。業(yè)務邏輯層業(yè)務邏輯層(Business Logic Layer)無疑是系統(tǒng)架構中體現核心價值的部分。 它的關注點主要集中在業(yè)務規(guī)則的制定、業(yè)務流程的實現等與業(yè)務需求有關的系統(tǒng)設 計,也即是說它是與系統(tǒng)所應對的領域(Domain )邏輯有關,很多時候,也將業(yè)務邏輯層稱為領域層。 例如 Martin Fowler 在Patterns of Enterprise Applic

7、ation Architecture一書中,將整個架構分為三個主要的層:表示層、領域層和數據源層。作為的先驅 EricEvans,對業(yè)務邏輯層作了更細致地劃分,細分為應用層與領域層,通過分層進一步將 領域邏輯與領域邏輯的解決方案分離。業(yè)務邏輯層在體系架構中的位置很關鍵,它處于數據訪問層與表示層中間,起到 了數據交換中承上啟下的作用。由于層是一種弱耦合結構,層與層之間的依賴是向下 的,底層對于上層而言是 無知”的,改變上層的設計對于其調用的底層而言沒有任何 影響。如果在分層設計時,遵循了面向接口設計的思想,那么這種向下的依賴也應該 是一種弱依賴關系。因而在不改變接口定義的前提下,理想的分層式架構

8、,應該是一 個支持可抽取、可替換的抽屜”式架構。正因為如此,業(yè)務邏輯層的設計對于一個支持可擴展的架構尤為關鍵,因為它扮演了兩個不同的角色。對于數據訪問層而言,它 是調用者;對于表示層而言,它卻是被調用者。依賴與被依賴的關系都糾結在業(yè)務邏 輯層上,如何實現依賴關系的解耦,則是除了實現業(yè)務邏輯之外留給的任務。數據層數據訪問層:有時候也稱為是持久層,其功能主要是負責數據庫的訪問,可以 訪問、二進制文件、或是 XML文檔。簡單的說法就是實現對數據表的Select, Insert, Update, Delete的操作。如果要加入ORM的元素,那么就會包括對象和數據表之間的mapping,以及對象實體的持

9、久化。優(yōu)點1、開發(fā)人員可以只關注整個結構中的其中某一層;2、可以很容易的用新的實現來替換原有層次的實現;3、可以降低層與層之間的依賴;4、有利于標準化;5、利于各層邏輯的復用。缺點1、降低了系統(tǒng)的性能。這是不言而喻的。如果不采用分層式結構,很多業(yè)務可以 直接造訪數據庫,以此獲取相應的數據,如今卻必須通過中間層來完成。2、有時會導致級聯的修改。這種修改尤其體現在自上而下的方向。如果在表示層 中需要增加一個功能,為保證其設計符合分層式結構,可能需要在相應的業(yè)務邏輯層 和數據訪問層中都增加相應的代碼。規(guī)則三層結構的程序不是說把項目分成DAL, BLL, WebUI三個模塊就叫三層了,下面幾個問題在你

10、的項目里面:1. UILayer里面只有少量(或者沒有)的SQL語句或者存儲過程調用,并且這些語句保證不會修改數據?2. 如果把UILayer拿掉,你的項目還能在Interface/API的層次上提供所有功能嗎?3. 你的DAL可以移植到其他類似環(huán)境的項目嗎?4. 三個模塊,可以分別運行于不同的服務器嗎?如果不是所有答案都為YES,那么你的項目還不能算是嚴格意義上的三層程序.三層程序有一些需要約定遵守的規(guī)則:1. 最關鍵的,UI層只能作為一個外殼 ,不能包含任何BizLogic的處理過程2. 設計時應該從BLL出發(fā),而不是 UI出發(fā).BLL層在 API上應該實現所有BizLogic, 以的方式

11、3. 不管數據層是一個簡單的SqlHelper也好,還是帶有 Mapping過的Classes也好,應該在一定的抽象程度上做到系統(tǒng)無關4. 不管使用 COM+(Enterprise Service),還是 Remoting,還是 WebService 之類的遠程對象技術,不管部署的時候是不是真的分別部署到不同的服務器上,最起碼在設計的時候要做這樣的考慮 ,更遠的,還得考慮多臺服務器通過負載均衡作集群所以考慮一個項目是不是應該應用三層/多層設計時,先得考慮下是不是真的需要?實際上大部分程序就開個WebApplication 就足夠了 ,完全沒必要作的這么復雜.而,是用于解決真正復雜的項目需求的。

12、與MVC的區(qū)別MVC (模型 Model-視圖View-控制器 Controller )是一種設計模式,我們可以用它 來創(chuàng)建在域對象和UI表示層對象之間的區(qū)分。同樣是架構級別的,相同的地方在于他們都有一個表現層,但是他們不同的地方 在于其他的兩個層。在三層架構中沒有定義Controller的概念。這是我認為最不同的地方。而MVC也沒有把業(yè)務的邏輯訪問看成兩個層,這是采用三層架構或MVC搭建程序最主要的區(qū)別。當然了。在三層中也提到了Model,但是三層架構中Model的概念與 MVC中Model的概念是不一樣的,三層”中典型的 Model層是以實體類構成的,而MVC里,則是由業(yè)務邏輯與訪問數據組

13、成的。三層架構有表示層,業(yè)務邏輯層,數據處理層就像餐廳,客官看菜單點菜(表示層),服務員處理點的菜(業(yè)務邏輯層),再將點的菜單傳給廚師(數 據處理層),廚師炒好后給服務員傳給客官如是不用三層,全部由廚師來處理是不是太那個了,如果 是小飯店倒是可以由廚師處理優(yōu)點:1。 擴展性強,不同層負責不同的層面,如PetShop可經過簡單的配置實現 Sqlserver和oracle之間的 轉換,當然寫好了也可以實現 B/S與C/S之間的轉換。2。利于實現人員分工; 缺點:增加工作量、代碼編寫量三層架構學習筆記作者:厚樸教育來源:本站原創(chuàng)點擊數:368更新時間:2010-7-26三層架構如下圖所示:三層架構分

14、為:表現層(User In terface,簡稱UI)、業(yè)務邏輯層(Bus in ess Logical Layer,簡稱 BLL )、數據訪問層(Data Access Layer,簡稱 DAL )。三層架構的優(yōu)點是能讓項目更容易修改、更有擴展性、更有復用性、可 遷移、剛開始是為C/S模式而開展的,后來慢慢擴展到 B/S模式。三層架構 并不能提高項目的運行效率,相反由于表現層只能訪問邏輯層,再邏輯層訪 問數據訪問層,因此犧牲了效率。但這一缺陷比起它的優(yōu)勢,在現在硬件品 質高速發(fā)展的時代幾乎可以忽略不計。三層架構能提高數據庫訪問效率和安全性,原因有三:1、數據層不包含任何代碼,只有數據庫,還有

15、相關的存儲歷程。2、數據層還包含所有公共數據造訪代碼。3、所有數據讀取都放在數據層。在軟件體系架構設計中, 分層式結構是最常見, 也是最重要的一種結構。數據訪問層 (DAL) :也可稱為持久層, 其功能主要是負責數據庫的訪問。在PetShop中處理的數據庫對象分為兩類:一是數據實體 (Model),對應數 據庫中相應的數據表,他們沒有行為,僅用于表現對象的數據;二是數據的 基本業(yè)務操作,即完成一般的數據操縱,這部分采用了抽象工廠模式,即保 證了系統(tǒng)的 可擴展性,同時也保證了數據庫的可移植性。業(yè)務邏輯層 (BLL) :是整個系統(tǒng)的核心,它與這個系統(tǒng)的業(yè)務(領域)有關。以PetShop為例,業(yè)務邏

16、輯層的相關設計,均和網上寵物店特有的邏 輯相關, 例如查詢寵物,下訂單,添加寵物到購物車等等。也許是業(yè)務邏 輯比較簡單地緣故,在業(yè)務邏輯層的設計中,PetShop并沒有秉承在數據訪問層中面向接口設計的思想。除了完成對插入訂單策略的抽象(IBLLStrategy)外,整個業(yè)務邏輯層僅 以BLL模塊實現,沒有為領域對象定義抽象的接口。因而PetShop的表示層與業(yè)務邏輯層就存在強依賴關系, 如果業(yè)務邏輯層中的需求發(fā)生變更, 就 必然會影響表示層的實現。表示層:是系統(tǒng)的 UI 部分,負責使用者與整個系統(tǒng)的交互。在這一層 中,理想的狀態(tài)是不應包括系統(tǒng)的業(yè)務邏輯。表示層中的邏輯代碼,僅與界 面元素有關。在 PetShop4.0中,大量采用了 ASP.Net 2.0的特性,女口 Mast er Page、Wizard 等控件, Membership Provider 和控件, Profile Provider,C acheDependency等。在改進后的版本中,絕大部分沿用原有代碼,在實現原 有功能外僅增加對歷史訂單的查詢功能,以后可以 考慮是否用 AJAX 。以上是我對Petshop做得學習筆記,最近在看大話設計模式,對 Pe tshop 中講的所謂的簡單工廠模式、工廠模式、裝飾模式等一堆的設計模式 有了一定了解,大話設

溫馨提示

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

評論

0/150

提交評論