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

来源:http://www.cnblogs.com/dachengxiaomeng/archive/2017/08/25/7426367.html
-Advertisement-
Play Games

三層架構 常見架構: 開發中常見的23種設計模式: 創建型模式,共五種:工廠方法模式、抽象工廠模式、單例模式、建造者模式、原型模式。 結構型模式,共七種:適配器模式、裝飾器模式、代理模式、外觀模式、橋接模式、組合模式、享元模式。 行為型模式,共十一種:策略模式、模板方法模式、觀察者模式、迭代子模式、 ...


 三層架構

  • 常見架構
  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(百度百科): https://baike.baidu.com/item/%E4%B8%89%E5%B1%82%E6%9E%B6%E6%9E%84/11031448?fr=aladdin 連接2(必看):http://blog.csdn.net/hanxuemin12345/article/details/8544957/ 高內聚低耦合: https://baike.baidu.com/item/%E9%AB%98%E5%86%85%E8%81%9A%E4%BD%8E%E8%80%A6%E5%90%88  
  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.代碼: 三層架構簡單代碼: http://blog.csdn.net/zhgl7688/article/details/43669463#comments  
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • HDFS ,Hadoop Distribute File System,hadoop分散式文件系統。 主從架構,分主節點NameNode,從節點DataNode.當然還有個SecondaryName,但這不是淺析里的點.這裡主要講下namenode和datanode的基本概念, 並描述下讀寫過程. ...
  • 生成式對抗網路(gennerative adversarial network,GAN),谷歌2014年提出網路模型。靈感自二人博弈的零和博弈,目前最火的非監督深度學習。GAN之父,Ian J.Goodfellow,公認人工智慧頂級專家。 原理。生成式對搞網路包含一個生成模型(generative ...
  • 本文章拿來學慣用||參考資料:http://www.2cto.com/database/201308/236361.html 對MySql查詢緩存及SQL Server過程緩存的理解及總結 一、MySql的Query Cache 1、Query Cache MySQL Query Cache是用來緩 ...
  • 1 外鍵 外鍵:foreign key,外面的鍵(鍵不在自己表中),如果一張表中有一個欄位(非主鍵)指向另外一張表的主鍵,那麼將該欄位稱為外鍵。 1.1 增加外鍵 外鍵可以在創建表的時候或創建表之後增加(但是要考慮數據的問題)。 方案一:在創建表的時候增加外鍵,在所有的表欄位之後,使用foreign ...
  • -- 連接mysql 資料庫(前提是配置好MySQL資料庫的環境變數,加入path)mysql -uroot -p -- 設置文本的輸入輸出編碼:cmd 使用的是gbk,不然顯示亂碼set names gbk; -- 創建資料庫create database mydatabase charset u ...
  • case when語句,用於計算條件列表並返回多個可能結果表達式之一。CASE 具有兩種格式:1.when when_expression,是使用簡單 CASE 格式時所計算的表達式。Input_expression 是任何有效的SQL表達式。2.when Boolean_expression,使用... ...
  • 在SQL Server中使用Multiple Server Query Execution這個功能做資料庫維護或腳本發佈時非常方便,昨天由於磁碟空間原因,刪除清理了大量的軟體和組件,結果導致SSMS客戶端出了問題,重裝過後,使用Multiple Server Query Execution時,出現了 ...
  • 1創建文件repo文件 #vim /etc/yum.repos.d/mongodb-org-3.4.repo [mongodb-org-3.4] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasev ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...