ABP 学习解决方案中的项目以及依赖关系

.Domain.Share 项目

该项目包含常量、枚举和其他对象,这些对象实际上是领域层的一部分,但是解决方案中所有层/项目都会使用到。例如实体类Book中用到的枚举BookType、常量BookConsts 都适合放在这个项目要中。

该项目不依赖解决方案中的其他项目,其他项目简介或直接依赖该项目该项目

.Domain 项目

解决方案中的领域层,包含 实体,集合根,领域服务,值类型,仓储接口和解决方案的其他领域对象。例如实体和IBookRepository类都适合放在这个项目中

它依赖.Domain.Share 因为他可能会在应用接口和DTO中使用常量、枚举或者其他的共享对象。

.Application.Contracts 项目

 项目主要包含应用服务interfaces和应用层的数据传输对象DTO,它用于分离应用层的接口和实现,这种方式可以将接口项目作为约定包共享给客户端。

例如 IBookAppService接口和BookCreationDto类都适合放在这个项目中

它依赖与.Domain.Share因为 他可能会在应用接口和DTO中使用常量、枚举或者其他的共享对象。

.Application 项目

项目包含 .Application.COntracts项目的应用服务接口的实现。

例如BookAppService类适合放在这个项目中

它依赖.Application.Cantracts项目,因为它需要实现接口与使用DTO                                    它依赖与.Domain.Share因为 他可能会在应用接口和DTO中使用常量、枚举或者其他的共享对象。

.EntityFrameworkCore 项目

集成EF Core项目,定义了DbContext并实现.Domain项目中定义的仓储接口 

它依赖.Domain项目。因为它需要引用实体和仓储接口 

.EntityFrameworkCore.DbMigrations项目

包含解决方案中EF Core的数据库迁移,它有独立的DbContext来专门管理迁移

ABP是一个模块化的框架,理想的设计是让每个模块都有自己的DbContext类,这是用于迁移的DbContext就会发挥作用,他将所有的DbContext配置统一到单个模型中以维护单个数据库的模式,对于更高级的场景,程序可以拥有多个数据库(每个数据库有一个或多个模块表)和多个迁移DbContext(每个都维护不同的数据库模式)

需要注意,迁移 DbContext 仅用于数据库迁移,而不在运行时使用.

  • 它依赖 .EntityFrameworkCore 项目,因为它重用了应用程序的 DbContext 配置 

.DbMigrator项目

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

必须时创建数据库(没有数据库时)

应用未迁移的数据迁移

初始化种子数据(当你需要时) 

虽然创建数据库和应用迁移似乎只对关系数据库有用,但即使你选择NoSQL数据库提供程序(如MongoDB),也会生成此项目. 这时,它会为应用程序提供必要的初始数据.

  • 它依赖 .EntityFrameworkCore.DbMigrations 项目 (针对EF Core),因为它需要访问迁移文件.
  • 它依赖 .Application.Contracts 项目,因为它需要访问权限定义在初始化种子数据时为管理员用户赋予所有权限.

 

 .HttpApi项目

用于定义API控制器

大多数情况下,你不需要手动定义API控制器,因为ABP的动态API功能会根据的应用层自动创建API控制器,但是如果你需要编写API控制器,那么它是最合适的地方

它依赖.Application.Contracts项目,因为它需要注入应用服务接口

 .HttpApi.Client项目

定义C#客户端代理使用解决方案中的Http API项目,可以将上编辑共享给第三方客户端,使其轻松的在DotNet应用程序中使用你的http API

ABP有动态 C# API 客户端功能,所以大多数情况下你不需要手动的创建C#客户端代理.

.HttpApi.Client.ConsoleTestApp 项目是一个用于演示客户端代理用法的控制台应用程序.

  • 它依赖 .Application.Contracts 项目,因为它需要使用应用服务接口和DTO.

如果你不需要为API创建动态C#客户端代理,可以删除此项目和依赖项

.Web项目

 包含应用程序的用户界面(UI)。如果使用ASP.NET Core MVC UI,包含应用程序主要的 appsettings.json 配置文件,用于配置数据库连接字符串和应用程序的其他配置

依赖 .HttpApi 项目,因为UI层需要使用解决方案的API和应用服务接口. 

.分层结构

如果你选择了 ASP.NET core UI 并指定了 --tiered选项,CLI会创建分层解决方案,分层结构的目的是将Web应用程序和Http Api部署到不同的服务器

参考文件:Startup Templates/Application | Documentation Center | ABP.IO 

写这篇文章的目的是为了方便自己学习ABP

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值