2010-09-26 21:50:49| 分類: 知識 | 標籤: |舉報 |字號大中小 訂閱 數據庫
三層架構(3-tier application) 一般意義上的三層架構就是將整個業務應用劃分爲:表現層(UI)、業務邏輯層(BLL)、數據訪問層(DAL)。區分層次的目的即爲了「高內聚,低耦合"的思想。
1、表現層(UI):通俗講就是展示給用戶的界面,即用戶在使用一個系統的時候他的所見所得。
2、業務邏輯層(BLL):針對具體問題的操做,也能夠說是對數據層的操做,對數據業務邏輯處理。
3、數據訪問層(DAL):該層所作事務直接操做數據庫,針對數據的增添、刪除、修改、更新、查找等。
注:(內聚:一個模塊內各個元素彼此結合的緊密程度;耦合:一個軟件結構內不一樣模塊之間互連程度的度量)安全
優缺點
優勢:
一、開發人員能夠只關注整個結構中的其中某一層;
二、能夠很容易的用新的實現來替換原有層次的實現;
三、能夠下降層與層之間的依賴;
四、有利於標準化;
五、利於各層邏輯的複用。
六、擴展性強。不一樣層負責不一樣的層面,如PetShop可通過簡單的配置實現Sqlserver和oracle之間的轉換,固然寫好了也能夠實現B/S與C/S之間的轉換
七、安全性高。用戶端只能經過邏輯層來訪問數據層,減小了入口點,把不少危險的系統功能都屏蔽了。
八、項目結構更清楚,分工更明確,有利於後期的維護和升級
缺點:
一、下降了系統的性能。這是不言而喻的。若是不採用分層式結構,不少業務能夠直接造訪數據庫,以此獲取相應的數據,現在卻必須經過中間層來完成。
二、有時會致使級聯的修改。這種修改尤爲體如今自上而下的方向。若是在表示層中須要增長一個功能,爲保證其設計符合分層式結構,可能須要在相應的業務邏輯層和數據訪問層中都增長相應的代碼
三、增長了代碼量,增長了工做量服務器
三層架構是:網絡
一:界面層
界面層提供給用戶一個視覺上的界面,經過界面層,用戶輸入數據、獲取數據。界面層同時也提供必定的安全性,確保用戶不用看到沒必要要的機密信息。架構
二:邏輯層oracle
邏輯層是界面層和數據層的橋樑,它響應界面層的用戶請求,執行任務並從數據層抓取數據,並將必要的數據傳送給界面層。app
三:數據層
數據層定義、維護數據的完整性、安全性,它響應邏輯層的請求,訪問數據。這一層一般由大型的數據庫服務器實現,如Oracle 、Sybase、MS SQl Server等。數據庫設計
------分佈式
從開發角度和應用角度來看,三層架構比雙層或單層結構都有更大的優點。三層結構適合羣體開發,每人能夠有不一樣的分工,協同工做使效率倍增。開發雙層或單層應用時,每一個開發人員都應對系統有較深的理解,能力要求很高,開發三層應用時,則能夠結合多方面的人才,只需少數人對系統全面瞭解,從必定程度工下降了開發的難度。
三層架構屬於瘦客戶的模式,用戶端只需一個較小的硬盤、較小的內存、較慢的CPU就能夠得到不錯的性能。相比之下,單層或胖客戶對面器的要求過高。
三層架構的另外一個優勢在於能夠更好的支持分佈式計算環境。邏輯層的應用程序能夠有多個機器上運行,充分利用網絡的計算功能。分佈式計算的潛力巨大,遠比升級CPU有效。
三層架構的最大優勢是它的安全性。用戶端只能經過邏輯層來訪問數據層,減小了入口點,把不少危險的系統功能都屏蔽了。
另外三層架構還能夠支持以下功能:Remote Access(遠程訪問資料),例如可透過Internet存取遠程數據庫;High Performance(提高運算效率)解決集中式運算(Centralize)及主從式架構(Client-Server)中,數據庫主機的運算負擔,下降數據庫主機的Connection Load,並可藉由增長App Server處理衆多的數據處理要求,這一點跟前面講到的分佈式計算提升運算能力是一個道理;Client端發出Request(工做要求)後,即可離線,交由App Server和DataBase Server共同把工做完成,減小Client端的等待時間;這個功能我以爲應用場合不是不少,本身感覺也不是很深入,從理論上是成立的。性能
小項目,之後變更不大的不用三層架構。
ASP.NET三層結構說明
完善的三層結構的要求是:修改表現層而不用修改邏輯層,修改邏輯層而不用修改數據層。不然你的應用是否是多層結構,或者說是層結構的劃分和組織上是否是有問題就很難說.不一樣的應用有不一樣的理解,這只是一個概念的問題.
理解ASP.NET三層結構——爲何要分三層?
咱們用三層結構主要是使項目結構更清楚,分工更明確,有利於後期的維護和升級。它未必會提高性能,由於當子程序模塊未執行結束時,主程序模塊只能處於等待狀態。這說明將應用程序劃分層次,會帶來其執行速度上的一些損失。但從團隊開發效率角度上來說卻能夠感覺到大不相同的效果。
須要說明一下,三層結構不是.NET的專利,也不是專門用在數據庫上的技術。它是一種更加普適的架構設計理念。
此種架構要在數據庫設計上注意表之間的關係,盡力知足主與子的關係。在功能上對用戶要有必定的限制,不要表如今對於子表的刪除操做必定要慎重,以避免形成主表與子表的數據在邏輯上出現的主表的外鍵在子表中沒有相對應的值。
對於表的綜合查詢方法是:
先對主表查詢,調用主表所對應的DL。再根據主表的記錄分別對每個子表進行查詢。將自表的查詢結果添加的主表後,造成一個大的查詢集合。
對於表的操做(增刪改):
此時只對主表進行操做,調用主表對應的DL中的操做方法。
RL層是邏輯判斷層,主要是對頁面上傳入的數據進行邏輯判斷。RL層之上就是UI