?1. 匯總
ABP-Book Store Application中文講解-匯總-CSDN博客
2. 前一章?
ABP-Book Store Application中文講解 - 前期準備 - Part 3:Acme.BookStore項目模塊詳解
項目之間的引用關系。
目錄
?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.