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.