当前位置:网站首页>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
边栏推荐
- OpenGL es: (4) detailed explanation of EGL API (Continued)
- SystemVerilog学习-10-验证量化和覆盖率
- Through cooperation with the University of international trade, we can increase efficiency for college students
- PLA不粘贴在床上:6个简单的解决方案
- Record currency in MySQL
- 表格中el-tooltip 实现换行展示
- 千万不要把笔记视频乱放!
- 机械臂速成小指南(六):步进电机驱动器
- 健康照明中应用的LED照明灯
- 穿越派·派盘 + 思源笔记 = 私人笔记本
猜你喜欢

Transformer le village de tiantou en un village de betteraves sucrières

Preliminary level of C language -- selected good questions on niuke.com

蚂蚁新村田头村变甜头村 让厦门灌口镇田头村变甜头村的特色农产品之一是

Geoffrey Hinton: my 50 years of in-depth study and Research on mental skills

论文学习记录随笔 多标签之LIFT

This is the necessary software for college students 𞓜 knowledge management

Infinite horizontal marble game

SystemVerilog学习-08-随机约束和线程控制

excel初级应用案例——杜邦分析仪

uniapp树形层级选择器
随机推荐
Code shoe set - mt3114 · interesting balance - explain it with examples
PLA不粘貼在床上:6個簡單的解决方案
不是你脑子不好用,而是因为你没有找到对的工具
穿越派·派盘 + Mountain Duck = 数据本地管理
Dear pie users, I want to confess to you!
芯片,建立在沙粒上的帝国!
skywalking集成nacos动态配置
Cjc8988 Low Power Stereo codec with 2 stereo headphone drivers
Save data in browser to local file
OpenGL ES: (5) OpenGL的基本概念、OpenGL ES 在屏幕产生图片的过程、OpenGL管线(pipeline)
Through cooperation with the University of international trade, we can increase efficiency for college students
This is the necessary software for college students 𞓜 knowledge management
jdbc 数据库操作
这才是大学生必备软件 | 知识管理
Database problems, how to optimize Oracle SQL query statements faster and more efficient
3D打印机穿线:5种简单的解决方案
OpenGL ES: (4) EGL API详解 (转)
How to transmit and share 4GB large files remotely in real time?
Codeforces Round #803 (Div. 2)vp
What if the data in the cloud disk is harmonious?