当前位置:网站首页>ABP 学习解决方案中的项目以及依赖关系
ABP 学习解决方案中的项目以及依赖关系
2022-07-01 06:06:00 【旧时量刑】
.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
边栏推荐
- 3D printer threading: five simple solutions
- In win10 and win11, the scroll direction of Elan touch panel is reversed, and "double finger click to open the right-click menu" and "double finger scroll" are started“
- 相同区域 多源栅格数据 各个像元行列号一致,即行数列数相同,像元大小相同
- MySQL怎么存储emoji?
- Advanced drawing skills of Excel lecture 100 (1) - use Gantt chart to show the progress of the project
- Oracle create user + Role
- 从诺奖知“边缘计算”的未来!
- Ucosiii --- engineering transplantation
- freeswitch拨打分机号
- Pla ne colle pas sur le lit: 6 solutions simples
猜你喜欢

One of the characteristic agricultural products that make Tiantou village, Guankou Town, Xiamen into a "sweet" village is

Skywalking integrated Nacos dynamic configuration

How to add a gourd pie plate

It's not that you have a bad mind, but that you haven't found the right tool

El tooltip in the table realizes line breaking display

69 cesium code datasource loading geojson

健康照明中应用的LED照明灯

Scope data export mat

Infinite horizontal marble game

Seven major technical updates that developers should pay most attention to on build 2022
随机推荐
云盘里资料被和谐了,怎么办?
π disk, turning your computer into a personal private cloud
表格中el-tooltip 实现换行展示
SOE空间分析服务器 MySQL以及PostGres的地理空间库PostGIS防注入攻击
穿越派·派盘 + 思源笔记 = 私人笔记本
SystemVerilog学习-09-进程间同步、通信和虚方法
OpenGL ES: (4) EGL API详解 (转)
Fragment upload and breakpoint resume
Transformer le village de tiantou en un village de betteraves sucrières
Call us special providers of personal cloud services for College Students
3D打印机穿线:5种简单的解决方案
excel動態圖錶
栈题目:解析布尔表达式
芯片,建立在沙粒上的帝国!
让厦门灌口镇田头村变甜头村的特色农产品之一是蚂蚁新村
SystemVerilog学习-10-验证量化和覆盖率
2022 年面向初学者的 10 大免费 3D 建模软件
Make Tiantou village sweet. Is Xianjing taro or cabbage the characteristic agricultural product of Tiantou Village
srpingboot security demo
Scope data export mat