ABP-Book Store Application中文講解 - 前期準備 - Part 3:Acme.BookStore項目模塊詳解之二

?1. 匯總

ABP-Book Store Application中文講解-匯總-CSDN博客

2. 前一章?

ABP-Book Store Application中文講解 - 前期準備 - Part 3:Acme.BookStore項目模塊詳解

項目之間的引用關系。

目錄

1. .Domain.Shared

?2.?.Domain

3.?.Application.Contracts

4. .Application

5. .EntityFrameworkCore

6. .DbMigrator--有自己的appsettings.json

7. .HttpApi

8. .HttpApi.Client

9. .HttpApi.Host--有自己的appsettings.json

10. .AuthServer--有自己的appsettings.json

11. Test Projects


1. .Domain.Shared

該項目包含常量、枚舉和其他對象,這些對象實際上是域層的一部分,但需要在解決方案中的所有層/項目中使用。

BookType enum和BookConsts類(其中可能有一些Book實體的常量字段,如MaxNameLength)是本項目的理想選擇。

此項目不依賴于解決方案中的其他項目, 所有其他項目都直接或間接地依賴于它。

?2.?.Domain

這是解決方案的領域層。它主要包含實體(entities)、聚合根(aggregate roots)、領域服務(domain service)、值對象(?value objects)、存儲庫接口(repository interfaces)和其他領域對象。

Book實體、BookManager域服務和IBookRepository接口都是這個項目的理想選擇。

取決于.Domain.Shared是因為它使用項目中定義的常量、枚舉和其他對象。

3.?.Application.Contracts

本項目主要包括應用層的應用服務接口和DTO (Data Transfer Objects)。它的存在是為了分離應用層的接口和實現。通過這種方式,接口項目可以作為合同包共享給客戶端。

IBookAppService接口和BookCreationDto類是這個項目很好的候選對象。

取決于Domain.Shared因為它可能在應用程序服務接口和DTOs中使用常量、枚舉和這個項目的其他共享對象。

4. .Application

該項目是對定義在.Application.Contracts中接口的實現。

BookAppService?類

依賴于?.Application.Contracts?,實現.Application.Contracts定義的接口并醫用DTOs.
依賴于.Domain?,可以使用domain objects (entities, repository interfaces... etc.) 去實現應用邏輯。

    5. .EntityFrameworkCore

    使用EF Core,定義DbContext,實現.Domain項目中定義的IRepository。

    如果使用mongodb,此項目不可用。

    6. .DbMigrator--有自己的appsettings.json

    執行DB的創建、DB的Update和初始化。有自己的配置文件。

    依賴項目為.EntityFrameworkCore和.Application.Contracts。

    1. 創建數據庫

    2. 更新數據庫表結構,?DB migrations

    3. 初始化數據。 Seeds initial data

    7. .HttpApi

    此項目用于定義自己的API Controller,它依賴于.Application.Contracts。

    大多數情況我們不需要自定義Controller,因為ABP的API Controllers?會自動幫我們生成對應的APIs。除非你需要定義自己的APIs

    8. .HttpApi.Client

    這是一個定義c#客戶端代理以使用解決方案的HTTP api的項目。您可以將此庫共享給第三方客戶端,這樣他們就可以在其Dotnet應用程序中輕松地使用您的HTTP api(對于其他類型的應用程序,他們仍然可以使用您的api,無論是手動還是使用自己平臺中的工具)。

    多數情況下我們不需要手動更改次項目,因為ABP的Dynamic C# API Clients?幫我們處理了此任務。

    可以刪除此項目如果你不用定義客戶端代理。

    9. .HttpApi.Host--有自己的appsettings.json

    項目API的主啟動頁面,引用了.Application, .EntityFrameworkCore,.HttpApi。有自己的配置文件。

    里面定義了數據庫連接池,跨域設置,Redis, OpenIdDict Connection設置等。

    10. .AuthServer--有自己的appsettings.json

    OpenidDict connection,用于授權和鑒權的驗證,緩存數據庫是Redis。有自己的配置文件。

    11. Test Projects

    單元測試和集成測試項目,里面集成了一下項目的測試:

    • .Domain.Tests?測試.Domain.
    • .Application.Tests?is 測試.Application.
    • .EntityFrameworkCore.Tests?測試EF Core configuration 和自定義的Repositories.
    • .TestBase?is a base (shared) project for all tests.

    本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
    如若轉載,請注明出處:http://www.pswp.cn/web/79511.shtml
    繁體地址,請注明出處:http://hk.pswp.cn/web/79511.shtml
    英文地址,請注明出處:http://en.pswp.cn/web/79511.shtml

    如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

    相關文章

    【Leetcode刷題隨筆】349. 兩個數組的交集

    1. 題目描述 給定兩個數組nums1和nums2&#xff0c;返回它們的交集。輸出結果中的每個元素一定是唯一的。我們可以不考慮輸出結果的順序。 示例1: 輸入:nums1 [1,2,2,1], nums2 [2,2] 輸出&#xff1a;[2] 題目條件&#xff1a; 1 < nums1.length, nums2.length < 10…

    Unity打包安卓失敗 Build failure 解決方法

    【Unity】打包安卓失敗 Build failure 的解決方法_com.android.build.gradle.internal.res.linkapplicat-CSDN博客 unity在打包時設置手機屏幕橫屏豎屏的方法_unity打包默認橫屏-CSDN博客

    Window、CentOs、Ubuntu 安裝 docker

    Window 版本 網址&#xff1a;https://www.docker.com/ 下載 下載完成后&#xff0c;雙擊安裝就可以了 Centos 版本 卸載 Docker &#xff08;可選&#xff09; yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-log…

    Matlab自學筆記五十四:符號數學工具箱和符號運算、符號求解、繪圖

    1.什么是符號數學工具箱&#xff1f; 符號數學工具箱是Matlab針對符號對象的運算功能&#xff0c;它引入了一種特殊的數據類型 - 符號對象&#xff1b; 該數據類型包括符號數字&#xff0c;符號變量&#xff0c;符號表達式和符號函數&#xff0c;還包含符號矩陣&#xff0c;以…

    OpenCV進階操作:圖像的透視變換

    文章目錄 前言一、什么是透視變換&#xff1f;二、透視變換的過程三、OpenCV透視變換核心函數四、文檔掃描校正&#xff08;代碼&#xff09;1、預處理2、定義輪廓點的排序函數3、定義透視變換函數4、讀取原圖并縮放5、輪廓檢測6、繪制最大輪廓7、對最大輪廓進行透視變換8、旋轉…

    【python】基礎知識點100問

    以下是Python基礎語法知識的30條要點整理,涵蓋數據類型、函數、控制結構等核心內容,結合最新資料歸納總結: 基礎30問 一、函數特性 函數多返回值 支持用逗號分隔返回多個值,自動打包為元組,接收時可解包到多個變量 def func(): return 1, "a" x, y = func()匿…

    采用AI神經網絡降噪算法的通信語音降噪(ENC)模組性能測試和應用

    采用AI降噪的語言通話環境抑制模組性能效果測試 隨著AI時代來臨.通話設備的環境噪音抑制也進入AI降噪算法時代. AI神經網絡降噪技術是一款革命性的語音處理技術&#xff0c;他突破了傳統單麥克風和雙麥克風降噪的局限性,利用采集的各種日常環境中的噪音樣本進行訓練學習.讓降噪…

    openwrt目錄結構(部分)

    1&#xff0c;openwrt 原始目錄需要注意的目錄 tools: 該目錄下存放著一些&#xff0c;編譯工程的自動化工具包和一些在編譯過程用到的命令包&#xff0c; 查看目錄下的Makefile&#xff0c;知道其會在編譯過程中將依賴包下載 例如&#xff1a; autoconf / lzma / mkimage/ …

    RDB和AOF的區別

    Redis提供兩種主要的持久化機制&#xff1a;RDB&#xff08;Redis Database&#xff09;和AOF&#xff08;Append Only File&#xff09;&#xff0c;它們在數據持久化方式、性能影響及恢復策略上各有特點。以下是兩者的對比分析及使用建議&#xff1a; RDB&#xff08;快照持久…

    基于大模型的甲狀腺結節診療全流程預測與方案研究報告

    目錄 一、引言 1.1 研究背景與目的 1.2 研究意義 1.3 國內外研究現狀 二、大模型預測原理與方法 2.1 相關大模型概述 2.2 數據收集與預處理 2.3 模型訓練與驗證 三、術前預測與評估 3.1 結節性質預測 3.1.1 良惡性判斷 3.1.2 與傳統診斷方法對比 3.2 手術風險預測…

    逆向破解:x64dbg

    文章目錄 一、CPU窗口1、反匯編窗口2、寄存器窗口3、棧地址窗口4、十六進制數據窗口5、堆棧參數解析窗口 二、常用快捷鍵三、字符串檢索功能四、調試功能1、上一步 一、CPU窗口 1、反匯編窗口 2、寄存器窗口 寄存器窗口用于顯示和解釋當前線程環境下CPU寄存器的各種狀態值和內…

    免布線視頻樁如何重塑停車管理模式

    傳統停車管理常因布線復雜、維護成本高而難以推廣&#xff0c;而“免布線視頻樁”通過無線設計、低功耗與高精度檢測&#xff0c;為城市停車提供高效解決方案。作為智慧城市建設的創新工具&#xff0c;免布線視頻樁以即裝即用、長效續航等特性&#xff0c;正在重塑停車管理模式…

    【CTFer成長之路】舉足輕重的信息搜集

    舉足輕重的信息搜集 信息搜集 常見的搜集 題目描述: 一共3部分flag docker-compose.yml version: 3.2services:web:image: registry.cn-hangzhou.aliyuncs.com/n1book/web-information-backk:latestports:- 80:80啟動方式 docker-compose up -d 題目Flag n1book{info_…

    springboot3+vue3融合項目實戰-大事件文章管理系統-更新用戶密碼

    大致分為這三步 首先在usercontroller中增加updatePwd方法 PatchMapping ("/updatePwd")public Result updatePwd(RequestBody Map<String,String> params){//1.校驗參數String oldPwd params.get("old_pwd");String newPwd params.get("n…

    OpenCV進階操作:指紋驗證、識別

    文章目錄 前言一、指紋驗證1、什么是指紋驗證2、流程步驟 二、使用步驟&#xff08;案例&#xff09;三、指紋識別&#xff08;案例&#xff09;1、這是我們要識別的指紋庫2、這是待識別的指紋圖3、代碼4、結果 總結 前言 指紋識別作為生物識別領域的核心技術之一&#xff0c;…

    ECLIC中斷流程及實際應用 —— RISC-V中斷機制(二)

    在長期的嵌入式開發實踐中&#xff0c;對中斷機制的理解始終停留在表面層次&#xff0c;特別當開發者長期局限于純軟件抽象層面時&#xff0c;對中斷機制的理解極易陷入"知其然而不知其所以然"的困境&#xff0c;這種認知的局限更為明顯&#xff1b;隨著工作需要不斷…

    計算機網絡-LDP標簽發布與管理

    前面學習了LDP建立鄰居&#xff0c;建立會話&#xff0c;今天來學習在MPLS中的標簽發布與管理。 在MPLS網絡中&#xff0c;下游LSR決定標簽和FEC的綁定關系&#xff0c;并將這種綁定關系發布給上游LSR。LDP通過發送標簽請求和標簽映射消息&#xff0c;在LDP對等體之間通告FEC和…

    Go語言運算符詳解

    文章目錄 1. 算術運算符2. 關系運算符3. 邏輯運算符4. 位運算符5. 賦值運算符6. 其他運算符運算符優先級注意事項 Go語言提供了與其他語言類似的運算符&#xff0c;包括算術運算符、關系運算符、邏輯運算符、位運算符、賦值運算符等。這些運算符即可滿足基本的運算需求。 1. 算…

    Selenium模擬人類行為,操作網頁的方法(全)

    看到有朋友評論問&#xff0c;用selenium怎么模仿人類行為&#xff0c;去操作網頁的頁面呢&#xff1f; 我想了想&#xff0c;這確實是一個很大的點&#xff0c;不應該是一段代碼能解決的&#xff0c; 就像是,如果讓程序模擬人類的行為。例如模擬人類買菜&#xff0c;做飯&am…

    RabbitMQ的工作隊列模式和路由模式有什么區別?

    RabbitMQ 的工作隊列模式&#xff08;Work Queues&#xff09;和路由模式&#xff08;Routing&#xff09;是兩種不同的消息傳遞模式&#xff0c;主要區別在于消息的分發邏輯和使用場景。以下是它們的核心差異&#xff1a; 1. 工作隊列模式&#xff08;Work Queues&#xff09…