应用程序启动模板是基于领域驱动设计(DDD)分层的应用程序结构.
在这篇文档中详细介绍了解决方案结构和项目,如果你想快速入门,请遵循以下指南:
参阅ASP.NET Core MVC 模板入门创建此模板的新解决方案并运行它.
参阅ASP.NET Core MVC 教程学习使用此模板开发应用程序.
入门文档 介绍了如何在几分钟内创建一个新的应用程序.
应用程序开发教程 学习使用此模板开发应用程序.
你可以使用ABP CLI创建基于此启动模板的新项目,或者你也可以在入门页面创建并下载项目. 在这里我们使用CLI创建新项目.
如果未安装ABP CLI,第一步是安装ABP CLI
dotnet tool install -g Volo.Abp.Cli
然后使用 abp new
命令在空文件夹中创建新解决方案:
abp new Acme.BookStore -t app
Acme.BookStore
是解决方案的名称, 如YourCompany.YourProduct. 你可以使用单级或多级名称.-t
或 --template
选项). 示指定模板时,默认模板是app
.模板提供了多个UI框架
mvc
: ASP.NET Core MVC Razor页面 (默认)angular
: Angular UI使用 -u
或 --ui
选择指定UI框架:
abp new Acme.BookStore -u angular
指定数据库提供程序
MVC
模板支持以下数据库提供程序:
EF:
Entity Framework Core (默认)mongodb:
MongoDB使用 -d
(或 --database-provider
) 选项指定数据库提供程序:
abp new Acme.BookStore -d mongodb
根据命令的选项,会创建略有不同的解决方案结构。
如果未指定附加选项,你会得到如下所示的解决方案:
项目组织在src
和test
文件夹中。src
文件夹包含实际应用程序,该应用程序基于前面提到的DDD原则进行分层。下图展示了解决方案的层和项目的依赖关系:
下面介绍解决方案中的项目及依赖关系。
项目包含常量,枚举和其他对象,这些对象实际上是领域层的一部分,但是解决方案中所有的层/项目中都会使用到。
例如 BookType
枚举和 BookConsts
类 (可能是 Book
实体用到的常数字段,像MaxNameLength
)都适合放在这个项目中。
解决方案的领域层. 它主要包含 实体, 集合根, 领域服务, 值类型, 仓储接口 和解决方案的其他领域对象。
例如 Book
实体和 IBookRepository
接口都适合放在这个项目中。
.Domain.Shared
项目,因为项目中会用到它的一些常量,枚举和定义其他对象。项目主要包含 应用服务 interfaces 和应用层的 数据传输对象 (DTO)。它用于分离应用层的接口和实现. 这种方式可以将接口项目做为约定包共享给客户端。
例如 IBookAppService
接口和 BookCreationDto
类都适合放在这个项目中。
.Domain.Shared
因为它可能会在应用接口和DTO中使用常量,枚举和其他的共享对象。项目包含 .Application.Contracts
项目的 应用服务 接口实现。
例如 BookAppService
类适合放在这个项目中。
.Application.Contracts
项目, 因为它需要实现接口与使用DTO。.Domain
项目,因为它需要使用领域对象(实体,仓储接口等)执行应用程序逻辑。这是集成EF Core的项目. 它定义了 DbContext
并实现 .Domain
项目中定义的仓储接口。
.Domain
项目,因为它需要引用实体和仓储接口。只有在你使用了EF Core做为数据库提供程序时,此项目才会可用. 如果选择的是其他数据库提供程序那么项目的名称会改变
这是一个控制台应用程序,它简化了在开发和生产环境执行数据库迁移的操作.当你使用它时;