@ -0,0 +1,136 @@ |
|||
# ABP CLI |
|||
|
|||
ABP CLI (命令行接口) 是一个命令行工具,用来执行基于ABP解决方案的一些常见操作. |
|||
|
|||
## Installation |
|||
|
|||
ABP CLI 是一个 [dotnet global tool](https://docs.microsoft.com/en-us/dotnet/core/tools/global-tools). 使用命令行窗口安装: |
|||
|
|||
````bash |
|||
dotnet tool install -g Volo.Abp.Cli |
|||
```` |
|||
|
|||
更新最新版本: |
|||
|
|||
````bash |
|||
dotnet tool update -g Volo.Abp.Cli |
|||
```` |
|||
|
|||
## Commands |
|||
|
|||
### new |
|||
|
|||
生成基于ABP[启动模板](Startup-Templates/Index.md)的新解决方案. |
|||
|
|||
基本用法: |
|||
|
|||
````bash |
|||
abp new <解决方案名称> [options] |
|||
```` |
|||
|
|||
示例: |
|||
|
|||
````bash |
|||
abp new Acme.BookStore |
|||
```` |
|||
|
|||
* Acme.BookStore是解决方案的名称. |
|||
* 常见的命名方式类似于 *YourCompany.YourProject*. 不过你可以使用自己喜欢的方式,如 *YourProject* (单级命名空间) 或 *YourCompany.YourProduct.YourModule* (三级命名空间). |
|||
|
|||
#### Options |
|||
|
|||
* `--template` 或 `-t`: 指定模板. 默认的模板是 `mvc`.可用的模板有: |
|||
* `mvc` (默认): ASP.NET Core [MVC应用程序模板](Startup-Templates/Mvc.md). 其他选项: |
|||
* `--database-provider` 或 `-d`: 指定数据库提供程序. 默认提供程序是 `ef`. 可用的提供程序有: |
|||
* `ef`: Entity Framework Core. |
|||
* `mongodb`: MongoDB. |
|||
* `--tiered`: 创建分层解决方案,Web和Http Api层在物理上是分开的. 如果未指定会创建一个分层的解决方案, 此解决方案没有那么复杂,适合大多数场景. |
|||
* `mvc-module`: ASP.NET Core [MVC模块模板](Startup-Templates/Mvc-Module.md). 其他选项: |
|||
* `--no-ui`: 不包含UI. 仅创建服务模块 (也称为微服务 - 没有UI). |
|||
* `--output-folder` 或 `-o`: 指定输出文件夹,默认是当前目录. |
|||
|
|||
### add-package |
|||
|
|||
添加新的ABP包到项目中 |
|||
|
|||
* 添加nuget包做为项目的依赖项目. |
|||
* 添加 `[DependsOn(...)]` attribute到项目的模块类 (请参阅 [模块开发文档](Module-Development-Basics.md)). |
|||
|
|||
> 需要注意的是添加的模块可能需要额外的配置,通常会在包的文档中指出. |
|||
|
|||
基本用法: |
|||
|
|||
````bash |
|||
abp add-package <包名> [options] |
|||
```` |
|||
|
|||
示例: |
|||
|
|||
```` |
|||
abp add-package Volo.Abp.MongoDB |
|||
```` |
|||
|
|||
* 示例中将Volo.Abp.MongoDB包添加到项目中. |
|||
|
|||
#### Options |
|||
|
|||
* `--project` 或 `-p`: 指定项目 (.csproj) 路径. 如果未指定,Cli会尝试在当前目录查找.csproj文件. |
|||
|
|||
### add-module |
|||
|
|||
通过查找模块的所有包,查找解决方案中的相关项目,并将每个包添加到解决方案中的相应项目,从而将多包模块添加到解决方案中. |
|||
|
|||
> 由于分层,不同的数据库提供程序选项或其他原因,业务模块通常由多个包组成. 使用`add-module`命令可以大大简化向模块添加模块的过程. 但是每个模块可能需要一些其他配置,这些配置通常在相关模块的文档中指出. |
|||
|
|||
基本用法: |
|||
|
|||
````bash |
|||
abp add-module <模块名称> [options] |
|||
```` |
|||
|
|||
示例: |
|||
|
|||
```bash |
|||
abp add-module Volo.Blogging |
|||
``` |
|||
|
|||
* 示例中将Volo.Blogging模块添加到解决方案中. |
|||
|
|||
#### Options |
|||
|
|||
* `--solution` 或 `-s`: 指定解决方案 (.sln) 路径. 如果未指定,CLI会尝试在当前目录中寻找.sln文件. |
|||
* `--skip-db-migrations`: 对于EF Core 数据库提供程序,它会自动添加新代码的第一次迁移 (`Add-Migration`) 并且在需要时更新数据库 (`Update-Database`). 指定此选项可跳过此操作. |
|||
|
|||
### update |
|||
|
|||
更新所有ABP相关的包可能会很繁琐,框架和模块都有很多包. 此命令自动将解决方案或项目中所有ABP相关的包更新到最新版本. |
|||
|
|||
用法: |
|||
|
|||
````bash |
|||
abp update [options] |
|||
```` |
|||
|
|||
* 如果你的文件夹中有.sln文件,运行命令会将解决方案中所有项目ABP相关的包更新到最新版本. |
|||
* 如果你的文件夹中有.csproj文件,运行命令会将项目中所有ABP相关的包更新到最新版本. |
|||
|
|||
#### Options |
|||
|
|||
* `--include-previews` 或 `-p`: 将预览版, 测试版本 和 rc 包 同时更新到最新版本. |
|||
|
|||
### help |
|||
|
|||
CLI的基本用法信息. |
|||
|
|||
用法: |
|||
|
|||
````bash |
|||
abp help [命令名] |
|||
```` |
|||
|
|||
示例: |
|||
|
|||
````bash |
|||
abp help # 显示常规帮助. |
|||
abp help new # 显示有关 "New" 命令的帮助. |
|||
```` |
|||
@ -0,0 +1,3 @@ |
|||
# Data Seeding |
|||
|
|||
TODO |
|||
@ -1,68 +1,32 @@ |
|||
# ABP 文档 |
|||
|
|||
> 翻译来自[cnAbp](https://github.com/cnabp)组织,中文网会持续跟进翻译,目前Abp vNext的英文文档还未完成,大家对整体框架没有深入的理解,翻译难免存在一些问题.敬请见谅.😀 |
|||
> 中文文档翻译来自[cnAbp](https://github.com/cnabp)组织,Abp中文网会持续跟进翻译,目前Abp vNext的英文文档还未完成,大家对整体框架没有深入的理解,翻译难免存在一些问题.敬请见谅.😀 |
|||
|
|||
## 目录 |
|||
ABP是一个**开源应用程序框架**,专注于基于ASP.NET Core的Web应用程序开发,但也支持开发其他类型的应用程序. |
|||
|
|||
* 入门 |
|||
* 从启动模板开始 |
|||
* [ASP.NET Core MVC 模板](Getting-Started-AspNetCore-MVC-Template.md) |
|||
* 从空项目开始 |
|||
* [使用Console Application](Getting-Started-Console-Application.md) |
|||
* [使用 ASP.NET Core Web Application](Getting-Started-AspNetCore-Application.md) |
|||
* 教程 |
|||
* 应用开发 |
|||
* [使用 ASP.NET Core MVC](Tutorials/AspNetCore-Mvc/Part-I.md) |
|||
* 基础知识 |
|||
* [依赖注入](Dependency-Injection.md) |
|||
* AutoFac 集成 |
|||
* [虚拟文件系统](Virtual-File-System.md) |
|||
* [本地化](Localization.md) |
|||
* [异常处理](Exception-Handling.md) |
|||
* 验证 |
|||
* 授权 |
|||
* 缓存 |
|||
* 审计 |
|||
* 设置管理 |
|||
* 对象映射 |
|||
* AutoMapper 集成 |
|||
* 事件 |
|||
* 本地 Event Bus |
|||
* 分布式 Event Bus |
|||
* RabbitMQ 集成 |
|||
* 服务 |
|||
* 对象序列化 |
|||
* JSON序列化 |
|||
* 邮件 |
|||
* GUIDs |
|||
* 线程 |
|||
* 定时 |
|||
* [多租户](Multi-Tenancy.md) |
|||
* 模块开发 |
|||
* [基础](Module-Development-Basics.md) |
|||
* 模块插件 |
|||
* [最佳实践](Best-Practices/Index.md) |
|||
* 领域驱动设计 |
|||
* 领域层 |
|||
* [实体&聚合根](Entities.md) |
|||
* 值对象 |
|||
* [仓储](Repositories.md) |
|||
* 领域服务 |
|||
* 规约 |
|||
* 应用服务层 |
|||
* 应用服务 |
|||
* 数据传输对象(DTO) |
|||
* 工作单元 |
|||
* ASP.NET Core MVC |
|||
* API 版本控制 |
|||
* 用户界面 |
|||
* [客户端包管理](AspNetCore/Client-Side-Package-Management.md) |
|||
* [捆绑&压缩](AspNetCore/Bundling-Minification.md) |
|||
* [Tag Helpers](Tag-Helpers.md) |
|||
* [主题](AspNetCore/Theming.md) |
|||
* 后台服务 |
|||
* [后台作业](Background-Jobs.md) |
|||
* 数据访问 |
|||
* [Entity Framework Core 集成](Entity-Framework-Core.md) |
|||
* [MongoDB 集成](MongoDB.md) |
|||
* 测试 |
|||
浏览左侧导航菜单以深入了解文档. |
|||
|
|||
## 项目状态 |
|||
|
|||
ABP是开源[ASP.NET Boilerplate](https://aspnetboilerplate.com/)框架的**下一代框架**, 它目前处于早期预览阶段,尚未准备好在生产中使用. 文档仍在进行中,远未完成. |
|||
|
|||
对于短期和生产级应用程序, 建议使用[ASP.NET Boilerplate](https://aspnetboilerplate.com/)框架,该框架具有丰富的功能集,成熟,积极维护和最新. |
|||
|
|||
## 入门 |
|||
|
|||
使用ABP开发新项目的最简单方法是使用启动模板: |
|||
|
|||
* [ASP.NET Core MVC 模板](Getting-Started-AspNetCore-MVC-Template.md) |
|||
|
|||
如果您想从头开始(使用空项目),请手动安装ABP框架并使用以下教程: |
|||
|
|||
* [控制台应用程序](Getting-Started-Console-Application.md) |
|||
* [ASP.NET Core Web 应用程序](Getting-Started-AspNetCore-Application.md) |
|||
|
|||
## 源码 |
|||
|
|||
ABP托管在GitHub上, 参见[源代码](https://github.com/abpframework/abp). |
|||
|
|||
## 贡献代码 |
|||
|
|||
ABP是一个社区驱动的开源项目.如果你想成为该项目的一部分,请参阅[贡献指南](Contribution/Index.md). |
|||
|
|||
@ -0,0 +1,8 @@ |
|||
# 启动模板 |
|||
|
|||
虽然你可以从一个空项目开始并手动添加所需的包,但启动模板可以非常轻松,舒适地使用ABP框架启动新的解决方案. |
|||
|
|||
单击下面列表中的名称以查看相关启动模板的文档: |
|||
|
|||
* [**mvc**](Mvc.md): ASP.NET Core MVC应用程序模板. |
|||
* [**mvc-module**](Mvc-Module.md): ASP.NET Core MVC模块/服务模板. |
|||
@ -0,0 +1,6 @@ |
|||
# MVC Module 启动模板 |
|||
|
|||
TODO |
|||
|
|||
|
|||
|
|||
@ -0,0 +1,183 @@ |
|||
# MVC应用程序启动模板 |
|||
|
|||
## 介绍 |
|||
|
|||
MVC应用程序启动模板是基于[领域驱动设计](../Domain-Driven-Design.md)(DDD)分层(或根据偏好分层)的应用程序结构. |
|||
|
|||
## 如何开始 |
|||
|
|||
你要以使用[ABP CLI](../CLI.md)创建基于此启动模板的新项目,或者你也可以在[入门](https://abp.io/get-started)页面创建并下载项目. 在这里我们使用CLI创建新项目. |
|||
|
|||
首先根据[文档](../CLI.md)中的说明安装ABP CLI. 然后使用 `abp new` 命令在空文件夹中创建新解决方案: |
|||
|
|||
````bash |
|||
abp new Acme.BookStore -t mvc |
|||
```` |
|||
|
|||
* `Acme.BookStore` 是解决方案的名称, 命名样式如 *YourCompany.YourProduct*. 更多的命名样式请参阅[CLI文档](../CLI.md). |
|||
* 示例中指定了启动模板 (`-t` 或 `--template` 选项). 不过 `mvc` 是默认模板,即使未指定也会创建 `MVC` 的模板项目. |
|||
|
|||
### 指定数据库提供程序 |
|||
|
|||
`MVC`模板支持以下数据库提供程序: |
|||
|
|||
- `ef`: Entity Framework Core (默认) |
|||
- `mongodb`: MongoDB |
|||
|
|||
使用 `-d` (或 `--database-provider`) 指定数据库提供程序: |
|||
|
|||
````bash |
|||
abp new Acme.BookStore -t mvc -d mongodb |
|||
```` |
|||
|
|||
### 创建分层解决方案 |
|||
|
|||
使用 `--tiered` 选项创建分层解决方案, Web与WebApi层在物理上是分开的. 如果未指定,CLI会创建一个分层的解决方案,这个解决方案没有那么复杂,适合大多数场景. |
|||
|
|||
````bash |
|||
abp new Acme.BookStore --tiered |
|||
```` |
|||
|
|||
有关分层的方法,请参阅下面的"分层结构"部分. |
|||
|
|||
## 解决方案结构 |
|||
|
|||
根据命令的选项,会创建略有不同的解决方案结构. |
|||
|
|||
### 默认结构 |
|||
|
|||
如果未指定选项,你会得到如下所示的解决方案: |
|||
|
|||
 |
|||
|
|||
项目组织在`src`和`test`文件夹中. `src`文件夹包含实际应用程序,该应用程序基于前面提到的[DDD](../Domain-Driven-Design.md)原则进行分层. |
|||
|
|||
-------------------- |
|||
|
|||
**TODO: 添加一些图来说明项目之间的依赖关系.** |
|||
|
|||
------------------ |
|||
|
|||
下面介绍解决方案中的项目. |
|||
|
|||
#### .Domain 项目 |
|||
|
|||
解决方案的领域层. 它主要包含 [实体, 集合根](../Entities.md), [领域服务](../Domain-Services.md), [值类型](../Value-Types.md), [仓储接口](../Repositories.md) 和解决方案的其他领域对象. |
|||
|
|||
例如 `Book` 实体和 `IBookRepository` 接口都适合放在这个项目中. |
|||
|
|||
* 它依赖 `.Domain.Shared` 项目,因为项目中会用到它的一些常量,枚举和定义其他对象. |
|||
|
|||
#### .Domain.Shared 项目 |
|||
|
|||
项目包含常量,枚举和其他对象, 这些对象实际上是领域层的一部分,但是解决方案中所有的层/项目中都会使用到. |
|||
|
|||
例如 `BookType` 枚举和 `BookConts` 类 (可能是 `Book` 实体用到的常数字段,像`MaxNameLength`)都适合放在这个项目中. |
|||
|
|||
该项目不会依赖解决方案中的其他项目. |
|||
|
|||
#### .Application.Contracts 项目 |
|||
|
|||
项目主要包含 [应用服务](../Application-Services.md) **interfaces** 和应用层的 [数据传输对象](../Data-Transfer-Objects.md) (DTO). 它用于分离应用层的接口和实现. 这种方式可以将接口项目做为约定包共享给客户端. |
|||
|
|||
* 它依赖 `.Domain.Shared` 因为它可能会在应用接口和DTO中使用常量,枚举和其它的共享对象. |
|||
|
|||
#### .Application 项目 |
|||
|
|||
项目包含 `.Application.Contracts` 项目的 [应用服务](../Application-Services.md) 接口实现. |
|||
|
|||
* 它依赖 `.Application.Contracts` 项目, 因为它需要实现接口与使用DTO. |
|||
* 它依赖 `.Domain` 项目,因为它需要使用领域对象(实体,仓储接口等)执行应用程序逻辑. |
|||
|
|||
#### .EntityFrameworkCore 项目 |
|||
|
|||
这是集成EF Core的项目. 它定义了 `DbContext` 并实现 `.Domain` 项目中定义的仓储接口. |
|||
|
|||
* 它依赖 `.Domain` 项目,因为它需要引用实体和仓储接口. |
|||
|
|||
> 只有在你使用了EF Core做为数据库提供程序时,此项目才会可用. |
|||
|
|||
#### .EntityFrameworkCore.DbMigrations 项目 |
|||
|
|||
包含解决方案的EF Core数据库迁移. 它有独立的 `DbContext` 来专门管理迁移. |
|||
|
|||
ABP是一个模块化的框架,理想的设计是让每个模块都有自己的 `DbContext` 类. 这时用于迁移的 `DbContext` 就会发挥作用. 它将所有的 `DbContext` 配置统一到单个模型中以维护单个数据库的模式. |
|||
|
|||
需要注意,迁移 `DbContext` 仅用于数据库迁移,而不在*运行时*使用. |
|||
|
|||
* 它依赖 `.EntityFrameworkCore` 项目,因为它重用了应用程序的 `DbContext` 配置 . |
|||
|
|||
> 只有在你使用了EF Core做为数据库提供程序时,此项目才会可用. |
|||
|
|||
#### .DbMigrator 项目 |
|||
|
|||
这是一个控制台应用唾弃,它简化了在开发和生产环境执行数据库迁移的操作.当你使用它时; |
|||
|
|||
* 必要时创建数据库. |
|||
* 应用数据库迁移. |
|||
* 初始化种子数据. |
|||
|
|||
> 这个项目有自己的 `appsettings.json` 文件. 所以如果要更改数据库连接字符串,请记得也要更改此文件. |
|||
|
|||
初始化种子数据很很要,ABP具有模块化的种子数据基础设施. 种子数据的更多信息,请参阅[文档](../Data-Seeding.md). |
|||
|
|||
虽然创建数据库和应用迁移似乎只对关系数据库有用,但即使您选择NoSQL数据库提供程序(如MongoDB),也会生成此项目. 这时,它会为应用程序提供必要的初始数据. |
|||
|
|||
* 它依赖 `.EntityFrameworkCore.DbMigrations` 项目 (针对EF Core),因为它需要访问迁移文件. |
|||
* 它依赖 `.Application.Contracts` 项目,因为它需要访问权限定义在初始化种子数据时为管理员用户赋予权限. |
|||
|
|||
#### .HttpApi 项目 |
|||
|
|||
用于定义API控制器. |
|||
|
|||
大多数情况下,你不需要手动定义API控制器,因为ABP的[动态API](../AspNetCore/Auto-API-Controllers.md)功能会根据你的应用层自动创建API控制器. 但是,如果你需要编写API控制器,那么它是最合适的地方. |
|||
|
|||
* 它依赖 `.Application.Contracts` 项目,因为它需要注入应用服务接口. |
|||
|
|||
#### .HttpApi.Client 项目 |
|||
|
|||
定义C#客户端代理使用解决方案的HttpAPI项目. 可以将上编辑共享给第三方客户端,让它们轻松的在DotNet应用程序中使用你的httiApi. |
|||
|
|||
`.HttpApi.Client.ConsoleTestApp` 项目是一个用于演示客户端代理用法的控制台应用程序. |
|||
|
|||
ABP有[动态 C# API 客户端](../AspNetCore/Dynamic-CSharp-API-Clients.md)功能,所以大多数情况下你不需要手动的创建C#客户端代理. |
|||
|
|||
* 它依赖 `.Application.Contracts` 项目,因为它需要使用应用服务接口和DTO. |
|||
|
|||
#### .Web 项目 |
|||
|
|||
包含应用程序的用户界面(UI). 包括Razor页面,javascript文件,css文件,图片等... |
|||
|
|||
* 依赖 `.HttpApi` 项目,因为UI层需要使用解决方案的API和应用服务接口. |
|||
|
|||
> 如果查看 `.Web.csproj` 源码, 你会看到对 `.Application` 和 `.EntityFrameworkCore.DbMigrations` 项目的引用. |
|||
> |
|||
> 这些引用实际上在开发中并不需要. 因为UI层通常不依赖于EF Core或应用程序实现. 这个启动模板已经为分层部署做好了准备,API层托管在不同与UI层的服务器中. |
|||
> |
|||
> 但是如果你不选择 `--tiered` 选项, .Web项目会有这些引用,以便能够将Web,Api和应用层托管在单个应用程序站点. |
|||
> |
|||
> 你可以在表示层中使用领域实体,但是根据DDD的理论,这被认为是一种不好的做法. |
|||
|
|||
#### 测试项目 |
|||
|
|||
解决方案有多个测试项目,每一层都会有一个: |
|||
|
|||
* `.Domain.Tests` 用于测试领域层. |
|||
* `.Application.Tests` 用于测试应用层. |
|||
* `.EntityFrameworkCore.Tests` 用于测试EF Core配置与自定义仓储. |
|||
* `.Web.Tests` 用于测试UI. |
|||
* `.TestBase` 所有测试项目的基础(共享)项目. |
|||
|
|||
此外, `.HttpApi.Client.ConsoleTestApp` 是一个控制台应用程序(不是自动化测试项目),它用于演示DotNet应用程序中Http Api的用法. |
|||
|
|||
### 分层结构 |
|||
|
|||
TODO |
|||
|
|||
### 其它数据库提供程序 |
|||
|
|||
TODO |
|||
|
|||
#### MongoDB |
|||
|
|||
TODO |
|||
|
After Width: | Height: | Size: 3.1 KiB |
|
Before Width: | Height: | Size: 8.2 KiB |
|
After Width: | Height: | Size: 7.9 KiB |
|
Before Width: | Height: | Size: 8.5 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 3.5 KiB |
|
After Width: | Height: | Size: 6.2 KiB |
|
Before Width: | Height: | Size: 5.3 KiB |
|
After Width: | Height: | Size: 6.7 KiB |
|
Before Width: | Height: | Size: 7.2 KiB |
|
Before Width: | Height: | Size: 8.7 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 7.2 KiB |
@ -0,0 +1,3 @@ |
|||
## Value Types |
|||
|
|||
TODO |
|||
|
After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 8.7 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 7.2 KiB |
|
After Width: | Height: | Size: 12 KiB |
@ -1,8 +1,20 @@ |
|||
{ |
|||
"culture": "zh-Hans", |
|||
"texts": { |
|||
"Menu:Home": "首页", |
|||
"Welcome": "欢迎", |
|||
"LongWelcomeMessage": "欢迎来到该应用程序. 这是一个基于ABP框架的启动项目. 有关更多信息, 请访问 cn.abp.io." |
|||
} |
|||
} |
|||
"culture": "zh-Hans", |
|||
"texts": { |
|||
"Menu:Home": "首页", |
|||
"Welcome": "欢迎", |
|||
"LongWelcomeMessage": "欢迎来到该应用程序. 这是一个基于ABP框架的启动项目. 有关更多信息, 请访问 cn.abp.io.", |
|||
"Menu:BookStore": "图书商店", |
|||
"Menu:Books": "图书", |
|||
"Name": "名称", |
|||
"Type": "类型", |
|||
"PublishDate": "出版时间", |
|||
"Price": "价格", |
|||
"CreationTime": "添加时间", |
|||
"NewBook": "新书籍", |
|||
"Books": "图书", |
|||
"Update": "更新", |
|||
"BookDeletionConfirmationMessage": "你确定删除书箱: {0} 吗", |
|||
"SuccessfullyDeleted": "删除成功." |
|||
} |
|||
} |
|||