如果你想要在您的本地環境中運行解決方案,請按照以下步驟操作。
## 克隆 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**,如以下屏幕截圖所示:

## 準備基礎環境
該解決方案需要**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**,如下圖:

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測試基礎設施
- 構建單元測試
- 構建集成測試