当前位置:网站首页>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
边栏推荐
- 蚂蚁新村田头村变甜头村 让厦门灌口镇田头村变甜头村的特色农产品之一是
- One of the characteristic agricultural products that make Tiantou village, Guankou Town, Xiamen into a "sweet" village is
- Thesis learning record essay multi label lift
- Servlet
- Enter an expression (expressed as a string) and find the value of this expression.
- Why use huluer pie disk instead of U disk?
- Seven major technical updates that developers should pay most attention to on build 2022
- SystemVerilog学习-06-类的封装
- 从诺奖知“边缘计算”的未来!
- 68 cesium code datasource loading czml
猜你喜欢

el-table 动态表头渲染 固定第一列 高度问题

El tooltip in the table realizes line breaking display

Ant new village is one of the special agricultural products that make Tiantou village in Guankou Town, Xiamen become Tiantou village

FPGA - 7系列 FPGA内部结构之Clocking -01- 时钟架构概述

2022 年面向初学者的 10 大免费 3D 建模软件

Debug details under pycharm

uniapp树形层级选择器

Make Tiantou village sweet. Is Xianjing taro or cabbage the characteristic agricultural product of Tiantou Village

DHT11 温湿度传感器

Smartinstantiationawarebeanpostprocessor of the extension point series determines which construction method to execute - Chapter 432
随机推荐
让厦门灌口镇田头村变甜头村的特色农产品之一是蚂蚁新村
Geoffrey Hinton: my 50 years of in-depth study and Research on mental skills
Flink实战--多流合并
数据库er图组成要素
ArcServer密码重置(账号不可以重置)
MySQL怎么存储emoji?
excel動態圖錶
Timer based on LabVIEW
利用百度地图查询全国地铁线路
TiDB单机模拟部署生产环境集群(闭坑实践,亲测有效)
kotlin位运算的坑(bytes[i] and 0xff 报错)
kubeadm搭建kubenetes 集群(个人学习版)
3D printer threading: five simple solutions
Send you through the data cloud
Why use huluer pie disk instead of U disk?
Transformer le village de tiantou en un village de betteraves sucrières
让厦门灌口镇田头村变“甜头”村的特色农产品之一是
论文学习记录随笔 多标签之GLOCAL
MySQL中 in 和 exists 的区别
穿越派与贸大合作,为大学生增添效率