如果你想要在您的本地环境中运行解决方案,请按照以下步骤操作。
## 克隆 GitHub 存储库
首先,你需要在本地计算机上克隆 GitHub 存储库。该存储库位于[https://github.com/volosoft/eventhub](https://github.com/volosoft/eventhub),可以使用以下命令进行克隆(需要安装 Git 工具):
```
git clone https://github.com/volosoft/eventhub.git
```
或者,导航到[https://github.com/volosoft/eventhub](https://github.com/volosoft/eventhub),单击**Code**按钮,然后单击**Download ZIP**,如以下屏幕截图所示:
![](https://img.kancloud.cn/65/5c/655c2c61ba1913015020eb73bc104dfb_388x361.png)
## 准备基础环境
该解决方案需要**Redis**和**PostgreSQL**服务器。在`etc/docker`夹中的存储库包含`docker-compose`文件。如果您的计算机上安装了 Docker,可以直接执行文件夹中的`up.ps1`文件来运行这些服务器。如果您不能在您的计算机上使用 PowerShell,您可以在文本编辑器中打开并复制脚本,然后打开命令行终端并切换到`etc/docker`目录中执行它。第一次运行,下载 Docker 镜像可能需要几分钟。如果您不想使用 Docker,则需要在您的机器上手动安装**Redis**和**PostgreSQL**。
## 打开解决方案
请在 Visual Studio 或其他与 .NET 兼容的 IDE 中打开前面下载的解决方案`EventHub.sln`。
## 创建数据库
该解决方案有一个`EventHub.DbMigrator`项目,运行此应用程序(对于 Visual Studio,右键单击它并选择**设为启动项目**,然后*按 Ctrl*+*F5*)。它将创建一个数据库并初始化一些数据。
## 运行应用程序
我们现在准备好启动程序。您可以按以下顺序运行项目(对于 Visual Studio,右键单击每个项目,选择**设为启动项目**,然后*按 Ctrl*+*F5*)
* `EventHub.IdentityServer`
* `EventHub.HttpApi.Host`
* `EventHub.Web`
* `EventHub.Admin.HttpApi.Host`
* `EventHub.Admin.Web`
* `EventHub.BackgroundServices`
请使用`admin`用户名和`1q2w3E*`密码进行登录。当然,您可以在 UI 上创建其他用户。
>[success] 请注意,当您运行多个应用程序时,Visual Studio 会出现一些问题。有时,以前运行的应用程序可能会停止。在这种情况下,请再次运行停止的应用程序。
微软的`Tye`使得运行多个应用程序变得更加容易。下面介绍这种运行方式:
## 使用 Tye 项目
如果你不想要开发或调试解决方案但只想运行它,您可以使用 Microsoft的`Tye`项目来运行它,而无需打开 IDE。`Tye`是一个 .NET 全局工具,用于通过简单的配置简化运行此类分布式应用程序。EventHub 解决方案支持使用`Tye`配置,您需要做的就是安装`Tye`并运行它。
在使用之前`Tye`,您仍然需要准备基础环境(同上),然后使用`EventHub.DbMigrator`创建数据库(打开命令行终端并,并切换到目录`src/EventHub.DbMigrator`,运行以下命令:
```
dotnet run
```
数据库准备好后,您可以在命令行终端中执行以下命令来安装`Tye`:
```
dotnet tool install -g Microsoft.Tye
```
在撰写本书时,`Tye`项目仍处于预览阶段。您可能需要指定最新的预览版本(您可以在 NuGet 上找到此内容,网址为[https://www.nuget.org/packages/Microsoft.Tye](https://www.nuget.org/packages/Microsoft.Tye)。请参阅以下代码片段,以了解如何安装`Tye`:
```
dotnet tool install -g Microsoft.Tye --version "0.10.0-alpha.21420.1"
```
`Tye`需要在您的计算机上预先安装 Docker。全部安装完成后,您可以运行以下命令启动应用程序(如果IDE已打开,建议先关闭IDE):
```
tye run
```
第一次运行需要一些时间。完成后,您可以打开浏览器并导航至`http://127.0.0.1:8000`打开**Tye Dashboard**,如下图:
![](https://img.kancloud.cn/12/aa/12aad2ff02b2d0219d7868ff6dd2419d_1128x742.png)
Tye**仪表板**用于观看实时应用及其**日志。您可以单击Bingdings**列上的链接以打开任何应用。`web`是系统的**主站**。
当您的解决方案包含多个需要一起运行的应用时,Tye 是一个很方便的工具。您还可以`dotnet watch`对项目进行配置,以便在您更改项目时自动重新加载(或使用 .NET 6.0 热加载)。请参阅 Microsoft 的[文档](%5Bhttps://github.com/dotnet/tye/tree/main/docs%5D(https://github.com/dotnet/tye/tree/main/docs))以了解更多信息。
# 概括
EventHub 是一个基于 ABP 框架的完整的、真实的实时示例应用。而且已经发布在 [openeventhub.com](https://www.openeventhub.com/) 上,我们可以在GitHub上随时发送错误报告、推送请求和拉取代码。
在本章中,我们重点介绍的解决方案的整体架构,以便您了解如何探索代码库和运行解决方案。下一章将参考该解决方案,同时介绍一些 ABP 特性和概念。
EventHub 是使用多个应用构建的一个很好的例子。这也是理解 ABP 分层模型以及如何在不同应用中重用这些层的一个示例。
截止目前你可能还不了解 EventHub 解决方案的所有细节,因为我们还没有解释模块化系统、数据库集成、动态 C# 客户端代理以及所有其他 ABP 功能。
在下一章中,我们将探索 [ASP.NET](http://ASP.NET) Core 和 ABP 框架的基本模块,以了解如何配置和初始化应用程序。
- 前言
- 第一部分
- 第1章 现代软件开发和 ABP 框架
- 企业级 Web 开发的挑战
- ABP框架的能力清单
- 第2章 ABP框架入门
- 安装 ABP CLI
- 创建新解决方案
- 运行解决方案
- 探索预构建模块
- 第3章 逐步开发开发ABP应用
- 创建解决方案
- 定义领域对象
- EFCore和数据库映射
- 定义应用服务
- 测试产品
- 产品列表
- 创建产品
- 编辑产品
- 删除产品
- 第4章 探索 EventHub解决方案
- 应用介绍
- 架构探索
- 方案运行
- 第二部分
- 第5章 探索ABP基础架构
- 了解模块化
- 使用依赖注入系统
- 配置应用程序
- 实现选项模式
- 日志系统
- 第6章 数据访问基础架构
- 定义实体
- 定义仓储库
- EF Core集成
- 了解 UoW
- 第7章 探索横切关注点
- 认证授权
- 用户验证
- 异常处理
- 第8章 体验 ABP 的功能和服务
- 获取当前用户
- 使用数据过滤
- 控制审计日志
- 缓存数据
- 本地化用户界面
- 第三部分
- 第9章 理解领域驱动设计
- 介绍 DDD
- 构建基于 DDD 的 解决方案
- 处理多个应用程序
- 了解执行流程
- DDD的通用原则
- 第10章 领域层 Domain
- 领域事件案例分析
- 聚合和实体的设计原则和实践
- 实现领域服务
- 落地存储库
- 构建规约(Specification)
- 领域事件
- 第11章 应用层 Application
- 落地应用服务
- 设计 DTO
- 理解各层的职责
- 第四部分
- 第12章 MVC/Razor 页面
- 主题系统
- 绑定和压缩
- 导航菜单
- Bootstrap标签助手
- 创建表单并验证
- 使用模态窗口
- 使用JS API
- 调用HTTP API
- 第13章 Blazor WebAssembly UI
- 什么是Blazor
- ABP Blazor UI
- 验证用户身份
- 理解主题系统
- 使用菜单
- 使用基本服务
- 使用UI服务
- 消费HTTP API
- 使用全局脚本和样式
- 第14章 HTTP API 和实时服务
- 构建HTTP API
- 使用HTTP API
- 使用SignalR
- 第五部分
- 第15章 落地模块化
- 理解模块化
- 构建支付模块
- 安装模块
- 第16章 实现多租户
- 理解多租户
- 多租户基础设施
- 使用功能系统
- 何时使用多租户
- 第17章 构建自动化测试
- 了解ABP测试基础设施
- 构建单元测试
- 构建集成测试