在 .NET Core 中應用六邊形架構
阿新 • • 發佈:2021-03-04
在本文中,您會看到一個Web API應用的模板,在.NET Core 中應用了六邊形架構,並且裡面包含了一些基礎功能。
## 介紹
這是一個模板專案,裡面集成了一些必備的基礎功能,當我們需要開發一個新專案時,我們可以使用這個模板,這樣我們可以聚焦業務。
模板集成了一些元件和功能如下:
- 六邊形架構的應用程式
- Web API
- Entityframework Core
- 異常處理
- NUnit
- 版多本
- Swagger UI
- 日誌 — SeriLog
- Health checks UI
- JWT authentication
## 什麼是六邊形架構
六邊形架構(或稱其為“埠和介面卡架構風格”),將解決傳統架構中維護應用程式的問題,而我們過去通常通過以資料庫為中心的架構來實現, 所有輸入和輸出都通過埠進入或離開應用程式的核心內容,並且埠把應用程式和外部技術,工具和交付機制隔離開。
![](https://blog-1259586045.cos.ap-shanghai.myqcloud.com/clipboard_20210304_021819.png)
## 六邊形架構帶來了哪些好處
- 外掛化
我們可以在專案中新增或者移除adapter, 比如我們可以替換 Rest adapter 或者 GraphQL 或者 gRPC adapter,並且它不會影響到我們的邏輯。
- 可測試的能力
因為它分離了所有層,所以很容易為每個元件編寫一個測試用例。
- 與資料庫無關
由於資料庫與資料訪問是分開的,因此切換資料庫提供程式非常容易。
- 整潔的程式碼
由於業務邏輯和表示層是分開的,因此易於實現UI(例如React,Angular或Blazor)。
## 六邊形架構的各層
- Domain Api layer
Domain Api layer 在中心實現,並且不依賴於其他層。
- Domain Layers (業務邏輯層)
- Rest Adapter layer
Rest Adapter也稱為左埠介面卡和主介面卡,在其中我們實現了靜態服務(即GET,POST,PUT,DELETE等)。
- Persistence Adapter layer
Persistence Adapter,也稱為輔助介面卡,我們用了Entity Framework Core,DbContext將是UOW(工作單元)。
- Bootstrap/Presentation Layer
## 開始使用六邊形架構
首先,我們需要先安裝一個模板外掛,在VS中,選擇 擴充套件 -> 聯機,然後搜尋 Hexagonal,並安裝
![](https://blog-1259586045.cos.ap-shanghai.myqcloud.com/clipboard_20210304_024355.png)
然後選擇模板,建立新專案:
![](https://blog-1259586045.cos.ap-shanghai.myqcloud.com/clipboard_20210304_024545.png)
它的解決方案是這樣的:
![](https://blog-1259586045.cos.ap-shanghai.myqcloud.com/clipboard_20210304_024717.png)
您可以瀏覽下各層的程式碼結構,也可以啟動專案,訪問 /healthcheck-ui, 檢視健康檢查的頁面
![](https://blog-1259586045.cos.ap-shanghai.myqcloud.com/clipboard_20210304_025100.png)
在本文中,我簡單介紹了六角形體系結構,並且通過這個模板,可以快速的在.NET Core 中建立六邊形架構的專案應用。
> 原文連結: [https://www.c-sharpcorner.com/article/hexagonal-architecture-in-asp-net-core/]("https://www.c-sharpcorner.com/article/hexagonal-architecture-in-asp-net-core/")
歡迎掃碼關注我們的公眾號 【全球技術精選】,專注國外優秀部落格的翻譯和開源專案分享,也可以新增QQ群 897216102