【ABP框架系列學習】N層架構(3)

来源:https://www.cnblogs.com/OlderGiser/archive/2018/11/22/10001169.html
-Advertisement-
Play Games

目錄 0.引言 1.DDD分層 2.ABP應用構架模型 客戶端應用程式(Client Applications) 表現層(Presentation Layer) 分散式服務層(Distributed Service Layer) 應用層(Application Layer) 領域層 基礎設施層 3. ...


目錄

0.引言

1.DDD分層

2.ABP應用構架模型

客戶端應用程式(Client Applications)

表現層(Presentation Layer)

分散式服務層(Distributed Service Layer)

應用層(Application Layer)

領域層

基礎設施層

3.使用ABP項目模版快速生成應用程式


0.引言

應用程式的分層是一種廣泛接受的技術, 可以降低複雜度和提高代碼的可重用性。為了實現分層架構,ABP遵循領域驅動設計(DDD)原則。

1.DDD分層

領域驅動設計有四個基本的層:

  • 表現層(Presentaiton Layer):為用戶提供介面。使用應用層實現與用戶交互。
  • 應用層(Application Layer):表現層和領域層的中間者。協調業務對象以執行特定的應用程式任務。
  • 領域層(Domain Layer):包含業務對象和規則,是整個應用程式的核心。
  • 基礎設施層:提供支持上層通用的技術能力,大部分是藉助於第三方庫

2.ABP應用構架模型

除了DDD,現代的應用程式架構還包括邏輯和物理層等。如下圖是ABP建議並實施的模型,它不僅通過提供基類和服務來快速實現這個模型,而且還提供了啟動模板直接開始這個模型。

客戶端應用程式(Client Applications)

遠程客戶端通過HTTP APIs(API Controllers,OData Controllers,GraphQL終端)等將應用程式作為服務。遠程客戶端可以是SPA、移動APP、或第三方消費者等。該應用程式主要包括本地化和導航功能。

表現層(Presentation Layer)

ASP.NET [Core] MVC可以認為是表現層。它可以是物理層(通過HTTP APIs使用應用程式)或是邏輯層(直接註入和使用應用服務)。無論是哪一種情況,一般包括本地化(Location)、導航(Navigation)、對象映射(Object Mapping)、緩存(Caching)、配置管理(Configuration Manager)、審計日誌(Audit Logging)等等。還包括授權(Authorization)、會話(Session)、功能(Features,對於多租戶應用程式)以及異常處理(Exception Handling)。

分散式服務層(Distributed Service Layer)

該層主要通過遠程APIs(如REST、OData、GraphQL等)服務於應用服務/領域功能。該層只是將HTTP請求轉換為領域交互,或可使用應用服務來委托操作,而並不包含業務邏輯。通常包括授權(Authorization)、緩存(Caching)、審計日誌(Audit Logging)、對象映射(Object Mapping)、異常處理(Exception Handling)、會話(Session)等。

應用層(Application Layer)

應用層主要包括使用領域層和領域對象(領域服務、實體...)來執行應用程式功能請求的應用服務。應用層使用DTO(數據傳輸對象)從表現層或分散式服務層獲取或返回數據。包括授權(Authorization)、緩存(Caching)、審計日誌(Audit Logging)、對象映射(Object Mapping)、會話(Session)等。

領域層

這是實現領域邏輯主要的層,包括執行業務/領域邏輯的實體(Entities)、值對象(Value Objects)、和領域服務(Domain Services)。它還包括規約(Specifications)和觸發領域事件(trigger Domain Events),並定義了用於從數據源(通常是DBMS)讀取和持久化實體的倉儲介面(Repository Interfaces)。

基礎設施層

基礎設施層用於輔助其它層:包括實現倉儲介面(Repository Interfaces,如EF Core)實際操作資料庫。還可能包括與供應商(vendor)的集成,以便發送電子郵件等。基礎設施層是最下、也是不嚴格的一層,實際上是通過實現它們的抽象概念來支持其他層。

3.使用ABP項目模版快速生成應用程式

1.打開網址【Startup Templates】

2.依次選擇ASP.NET Core 2.x  >>  .NET CORE(Cross Plateform)   >>   Multi Page Web Application,輸入項目名稱:XXX.FirstABP、驗證碼,點擊創建項目按鈕。

​3.跳轉自動下載源代碼。

4.解壓並用Visual Studio 2017打開,啟動程式後VS會自動還原項目所需要的包,wait for a minute......使用ABP項目模版生成的解決方案如下:

5.設置【XXX.FirstABP.Web.MVC】為啟動項目,打開appsetting.json文件修改連接字元串,如下:

6.打開【程式包管理控制台】,預設項目選擇【XXX.FirstABP.EntityFrameworkCore】,在命令行依次輸入:Add-Migration "FirstABP"、Update-Database,wait for a minute...

7.執行步驟6的操作後,預設生成了ABP的數據。

8.回到Visual Studio 2017,按F5運行程式...有驚喜喲,登錄界面出現了,輸入admin/123qwe,點擊登錄。

9.如圖,進入主界面。至此,利用ABP項目模板快速生成了應用程式,主要有租戶管理、用戶管理、角色管理等功能模塊。

 

 


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

-Advertisement-
Play Games
更多相關文章
  • 十五、首頁全局配置 1、首頁前端頁面配置 將index.html繼承base.html頁面,修改繼承的block地方: 修改base.html頁面中導航欄選中狀態的代碼: 2、全局搜索功能 首頁的全局搜索功能可以對課程,機構,教師進行全局搜索,搜索的代碼放在deco-common.js文件中: 只需 ...
  • PHP代碼的執行:1.和大部分程式一樣,接收數據,處理數據,輸出結果2.編寫的代碼就是輸入的數據,php內核進行處理,返回相應的輸出3.php作為業務程式和編譯語言的區別就是,php多了一步把用戶代碼翻譯為機器語言的步驟:詞法分析,語法分析4.詞法分析把php代碼分割成一個個單元,語法分析將這些單元 ...
  • django+uwsgi+nginx部署 1.介紹: 在網上看了很多教程,但自己部署了很久都沒有成功,這篇博文記錄自己所踩過得坑。 2.環境: 3.下載uwsgi以及nginx (註:如果下載異常出現許可權問題,在命令前添加sudo) 4.創建Django項目 例如:項目名為mysite 說明:Lin ...
  • public class SwitchCase { public static void main(String[] args) { System.out.println(switchFun(4)); //運行結果:8 } public static int switchFun(int x){ in... ...
  • ASP.NET -- WebForm -- 頁面生命周期 ASP.NET 頁運行時,此頁將經歷一個生命周期,在生命周期中將執行一系列處理步驟。這些步驟包括初始化、實例化控制項、還原和維護狀態、運行事件處理程式代碼以及進行呈現。瞭解頁生命周期非常重要,因為這樣做您就能在生命周期的合適階段編寫代碼,以達到 ...
  • 讓 .Net 更方便的導入導出Excel Intro 因為前一段時間需要處理一些 excel 數據,主要是導入/導出操作,將 Excel 數據轉化為對象再用程式進行處理和分析,沒有找到比較滿意的庫,於是就自己造了一個輪子,屏蔽掉了 xlsx 與 xls 的差別,屏蔽了 Npoi 操作 Excel 的 ...
  • 門禁服務程式已經調試完成,基於項目實時性要求,使用SignalR實現門禁狀態實時獲取和控制。 ...
  • asp.net core webApi 參數保護 Intro asp.net core data protection 擴展,基於 擴展的數據保護組件,自動化的實現某些參數的保護 ParamsProtection 是為了保護 asp.net core webapi 項目的某些參數而設計的,也可以用來 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...