Skip to content

第四章:認識官方參考解決方案與社群資源

4.1 引言:不要從零開始

ABP Framework 不僅僅是一個框架,它還提供了一套完整的解決方案生態系。無論您是要開發一個簡單的單體應用、一個可重用的模組,還是一個複雜的微服務系統,ABP 都提供了經過驗證的起點。

本章將幫助您導覽這些資源,讓您能快速找到適合您專案的「起跑點」。


4.2 官方範本 (Templates) 詳解

ABP 提供了多種專案範本,您可以透過 CLI 或 ABP Studio 來生成。

1. 應用程式範本 (app)

這是最常用的範本,適用於大多數 Web 應用程式。

  • 特點:包含完整的 DDD 分層結構 (Domain, Application, Infrastructure, Web)。
  • 適用場景:企業級應用、SaaS 平台、後台管理系統。
  • 指令abp new MyProject -t app

2. 模組範本 (module)

用於開發可重用的功能模組 (如部落格、論壇、產品管理)。

  • 特點:結構與 app 類似,但設計為可被其他應用程式引用。不包含獨立的 UI Host (通常包含一個用於測試的 Host)。
  • 適用場景:開發 NuGet 套件、公司內部共用功能庫。
  • 指令abp new MyModule -t module

3. 微服務範本 (microservice)

注意:官方的完整微服務解決方案 (ABP Commercial) 包含預先設定好的 AuthServer, Gateway, Administration 等服務。但在社群版中,您需要自行組裝這些元件。

  • 社群版策略:通常建議從 app 範本開始,將其作為單體微服務 (Modular Monolith),待成熟後再拆分;或者參考社群維護的微服務範本 (如 eShopOnAbp 的開源部分)。

4. 控制台/WPF/MAUI 範本

ABP 也支援非 Web 專案。

  • console: 主控台應用程式。
  • maui: 跨平台行動應用程式。
  • wpf: Windows 桌面應用程式。

4.3 ABP Studio vs. ABP CLI

隨著 ABP V10.0 的發布,ABP Studio 成為了更強大的開發工具,但 CLI 依然是自動化的核心。

特性ABP CLIABP Studio (Community)
介面命令列 (Terminal)圖形化介面 (GUI)
主要用途CI/CD 自動化、快速生成、腳本操作專案管理、模組瀏覽、依賴分析、執行多個服務
學習曲線需記憶指令直觀易用
跨平台Windows, Mac, LinuxWindows, Mac, Linux
微服務支援支援提供更佳的多服務執行與除錯體驗

建議

  • 日常開發:使用 ABP Studio 來管理解決方案、執行多個專案 (如同時跑 Web 和 DbMigrator) 以及查看模組依賴圖。
  • 自動化/伺服器:使用 ABP CLI 進行建置、部署與代理生成。

4.4 官方範例庫 (Samples)

ABP 團隊在 GitHub 上維護了大量的範例專案,這是學習最佳實踐的寶庫。

必讀範例

  1. BookStore (各 UI 版本)

    • 最標準的入門教學範例,涵蓋 CRUD、權限、測試。
    • 路徑:BookStore-Mvc, BookStore-Blazor, BookStore-Angular
  2. MicroserviceDemo

    • 展示如何在社群版中建立微服務架構,包含 RabbitMQ, Redis, Ocelot/YARP 的整合。
    • 路徑:MicroserviceDemo
  3. TextTemplateDemo

    • 展示如何使用 ABP 的虛擬檔案系統與模板引擎來產生 Email 或通知內容。
  4. SignalRDemo

    • 展示即時通訊功能的整合。

4.5 社群資源與生態系

除了官方資源,ABP 擁有一個活躍的開源社群。

1. EasyAbp

EasyAbp 是最大的 ABP 社群組織,提供了許多高品質的開源模組。

  • EShop:完整的電商模組套件。
  • PaymentService:整合微信支付、支付寶、PayPal 等支付閘道。
  • Abp.WeChat:微信 SDK 整合。
  • FileManagement:檔案上傳與管理模組。

2. ABP Community Articles

官方網站上的社群文章區,包含大量開發者分享的實戰經驗與教學。

3. Stack Overflow & GitHub Issues

遇到問題時,這兩個地方是最佳的求助管道。請善用標籤 abp 進行搜尋。


4.6 決策指南:我該從哪裡開始?


4.7 習題

概念題(易)⭐

習題 1:ABP 官方提供哪三種主要範本?各適用什麼場景?

請說明:

  • 列舉至少 3 種範本
  • 各範本的特點
  • 適用場景
  • 如何選擇合適的範本

習題 2:說明 ABP CLI 與 ABP Studio 在專案生成上的差異。

請說明:

  • 兩者的主要差異
  • 各自的優勢
  • 適用場景
  • 推薦使用策略

計算/練習題(中)⭐⭐

習題 3:對比 Simple、Layered、Modular 三個範本的專案結構,列舉各層的職責。

要求:

  • 繪製各範本的結構圖
  • 說明各層的職責
  • 對比三者的差異
  • 提供選型建議

習題 4:為「圖書管理系統」選擇合適的範本,並解釋理由。

給定條件:

  • 預期 10 人開發團隊
  • 需支援 Web、Mobile API、後台管理
  • 計畫長期維運,可能後期拆分微服務

要求:

  • 選擇合適的範本
  • 說明選擇理由
  • 設計初期架構
  • 規劃遷移路線

實作/編碼題(較難)⭐⭐⭐

習題 5:從 ABP 官方 samples 倉庫克隆 BookStore 示例,進行以下操作:

  1. 理解專案結構
  2. 運行資料庫遷移
  3. 啟動應用並驗證默認功能
  4. 在 Swagger UI 測試 API

習題 6:基於官方 BookStore 示例,添加新功能:

  1. 新增 Genre 實體(書籍分類)
  2. Book 與 Genre 建立多對一關係
  3. 在 BookAppService 增加 GetByGenreAsync 方法
  4. 撰寫整合測試驗證

習題解答:請參考 content/solutions/ch04-solutions.md


4.8 總結

ABP Framework 的強大不僅在於程式碼本身,更在於其背後的資源與社群。

  • Templates 讓您快速啟動。
  • Samples 提供最佳實踐參考。
  • Community Modules 節省您的開發時間。

在接下來的章節中,我們將進入進階主題,深入探討 ABP 的核心機制。請確保您已經對基本的開發流程 (Chapter 3) 與資源取得 (Chapter 4) 有了充分的了解。


參考資源

Released under the MIT License.