.NET 微服務:適用於容器化 .NET 應用的體繫結構 容器和 Docker 簡介 什麼是 Docker? Docker 術語 Docker 容器、映像和註冊表 為 Docker 容器選擇 .NET Core 還是 .NET Framework 通用指南 何時為 Docker 容器選擇 .NET ...
.NET 微服務:適用於容器化 .NET 應用的體繫結構
容器和 Docker 簡介
什麼是 Docker?
Docker 術語
Docker 容器、映像和註冊表
為 Docker 容器選擇 .NET Core 還是 .NET Framework
通用指南
何時為 Docker 容器選擇 .NET Core
何時為 Docker 容器選擇 .NET Framework
決策表:用於 Docker 的 .NET Framework
使用 .NET 容器時定位的操作系統
官方 .NET Docker 映像
構建容器化微服務應用
容器化整體式應用
Docker 應用中的狀態和數據
面向服務的體繫結構
微服務體繫結構
每個微服務的數據主權
邏輯體繫結構與物理體繫結構
分散式數據管理挑戰和解決方案
標識每個微服務的域模型邊界
微服務之間的通信
基於消息的非同步通信
創建、改進和版本控制微服務 API 及協定
微服務可定址性和服務註冊表
根據微服務創建複合 UI,包括多個微服務生成的可視 UI 形狀和佈局
微服務中的複原和高可用性
安排微服務和多容器應用的業務流程,以實現高可伸縮性和高可用性
使用 Azure Service Fabric
Docker 應用開發流程
Docker 應用開發工作流
在 Linux 或 Windows Nano Server 主機上部署單容器 .NET Core Web 應用
將舊版整體式 .NET Framework 應用遷移到 Windows 容器
設計和開發多容器化微服務 .NET 應用
設計面向微服務的應用
創建簡單的數據驅動 CRUD 微服務
使用 docker-compose.yml 定義多容器應用
使用作為容器運行的資料庫伺服器
在微服務(集成事件)之間實現基於事件的通信
使用 RabbitMQ 實現用於開發或測試環境的事件匯流排
訂閱事件
測試 ASP.NET Core 服務和 Web 應用
使用 DDD 和 CQRS 模式降低微服務中的業務複雜性
在微服務中應用簡化後的 CQRS 和 DDD 模式
在 eShopOnContainers 的 DDD 微服務中應用 CQRS 和 CQS 方法
在 CQRS 微服務中實現讀取/查詢
設計面向 DDD 的微服務
設計微服務域模型
使用 .NET Core 實現微服務域模型
Seedwork(適用於域模型的可重用基類和介面)
實現值對象
使用枚舉類(而不是枚舉類型)
在域模型層中設計驗證
客戶端驗證(表示層中的驗證)
域事件:設計和實現
設計基礎結構持久性層
使用 Entity Framework Core 實現基礎結構持久性層
將 NoSQL 資料庫用作持久性基礎結構
設計微服務應用層和 Web API
使用 Web API 實現微服務應用層
實現複原應用
處理部分失敗錯誤
部分失敗錯誤的處理策略
實現使用指數退避演算法的重試
實現複原 Entity Framework Core SQL 連接
實現使用指數退避演算法的自定義 HTTP 調用重試
使用 Polly 實現使用指數退避演算法的 HTTP 調用重試
實現斷路器模式
運行狀況監視
保護 .NET 微服務和 Web 應用
關於 .NET 微服務和 Web 應用中的授權
在開發過程中安全地存儲應用機密
在生產時使用 Azure Key Vault 保護機密
關鍵結論
相關的微服務和基於容器的參考應用:eShopOnContainers
eShopOnContainers 是開源的應用
GitHub:https://github.com/dotnet-architecture/eShopOnContainers
示例應用程式包括以下後端服務:
• An identity microservice, which uses ASP.NET Core Identity and IdentityServer4.
• A catalog microservice, which is a data-driven, create, read, update, delete (CRUD) service that consumes an SQL Server database using EntityFramework Core.
• An ordering microservice, which is a domain-driven service that implements domain driven design patterns.
• A basket microservice, which is a data-driven CRUD service that uses Redis Cache
• A Marketing and Location microservices as example of No-SQL databases (MongoDB and CosmosDB).
• An MVC watchdogs web app to query and show info from the HealthChecks (not shown in the above architecture diagram).
這些後端服務使用ASP.NET Web API實現為微伺服器,併在單個Docker主機中部署為唯一容器。然後,客戶端應用程式通過表示狀態轉移(REST)Web界面與後端服務進行通信。
微伺服器還通過基於在RabbitMQ上實現的事件匯流排的非同步消息進行通信,但事件匯流排也可以基於任何其他代理或服務匯流排,如Azure Service Bus,NServiceBus,MassTransit等。
此外,示例應用程式附帶三個客戶端應用程式:
•使用ASP.NET Core開發的MVC應用程式。
•使用Angular 2和Typescript開發的單頁應用程式(SPA)。
•用Xamarin.Forms開發的跨平臺移動應用程式。
博客介紹:https://blogs.msdn.microsoft.com/dotnet/2017/08/02/microservices-and-docker-containers-architecture-patterns-and-development-guidance/
電子書文檔地址:https://docs.microsoft.com/zh-cn/dotnet/standard/microservices-architecture/
電子書PDF下載:http://aka.ms/MicroservicesEbook
.NET應用程式架構中心:https://www.microsoft.com/net/learn/architecture
如果你覺得本文對你有幫助,請點擊“推薦”,謝謝。