微軟分層代碼架構——簡述

来源:https://www.cnblogs.com/YMHmvc/archive/2018/11/06/9918165.html
-Advertisement-
Play Games

用幾句通俗的話,也就是比較官方的話給大家做一個簡單的解釋: 框架(Framework)的一種定義認為是整個或部分系統的可重用設計,表現為一組抽象構件及構件實例間交互的方法。另一種定義認為,框架是可被應用開發者定製的應用骨架。前者是從應用方面,而後者是從目的方面給出的定義。 可以說,一個框架是一個可復 ...


  用幾句通俗的話,也就是比較官方的話給大家做一個簡單的解釋:

       框架(Framework)的一種定義認為是整個或部分系統的可重用設計,表現為一組抽象構件及構件實例間交互的方法。另一種定義認為,框架是可被應用開發者定製的應用骨架。前者是從應用方面,而後者是從目的方面給出的定義。

  可以說,一個框架是一個可復用的設計構件,它規定了應用的體繫結構,闡明瞭整個設計、協作構件之間的依賴關係、責任分配和控制流程,表現為一組抽象類以及其實例之間協作的方法,它為構件復用提供了上下文(Context)關係。因此構件庫的大規模重用也需要框架。

  框架,其實就是某種應用的半成品,就是一組組件,供你選用完成你自己的系統。簡單說就是使用別人搭好的舞臺,你來做表演。而且,框架一般是成熟的,不斷升級的軟體。

  軟體系統隨著業務的發展,變得越來越複雜,不同領域的業務所涉及到的知識、內容、問題非常非常多。如果每次都從頭開發,那都是一個很漫長的事情,且並不一定能做好。團隊協作開發時,沒有了統一標準,大家各寫各的,同樣的重覆的功能到處都是。由於沒有統一調用規範,很難看懂別人寫的代碼,出現Bug或二次開發維護時,根本無從下手。

  而一個成熟的框架,它是模板化的代碼,它會幫我們實現很多基礎性的功能,我們只需要專心的實現所需要的業務邏輯就可以了。而很多底層功能操作,就可以完完全全不用做太多的考慮,框架已幫我們實現了。這樣的話,整個團隊的開發效率可想而知。另外對於團隊成員的變動,也不用太過擔心,框架的代碼規範讓我們能輕鬆的看懂其他開發人員所寫的代碼。

  一般來說,一個中小型項目,1到5人左右的開發團隊,使用一般的三層結構就可以了,不用去細想框架要分三層還是五層,每個層之間要怎麼實現解耦,要用什麼設計模式。因為當今飛速發展的互聯網時代,快才是王道。人工與時間成本才是重點中的重點,唯有快才能更好的生存下來並壯大。至於擴展功能、介面、分散式、併發、大數據等等問題,實際上過早考慮太多並不是好事情,還不如先做出來積累一定經驗後再慢慢學習,慢慢升級框架。

  這裡為什麼說可以暫時理解為每個數據表對應一個實體?大家都知道,我們做系統的目的,是為用戶提供服務,用戶可不關心你的系統後臺是怎麼工作的,用戶只關心軟體是不是好用,界面是不是符合自己心意。用戶在界面上輕鬆的增、刪、改、查,那麼資料庫中也要有相應的增、刪、改、查,而增刪改查的具體操作對象就是資料庫中的數據,說白了就是表中的欄位。所以,將每個數據表作為一個實體類,實體類封裝的屬性對應到表中的欄位,這樣的話,實體在貫穿於三層之間時,就可以實現增刪改查數據了。

                              

  三層及實體層之間的依賴關係 如圖詳述:

                      

  最後向大家做一個小結:

    框架(Framework)的一種是整個或部分系統的可重用設計,表現為一組抽象構件及構件實例間交互的方法。

    軟體架構(Software Architecture)是一系列相關的抽象模式,用於指導大型軟體系統各個方面的設計,是一個系統的草圖,描述的對象是直接構成系統的抽象組件、各個組件之間的連接,明確細緻的描述組件之間的通訊。

    框架具有代碼模板化、可重用、高內聚(封裝)、規範性、可擴展、可維護、協作開發和通用性的特點。

      三層是指表現層、業務邏輯層和數據訪問層。

      表現層(UI):主要是指與用戶交互的界面;

      業務邏輯層(BLL):該層主要負責處理系統的業務邏輯,以及充當表現層與數據訪問層之間的橋梁,負責數據的傳遞和處理;

      數據訪問層(DAL):主要實對數據的增、刪、改、查。將存儲在資料庫中的數據提交給業務層,同時將業務層處理的數據保存到資料庫。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 入門篇¶ 官方文檔:https://docs.python.org/3/library/ipc.html(進程間通信和網路) 實例代碼:https://github.com/lotapp/BaseCode/tree/master/python/6.net 1.概念¶ 1.1.Python方向¶ 已經 ...
  • # 面向對象與面向過程# 面向過程:以事物流程為中心,核心是“過程”步驟,即,先乾什麼,後乾什麼.# 優點:負責的問題流程化,編寫相對簡單# 缺點:可擴展性差# 面向對象:一切以對象為中心,萬事萬物皆是對象(object)# 優點: 可擴展性強# 缺點: 編程的複雜度高於面向過程 # 面向對象# 如... ...
  • HTTP的媒體類型 1.MIME類型的數據格式標簽(MultIpurpose Internet Mail Extension) 2.最初用於電子郵件系統之間搬移,多用途互聯網郵件擴展 3.MIME類型是一種文本標記,表示一種主要的對象類型和一種子類型,通過相應報頭content-type傳遞 4.M... ...
  • 多線程 std::call_once 轉自:https://blog.csdn.net/hengyunabc/article/details/33031465 std::call_once的特點:即使有多個線程要訪問同一個函數,只有一個線程會成功。 std::call_once的用途:當某個數據只有 ...
  • 當我們拿到一個對象的引用時,如何知道這個對象是什麼類型、有哪些方法呢? 使用type() 首先,我們來判斷對象類型,使用type()函數: 基本類型都可以用type()判斷: >>> type(123) <class 'int'> >>> type('str') <class 'str'> >>> ...
  • 由於網路上的數據應用太多了,很多都沒有介紹資料庫的應用,所以不利於新手學習,這篇主要是介紹這部分,讓新手更理解core中mysql應用 步驟 1. 新建一個mvc的模板程式(這部分我就不上圖和程式,不懂的請看前幾頁隨筆) 2.如圖所示,在Models文件夾新建一個對應的資料庫的類 如 Models. ...
  • 本文以一個簡單的小例子,簡述利用C#語言開發word表格相關的知識,僅供學習分享使用,如有不足之處,還請指正。 ...
  • Net系列框架-Dapper+簡單三層架構 工作將近6年多了,工作中也陸陸續續學習和搭建了不少的框架,後續將按由淺入深的方式,整理出一些框架源碼,所有框架源碼本人都親自調試通過,如果有問題,歡迎聯繫我,供大家一起互相學習和探討,如果你有什麼好的意見或建議,歡迎下麵留言。 本套框架主要採用asp.ne ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...