.NET Core之ABP vNext 开发实战(三) 熟悉项目构造

※ 官网介绍:

.NET Core之ABP vNext 开发实战(三) 熟悉项目构造

(一)Domain.Shared

项目包含常量,枚举和其他对象,这些对象实际上是领域层的一部分,但是解决方案中所有层/项目中都会使用到。
该项目不依赖解决方案中的其他项目,其他项目直接或间接依赖该项目。

(二)Domain

解决方案的领域层. 它主要包含 实体, 集合根, 领域服务, 值类型, 仓储接口 和解决方案的其他领域对象。
它依赖 .Domain.Shared 项目, 因为项目中会用到它的一些常量,枚举和定义其他对象.

(三)Application.Contracts

项目主要包含 应用服务 interfaces 和应用层的 数据传输对象 (DTO)。
它用于分离应用层的接口和实现. 这种方式可以将接口项目做为约定包共享给客户端。
它依赖 .Domain.Shared 因为它可能会在应用接口和DTO中使用常量,枚举和其他的共享对象。

(四)Application

项目包含 .Application.Contracts 项目的 应用服务 接口实现.
它依赖 .Application.Contracts 项目, 因为它需要实现接口与使用DTO.
它依赖 .Domain 项目,因为它需要使用领域对象(实体,仓储接口等)执行应用程序逻辑

(五)EntityFrameworkCore

这是集成EF Core的项目. 它定义了 DbContext 并实现 .Domain 项目中定义的仓储接口
它依赖 .Domain 项目,因为它需要引用实体和仓储接口.

(六)EntityFrameworkCore.DbMigrations

包含解决方案的EF Core数据库迁移. 它有独立的 DbContext 来专门管理迁移.
它依赖 .EntityFrameworkCore 项目,因为它重用了应用程序的 DbContext 配置

(七)DbMigrator

这是一个控制台应用程序,它简化了在开发和生产环境执行数据库迁移的操作.当你使用它时;

  1. 必要时创建数据库(没有数据库时).
  2. 应用未迁移的数据库迁移.
  3. 初始化种子数据(当你需要时).
    它依赖 .EntityFrameworkCore.DbMigrations 项目 (针对EF Core),因为它需要访问迁移文件.
    它依赖 .Application.Contracts 项目,因为它需要访问权限定义在初始化种子数据时为管理员用户赋予所有权限.

(八) HttpApi

用于定义API控制器。大多数情况下,你不需要手动定义API控制器,因为ABP的动态API功能会根据你的应用层自动创建API控制器. 但是,如果你需要编写API控制器,那么它是最合适的地方.
它依赖 .Application.Contracts 项目,因为它需要注入应用服务接口.

(九)HttpApi.Client

定义C#客户端代理使用解决方案的HTTP API项目. 可以编辑共享给第三方客户端,使其轻松的在DotNet应用程序中使用你的HTTP API(其他类型的应用程序可以手动或使用其平台的工具来使用你的API).
ABP有动态 C# API 客户端功能,所以大多数情况下你不需要手动的创建C#客户端代理.
.HttpApi.Client.ConsoleTestApp 项目是一个用于演示客户端代理用法的控制台应用程序.
它依赖 .Application.Contracts 项目,因为它需要使用应用服务接口和DTO.
如果你不需要为API创建动态C#客户端代理,可以删除此项目和依赖项

(十)Web

包含应用程序的用户界面(UI).如果使用ASP.NET Core MVC UI, 它包括Razor页面,javascript文件,样式文件,图片等…
包含应用程序主要的 appsettings.json 配置文件,用于配置数据库连接字符串和应用程序的其他配置
它依赖 .HttpApi 项目,因为UI层需要使用解决方案的API和应用服务接口.

※ 简单理解:
Application: 展示给前端的UI接口,使用Swagger的就非常直观,也方便调试
Contract:类的接口存放的地方,也存放Dto的文件,一般用在IOC依赖注入
DbMigrator:初始化数据库层,基本上第一次初始化后,很少用到了
Domain:实体领域层,对应着数据库中的表,这里存放仓储的类接口或者Eto
Domain Shared:可以理解为公共类,model,Core,consts,unities
Ef Core:仓储层,以前的DbLayer层,这里使用DbContext,可以自定义仓储
Ef Core Migrations:结合Domain的实体生成的数据库迁移文件,熟悉命令
HttpApi:自定义的API接口,API Controller,这里也很少用到
HttpApi.Client:客户端API,对前端非常友好
Host:启动项,资源存放的地方

分块去理解,大致可以这样:
Application+Contract+HttpApi:展示层
Domain+DomainShared:数据领域层
EfCore+Migrations:仓储领域层
其他暂时可以理解为辅助层,对内数据库初始化,对外客户端展示API。
.NET Core之ABP vNext 开发实战(三) 熟悉项目构造

上一篇:十、Abp vNext 基础篇丨权限


下一篇:八、Abp vNext 基础篇丨标签聚合功能