天天看點

三層架構

三層(3-tierapplication)

什麼是三層?

         首先要知道三層不是一項實際的技術、他是一中設計軟體的思想、這種思想就是把軟體分為三層、或者說三個類、分别是表現層(ui)、業務邏輯層(bll)、資料通路層(dal)、分層的目的是為了高内聚,低耦合、便于更改維護、當然軟體業可以分四層、五層、六層、這主要看需求、但是一般的都是分為這三層。

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

各層功能

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

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

3、資料通路層(dal):該層所做事務直接操作資料庫,針對資料的增添、删除、修改、更新、查找等。

為什麼分三層

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

如:

1 軟體太小

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

2 要求高速

         因為三層的關系、會導緻運作比不分三層慢、當然也可以更新硬體加速、更快的cpu(下面會講解原因)

3 特殊需求

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

三層的邏輯關系

         三層相對獨立、他們之間引用來完成任務,ui 引用bll、bll引用dll、dll通路資料庫、其實資料庫也應該算一層、但是資料庫現在都有現成的、如sql資料庫等、也就相當這層已經做好了、如圖

三層架構

         例子

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

三層架構

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

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

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———————————————

————————chenchen————————