淺談.NET,C#三層架構(自己總結)


 三層架構

  • 常見架構
  1.  三層(經典)
  2. MVC
  3. MVVM
  4. MVP
 
  • 開發中常見的23種設計模式:
創建型模式,共五種:工廠方法模式、抽象工廠模式、單例模式、建造者模式、原型模式。
結構型模式,共七種:適配器模式、裝飾器模式、代理模式、外觀模式、橋接模式、組合模式、享元模式。
行為型模式,共十一種:策略模式、模板方法模式、觀察者模式、迭代子模式、責任鏈模式、命令模式、備忘錄模式、狀態模式、訪問者模式、中介者模式、解釋器模式。
  • 設計模式的六大原則
1、開閉原則
2、里氏代換原則
3、依賴倒轉原則
4、接口隔離原則
5、迪米特法則(最少知道原則)
6、合成復用原則
 
  • 程序與程序交互方式
1.引用命名空間
2.文件(IO,servile),文件流,序列化
3.DB數據庫
4.web請求(Ajax)(Socket)(HTTPRequest 提交方式:get,post)
 

 
鏈接1(百度百科):
高內聚低耦合:
 

 
1.概念:
三層架構(3-tier architecture) 通常意義上的三層架構就是將整個業務應用划分為:
  • 界面層UI(User Interface layer)
  • 業務邏輯層BLL(Business Logic Layer)
  • 數據訪問層DAL(Data access layer)
區分層次的目的即為了“ 高內聚低耦合
任何一層發生變化都不會影響到另外一層!!!
 
1: 數據訪問層:主要是對非原始數據的操作層,是對數據庫的操作,具體為業務邏輯層或表示層提供數據服務
2: 業務邏輯層:主要是針對具體的問題的操作,對數據業務邏輯處理
3: 界面層:展示層,交互界面,主要表示WEB方式,也可以表示成winform方式。
 
 
2.高內聚低耦合:
概念
  耦合性:也稱塊間聯系。指軟件系統結構中各模塊間相互聯系緊密程度的一種度量。模塊之間聯系越緊密,其耦合性就越強,模塊的獨立性則越差。模塊間耦合高低取決於模塊間接口的復雜性、調用的方式及傳遞的信息
  內聚性:又稱塊內聯系。指模塊的功能強度的度量,即一個模塊內部各個元素彼此結合的緊密程度的度量。若一個模塊內各元素(語名之間、程序段之間)聯系的越緊密,則它的內聚性就越高。
  耦合:一個軟件結構內不同模塊之間互連程度的度量。
  低耦合,粗淺的理解是:一個完整的系統,模塊與模塊之間,盡可能的使其獨立存在。
  高內聚是指一個軟件模塊是由相關性很強的代碼組成,只負責一項任務,也就是常說的單一責任原則。
 
3.優缺點:
優點
1、開發人員可以只關注整個結構中的其中某一層;
2、可以很容易的用新的實現來替換原有層次的實現;
3、可以降低層與層之間的依賴;
4、有利於標准化;
5、利於各層邏輯的復用。
6、結構更加的明確
7、降低維護成本和維護時間
缺點
1、降低了系統的性能。這是不言而喻的。如果不采用分層式結構,很多業務可以直接造訪數據庫,以此獲取相應的數據,如今卻必須通過中間層來完成。
2、有時會導致級聯的修改。這種修改尤其體現在自上而下的方向。如果在表示層中需要增加一個功能,為保證其設計符合分層式結構,可能需要在相應的業務邏輯層和數據訪問層中都增加相應的代碼。
3、增加了開發成本。
 
4.實體層(Entity):(看連接2)
 
Entity(實體層):它不屬於三層中的任何一層,但是它是必不可少的一層
實體類庫(Model),主要存放 數據庫中的表字段。
 
4,每一層(UI—>BLL—>DAL)之間的數據傳遞(單向)是靠變量或實體作為參數來傳遞的,這樣就構造了三層之間的聯系,完成了功能的實現。
但是對於大量的數據來說,用變量做參數有些復雜,因為參數量太多,容易搞混。比如:我要把員工信息傳遞到下層,信息包括:員工號、姓名、年齡、性別、工資....用變量做參數的話,那么我們的方法中的參數就會很多,極有可能在使用時,將參數匹配搞混。這時候,如果用實體做參數,就會很方便,不用考慮參數匹配的問題,用到實體中哪個屬性拿來直接用就可以,很方便。這樣做也提高了效率。
 
(注:這里為什么說可以暫時理解為每個數據表對應一個實體??答:大家都知道,我們做系統的目的,是為用戶提供服務,用戶可不關心你的系統后台是怎么工作的,用戶只關心軟件是不是好用,界面是不是符合自己心意。用戶在界面上輕松的增、刪、改、查,那么數據庫中也要有相應的增、刪、改、查,而增刪改查具體操作對象就是數據庫中的數據,說白了就是表中的字段。所以,將每個數據表作為一個實體類,實體類封裝的屬性對應到表中的字段,這樣的話,實體在貫穿於三層之間時,就可以實現增刪改查數據了)
綜上所述:三層及實體層之間的依賴關系:
 
5.代碼:
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM