三層架構


三層(3-tierapplication)


什麼是三層?


         首先要知道三層不是一項實際的技術、他是一中設計軟件的思想、這種思想就是把軟件分爲三層、或者說三個類、分別是表現層(UI)、業務邏輯層(BLL)、數據訪問層(DAL)、分層的目的是爲了高內聚,低耦合、便於更改維護、當然軟件業可以分四層、五層、六層、這主要看需求、但是一般的都是分爲這三層。


         每個層各司其職、相互只是調用關係、這樣好處就是如果要更改界面、那就改UI層、其他層都不用動、或者以後軟件換數據庫、那麼該DAL層就好、其實生活中都是這種思想、手機屏幕壞了?換塊屏幕、可以接着用、電腦系統死了、裝系統接着用、燈泡壞了、換個燈泡、這些其實都是面向對象思想、分層思想、其實本質就是減少聯繫、做到可更換、不用一點壞了就要換全部、分層就是這種思想。



各層功能


1、表現層(UI):通俗講就是展現給用戶的界面,他擔當者接受用戶信息和給用戶顯示用戶信息的功能,即用戶在使用一個系統的時候他的所見所得。


2、業務邏輯層(BLL):針對具體問題的操作,也可以說是對數據層的操作,對數據業務邏輯處理、最明顯的就是三大語句、判斷、循環、多分支、這個一定是在邏輯層的。


3、數據訪問層(DAL):該層所做事務直接操作數據庫,針對數據的增添、刪除、修改、更新、查找等。


爲什麼分三層


         你爲啥一天三頓飯?因爲一天三頓剛剛好、不會餓着也不會撐死、經過前輩們的實驗、軟件劃分三層是最理想的、最通用的、當然事事無絕對、不是所有軟件都分三層的。


如:


1 軟件太小

         你做個很小的軟件還分三層?太小了就沒必要了、還有就是要求速度特別快的


2 要求高速

         因爲三層的關係、會導致運行比不分三層慢、當然也可以升級硬件加速、更快的CPU(下面會講解原因)


3 特殊需求

         特殊需求的軟件分兩層或多層這都是有可能的、沒有一種能應對所有問題的思想或答案、對吧、三層不是萬能的



三層的邏輯關係


         三層相對獨立、他們之間引用來完成任務,UI 引用BLL、BLL引用DLL、DLL訪問數據庫、其實數據庫也應該算一層、但是數據庫現在都有現成的、如SQL數據庫等、也就相當這層已經做好了、如圖


 

 

         例子

                  下面就拿登陸窗體做個例子


2014年04月26日 - chenchen - 楊琛 廊坊師範學院信息技術提高班 第十期


         這三層的聯繫其實就是引用、通過引用、來傳值、互相協作完成一個功能、而又相互獨立、每層只完成自己那層的功能。

         說道傳值、大家看登陸窗體這個例子、用戶名和密碼每一次才層都要用、這是公用數據或說是參數、但是如果很多參數怎麼辦???


model


         如果三層是板磚、那model就是水泥、如果三層是餅乾、他就是夾在中間的奶油、model其實就是幫助三個層傳遞參數用的、他被三層引用、如上面的例子、把用戶名和密碼放到model裏是不是就好多了、打個比方。


         咱們現在工廠都是流水線作業、比如安裝電腦、分3部分、安裝顯示屏、安裝主板、安裝軟件、第一個人安裝好顯示屏、會有傳送帶把電腦送到第二個人那、第二個人安好主板、放到傳送帶上、傳送帶也會運到第三個人那、如果沒有傳送帶是不是每個人都要跑過去送?


         model就是那個傳送帶、把每一層的參數保存、然後其他層引用model這個類、或者說公用層、其實說什麼呢並不重要、重要的是瞭解model到底是起到了什麼作用。


三層的優缺點


優點:


1.解耦。上一層只依賴於下一層,如果測試下一層沒有問題,那麼問題就只可能出現在本層了。便於發現和改正BUG。

 

2.簡化複雜問題。就比如tcpip協議的四層模型或OSI七層模型,各層分工明確,將一個複雜問題簡化了。


3.便於系統維護/升級。各層間通過接口解耦,接口與實現分離,從而可以非常方便的替換掉實現,或者升級實現等。 


4.邏輯複用。例如原來基於B/S開發的程序現在要改成C/S,那麼只要業務層的接口沒有改變,那麼業務層和數據層都可以直接複用。

   在如,只要數據訪問層接口不變,那麼使用便可以有對不同數據庫的實現。 


5.便於團隊開發。只要各層接口在開發前規定好,那麼各層可以獨立開發,進化或維護。 


6.方便部署。將各層開發成組件,則可以獨立部署。


缺點:


  1、降低了系統的性能。這是不言而喻的。如果不採用分層式結構,很多業務可以直接造訪數據庫,以此獲取相應的數據,如今卻必須通過中間層來完成。


  2、有時會導致級聯的修改。這種修改尤其體現在自上而下的方向。如果在表示層中需要增加一個功能,爲保證其設計符合分層式結構,可能需要在相應的業務邏輯層和數據訪問層中都增加相應的代碼


       3、增加了代碼量,增加了工作量  


三層的使用

         其實三層具體怎麼寫代碼這不重要、因爲三層本身是一種思想、C#可用VB.NET可以用、其他語言也可以用、就好像電腦分顯示屏、主板、軟件、手機也可以分顯示器、主板、軟件、遙控器可以分電池和遙控器本身、這種思想就是使每個個體的功能獨立、達到課複用、容易更換、修改的目的。


         什麼時候用三層?在軟件上說、如果你的程序到達了一定的複雜程度、就可以分三成、如果你的軟件很簡單就沒必要分三層、就好像你寫字就三行、你還要分好幾個段落、那叫沒事找事、你出了一本書、一本書就一段、那叫沒事找抽= =!所以說不要畏懼啥時候用啥時候不用、功到自然成。


總結:

         其實世間萬物都是息息相關的、三層其實就是生活中的一個抽象的概念、在各個領域都有應用、只是在軟件這個行業、他叫三層這個名字、這次學習三層讓我對軟件又有了新的認識、對製作軟件流程更加清晰、路是一步步走的、不知大家還記的第一次學編程寫的那句話嗎?


                                                                                                                                    Hello world

收藏

發佈了30 篇原創文章 · 獲贊 3 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章