ABP实践(⼀)创建ABP项⽬
ABP是⼀个开源应⽤程序框架,专注于基于ASP.NET Core的Web应⽤程序开发,但也⽀持开发其他类型的应⽤程序.ABP整合了开发中的各种技术
新版的ABP需要依赖.NET 6的环境,需要先安装对应的SDK
⼀.安装ABP
dotnet tool install -g Volo.Abp.Cli
⼆.创建项⽬
这⾥使⽤ABP CLI来进⾏创建
abp new ABP.Demo -u mvc -d ef -dbms MySQL -o "D:\ABPDemo"
new的常⽤命令
--output-folder或者-o: 指定输出⽂件夹,默认是当前⽬录.
--ui或者-u: 指定ui框架.默认mvc框架.其他选项 (mvc、angular、blazor、none)
--database-provider或者-d: 指定数据库提供程序.默认是ef.其他选项(ef、mongodb)
-dbms:指定数据库类型
三.⽣成的代码结构
项⽬结构
项⽬组织在src和test⽂件夹中. src⽂件夹包含实际应⽤程序,该应⽤程序基于前⾯提到的原则进⾏分层. 下图展⽰了解决⽅案的层和项⽬的依赖关系:
Domain.Shared 项⽬
项⽬包含常量,枚举和其他对象,这些对象实际上是领域层的⼀部分,但是解决⽅案中所有的层/项⽬中都会使⽤到.
该项⽬不依赖解决⽅案中的其他项⽬. 其他项⽬直接或间接依赖该项⽬
Domain 项⽬
解决⽅案的领域层. 它主要包含实体, 集合根, 领域服务, 值类型, 仓储接⼝和解决⽅案的其他领域对象.
它依赖.Domain.Shared项⽬,因为项⽬中会⽤到它的⼀些常量,枚举和定义其他对象.
Application.Contracts 项⽬
项⽬主要包含应⽤服务 interfaces 和应⽤层的数据传输对象 (DTO). 它⽤于分离应⽤层的接⼝和实现. 这种⽅式可以将接⼝项⽬做为约定包共享给客户端.
它依赖.Domain.Shared因为它可能会在应⽤接⼝和DTO中使⽤常量,枚举和其他的共享对象.
Application 项⽬
项⽬包含.Application.Contracts项⽬的应⽤服务接⼝实现.
它依赖.Application.Contracts项⽬, 因为它需要实现接⼝与使⽤DTO.
它依赖.Domain项⽬,因为它需要使⽤领域对象(实体,仓储接⼝等)执⾏应⽤程序逻辑.
.EntityFrameworkCore 项⽬
这是集成EF Core的项⽬. 它定义了DbContext并实现.Domain项⽬中定义的仓储接⼝.
它依赖.Domain项⽬,因为它需要引⽤实体和仓储接⼝.
.EntityFrameworkCore.DbMigrations 项⽬
包含解决⽅案的EF Core数据库迁移. 它有独⽴的DbContext来专门管理迁移.(ABP是⼀个模块化的框架,理想的设计是让每个模块都有⾃⼰的DbContext类. 这时⽤于迁移的DbContext就会发挥作⽤. 它将所有的DbContext配置统⼀到单个模型中以维护单个数据库的模式. 对于更⾼级的场景,可以程序可以拥有多个数据库(每个数据库有⼀个或多个模块表)和多个迁移DbContext(每个都维护不同的数据库模式))
它依赖.EntityFrameworkCore项⽬,因为它重⽤了应⽤程序的DbContext配置 .
.DbMigrator 项⽬
必要时创建数据库(没有数据库时).
应⽤未迁移的数据库迁移.
初始化种⼦数据(当你需要时).
它依赖.EntityFrameworkCore.DbMigrations项⽬ (针对EF Core),因为它需要访问迁移⽂件.
它依赖.Application.Contracts项⽬,因为它需要访问权限定义在初始化种⼦数据时为管理员⽤户赋予所有权限.
.HttpApi 项⽬
⽤于定义API控制器.
它依赖.Application.Contracts项⽬,因为它需要注⼊应⽤服务接⼝.
.HttpApi.Client 项⽬
定义C#客户端代理使⽤解决⽅案的HTTP API项⽬. 可以将上编辑共享给第三⽅客户端,使其轻松的在DotNet应⽤程序中使⽤你的HTTP API(其他类型的应⽤程序可以⼿动或使⽤其平台的⼯具来使⽤你的A
PI).
asp查看源码配置ui它依赖.Application.Contracts项⽬,因为它需要使⽤应⽤服务接⼝和DTO.
.Web 项⽬
包含应⽤程序的⽤户界⾯(UI).如果使⽤ASP.NET Core MVC UI, 它包括Razor页⾯,javascript⽂件,样式⽂件,图⽚等...包含应⽤程序主要的appsettings.json配置⽂件,⽤于配置数据库连接字符串和应⽤程序的其他配置
依赖.HttpApi项⽬,因为UI层需要使⽤解决⽅案的API和应⽤服务接⼝.
Test 项⽬
.Domain.Tests⽤于测试领域层.
.Application.Tests⽤于测试应⽤层.
.EntityFrameworkCore.Tests⽤于测试EF Core配置与⾃定义仓储.
.Web.Tests⽤于测试UI(适⽤于ASP.NET Core MVC UI).
.TestBase所有测试项⽬的基础(共享)项⽬.
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论