ABP启动模版项目-前后端不分离
ABP入门教程之Web应用程序
如官方教程所言开始
- 设置开发环境
我们选择用ABP CLI:
1)dotnet tool install -g Volo.Abp.Cli
2)dotnet tool update -g Volo.Abp.Cli
- 创建解决方案
创建模版项目:
1)abp new Acme.BookStore
创建解决方案之后会生成一个可下载文件,下载!
项目解决方案结构:
说明开始
.Web 项目
包含应用程序的用户界面(UI)。如果使用ASP.NET Core MVC UI,它包括Razor页面,javascript文件,样式文件,图片等…
包含应用程序主要的 appsettings.json 配置文件,用于配置数据库连接字符串和应用程序的其他配置
- 依赖 .HttpApi 项目,因为UI层需要使用解决方案的API和应用服务接口。
如果查看 .Web.csproj 源码,你会看到对 .Application 和 .EntityFrameworkCore.DbMigrations 项目的引用。
在编写UI层时实际上不需要这些引用。因为UI层通常不依赖于EF Core或应用层的实现。这个启动模板已经为分层部署做好了准备,API层托管在不同与UI层的服务器中。
但是如果你不选择 --tiered 选项, .Web项目会有这些引用,以便能够将Web,Api和应用层托管在单个应用程序站点。
你可以在表示层中使用领域实体和仓储,但是根据DDD的理论,这被认为是一种不好的做法.
Test 项目
解决方案有多个测试项目,每一层都会有一个:
- .Domain.Tests 用于测试领域层。
- .Application.Tests 用于测试应用层。
- .EntityFrameworkCore.Tests 用于测试EF Core配置与自定义仓储。
- .Web.Tests 用于测试UI(适用于ASP.NET Core MVC UI)。
- .TestBase 所有测试项目的基础(共享)项目。
- 此外, .HttpApi.Client.ConsoleTestApp是一个控制台应用程序(不是自动化测试项目),它用于演示.Net应用程序中HTTP API的用法。
测试项目是用于做集成测试的: - 它完全集成到ABP框架和应用程序的所有服务。
- 如果数据库提供程序是EF Core(Entity Framework
Core),测试项目会使用SQLite内存数据库;如果是MongoDB,它使用Mongo2Go库。 - 授权被禁用,任何的应用服务都可以在测试中轻松调用。
你依然可以编写单元测试,只不过它很难写(因为你需要准备mock/fake对象),但它的运行速度更快(因为只测试单个类并跳过所有初始化程)。
说明结束
- 运行解决方案
确保 .Web 项目是启动项目。 运行应用程序将会在浏览器中打开 login 页面。
输入用户名:admin
密码:1q2w3E* 登录应用程序。
应用程序已启动并正在运行。你可以根据此启动模板开始开发应用程序。
注意,本文运行成功条件:
- VS版本为2022
- NET版本为6.0.201
- 默认项目为XXX.EntityFrameworkCore
- 启动项目为XXX.Web
- 默认数据库为SQLServer