三層架構知識梳理

來源:互聯網
上載者:User

   最近學習了一下三層架構的知識,在網上搜集了一些資料,梳理了一下,以後備用,也希望能幫到其他熱愛編程的人!

分層的由來:

   在學習網路的時候,書上有這麼一句話:任何新技術的出現都必須具備兩個條件:一是強烈的社會需求,二是前期技術的成熟!三層架構的出現,想必也順應了這句話。

   1996年SUN公司推出了java,廣受業界的喜愛,其重要的一個原因就是java專門為企業開發提供了多層分布式公司專屬應用程式模型.在企業中,公司有明確的分工和部門,這些部門很可能不在同一個地區.每一個部門用到的系統一般是不同的.但是我們又希望每一個部門的資訊統一起來管理,便於管理層管理.同時,企業的資料對安全性要求一般是很高的.不希望系統每一個部分都部署在每一個員工的PC上.這樣顯然不是安全的.所以,我們解決的辦法就是把系統拆分開來,在J2EE中,應用邏輯按功能不同可以劃分為不同類型的組件,各組件根據它們所在的層分布在不同的機器上,共同組成一個基於組件的分布式系統。這樣,系統的安全性,可靠性大大的提高,充分發揮了分層的作用.自此,分層思想就推廣開來。

   現在要談的三層體繫結構,是在用戶端與資料庫兩層之間加入了一個“中介層”,也叫組件層,三層體系的應用程式將商務規則、資料訪問、合法性校正等工作放到了中介層進行處理。這裡所說的三層體系,不是指物理上的三層,不是簡單地放置三台機器就是三層體繫結構,也不僅僅有B/S應用才是三層體繫結構,三層是指邏輯上的三層,即使這三個層放置到一台機器上。這三層分別被稱為:展示層(UI)、商務邏輯層(BLL)、資料訪問層(DAL)。通常情況下,用戶端不直接與資料庫進行互動,而是通過COM/DCOM通訊與中介層建立串連,再經由中介層與資料庫進行互動。下面具體闡述一下這三層:

 

基本的概念:

   表現層(UI):通俗講就是展現給使用者的介面,即使用者在使用一個系統的時候他的所見所得。

   商務邏輯層(BLL):針對具體問題的操作,也可以說是對資料層的操作,對資料商務邏輯處理。

   資料訪問層(DAL):該層所等做事務直接操作資料庫,針對資料的增添、刪除、修改、尋找。

各層作用:

   資料訪問層:主要是對未經處理資料(資料庫或者文字檔等存放資料的形式)的操作層,而不是指未經處理資料,也就是說,是對資料的操作,而不是資料庫,具體為商務邏輯層或展示層提供資料服務.

   商務邏輯層:主要是針對具體的問題的操作,也可以理解成對資料層的操作,對資料商務邏輯處理,如果說資料層是積木,那邏輯層就是對這些積木的搭建。

   展示層:主要表示WEB方式,也可以表示成WINFORM方式,WEB方式也可以表現成:aspx,如果邏輯層相當的強大和完善,無論表現層如何定義和更改,邏輯層都能完善地提供服務。

 

參考關聯性:

   UI直接引用商務邏輯層(BLL)

   商務邏輯層(BLL)需要引用資料訪問層(DAL)

   資料訪問層(DAL)所在程式集不引用商務邏輯層(BLL)和展示層(UI)

 

說了這麼多的理論,有些抽象,下面用一個形象生動的例子闡述一下:

   結合,把一個系統的運行,看作是一個飯點的運營,飯店將整個業務分解為三部分來完成,每一部分各負其責,服務員只管接待顧客、向廚師傳遞顧客的需求;廚師只管烹炒不同口味、不同特色的美食;後勤工作人員只管提供美食原料;他們三者分工合作共同為顧客提供滿意的服務。在飯店為顧客提供服務期間,服務員、廚師、後勤工作人員,三者中任何一者的人員發生變化時都不會影響其他倆者的正常工作,只對變化者進行重新調整即可正常營業。

   我們用三層結構開發的軟體系統於此類似,展示層只提供軟體系統與使用者互動的介面;商務邏輯層是展示層和資料訪問層之間的橋樑,負責資料處理和傳遞;資料訪問層只負責資料的存取工作。

三層特點:

優點:
   1.解耦。上一層只依賴於下一層,如果測試下一層沒有問題,那麼問題就只可能出現在本層了。便於發現和改正BUG。
   2.簡化複雜問題。就比如tcp/ip協議的四層模型或OSI七層模型,各層分工明確,將一個複雜問題簡化了。

   3.便於系統維護/升級。各層間通過介面解耦,介面與實現分離,從而可以非常方便的替換掉實現,或者升級實現等。
   4.邏輯複用。例如原來基於B/S開發的程式現在要改成C/S,那麼只要業務層的介面沒有改變,那麼業務層和資料層都可以直接複用。在如,只要資料訪問層介面不變,那麼使用便可以有對不同資料庫的實現。

   5.便於團隊開發。只要各層介面在開發前規定好,那麼各層可以獨立開發,進化或維護。
   6.方便部署。將各層開發成組件,則可以獨立部署。

缺點:
   分層過多限制了客戶對系統的理解能力。Tcp/ip便將OSI七層簡化為了4層。另外分層過多也增加了系統的理解難度,當然也看客戶的接受能力。雖然增大了靈活性,但同時也限制了客戶的理解和同客戶的交流。

我們什麼時候用三層呐?

   如果一個程式,商務邏輯簡單,沒有真正的資料存放區層,就沒有必要抽象出一個商務邏輯層,當具有相當多的商務邏輯,業務複雜到一定程度,而且擁有資料存放區介質。我們就考慮使用三層架構了。

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.