共用方式為


簡介 eShopOnContainers 參考應用程式

提示

此內容摘錄自《建構適用於 Azure 的雲端原生 .NET 應用程式》電子書,您可以在 .NET Docs 找到此電子書,或免費下載可離線閱讀的 PDF。

Cloud Native .NET apps for Azure eBook cover thumbnail.

Microsoft 與領先的社群專家合作,製作了一個功能齊全的雲端原生微服務參考應用程式 eShopOnContainers。 建置此應用程式是為了展示使用 .NET 和 Docker,以及選擇性地使用 Azure、Kubernetes 和 Visual Studio 來建置線上店面。

eShopOnContainers Sample App Screenshot.

圖 2-1. eShopOnContainers 範例應用程式螢幕擷取畫面。

開始本章之前,建議您先下載 eShopOnContainers 參考應用程式。 如果照著做,您應該能夠更容易地理解所呈現的資訊。

功能和需求

讓我們從檢閱應用程式的功能和需求開始。 eShopOnContainers 應用程式代表一家線上商店,其銷售各種實體產品,如 T 恤和咖啡杯。 如果您以前在網路線上買過東西,使用商店的經驗應該是比較熟悉的。 以下是商店實作的一些基本功能:

  • 列出目錄項目
  • 依類型篩選項目
  • 依品牌篩選項目
  • 將項目新增至購物籃
  • 編輯或移除購物籃中的項目
  • 結帳
  • 註冊帳戶
  • 登入
  • 登出
  • 檢閱訂單

該應用程式也有下列非功能性的需求:

  • 它需要具有高可用性且必須自動擴充,以符合增加的資料流量需求 (並在資料流量消退後縮減回去)。
  • 它應該提供易於使用的健康情況和診斷記錄監控作業,以協助解決任何遇到的問題。
  • 它應該支援敏捷式的開發流程,包括持續整合和部署 (CI/CD) 的支援。
  • 除了兩個 Web 前端 (傳統和單一頁面應用程式) 之外,該應用程式也必須支援執行不同作業系統的行動用戶端應用程式。
  • 它應該支援跨平台裝載和跨平台開發。

eShopOnContainers reference application development architecture.

圖 2-2. eShopOnContainers 參考應用程式開發架構。

eShopOnContainers 應用程式可從 Web 用戶端或行動用戶端存取,而這些用戶端會透過導向 ASP.NET Core MVC 伺服器應用程式或適當 API 閘道的 HTTPS 來存取該應用程式。 API 閘道提供了幾個優點,例如將後端服務與個別的前端用戶端分離,並提供更佳的安全性。 該應用程式也會使用稱為 Backends-for-Frontends (BFF) 的相關模式,該模式建議為每個前端用戶端建立個別的 API 閘道。 參考架構會根據要求是來自 Web 用戶端還是行動用戶端來示範如何分解 API 閘道。

該應用程式的功能會分解成許多不同的微服務。 有負責驗證和身分識別、負責列示產品型錄中的商品項目、負責管理使用者的購物籃,以及負責下訂單的各種服務。 這些每一個個別的服務都有自己的持續性儲存體。 沒有所有服務與其互動的單一主要資料存放區。 相反地,服務之間的協調和通訊是根據需要並透過使用訊息匯流排來完成的。

每個不同的微服務都會根據各自的需求來進行不同的設計。 這個層面意味著其技術堆疊可能不同 (儘管它們都是使用 .NET 來建置並且是針對雲端而設計的)。 較簡單的服務提供對基礎資料存放區的基本 Create-Read-Update-Delete (CRUD) 存取權,而較進階的服務則會使用 Domain-Driven Design 方法和模式來管理業務複雜性。

Different kinds of microservices

圖 2-3。 不同類型的微服務。

程式碼的概觀

因為 eShopOnContainers 應用程式使用微服務,所以它會在其 GitHub 存放庫中包含好幾個別的專案和解決方案。 除了個別的解決方案和可執行檔之外,還設計各種服務在自己的容器內執行 (在本機開發期間和生產執行階段)。 圖 2-4 顯示完整的 Visual Studio 解決方案 (在其中組織了各種不同的專案)。

Projects in Visual Studio solution.

圖 2-4: Visual Studio 解決方案中的專案。

程式碼會組織來支援不同的微服務,而且在每個微服務內,程式碼會分解成網域邏輯、基礎結構考慮問題,以及使用者介面或服務端點。 在許多情況下,每個服務的相依性都可以透過生產環境中的 Azure 服務和本機開發的替代選項來實現。 讓我們來看看該應用程式的需求如何對應到 Azure 服務。

了解微服務

本書重點介紹使用 Azure 技術所建置的雲端原生應用程式。 若要進一步了解微服務的最佳作法以及如何架構微服務型的應用程式,請閱讀配套書籍:《.NET 微服務:容器化 .NET 應用程式的結構》。