booking-microservices:基於.Net Core的CQRS、DDD、垂直切片架構、事件溯源案例

banq發表於2022-05-09

Booking Microservices 是一個用於預訂機票的示例應用程式。此應用程式基於不同的軟體架構和技術,如 .Net Core、CQRS、DDD、Vertical Slice Architecture、Docker、kubernetes、tye、masstransit、RabbitMQ、Grpc、yarp 反向代理、Identity Server、Redis、SqlServer、Entity Framework Core、EventSourcing。

特點:
  • 微服務基於Domain Driven Design (DDD)實現。
  • 對每個微服務都正確separation of bounded contexts。
  • 通過非同步MessageBus和events.
  • 簡單CQRS的實現和事件驅動的架構。
  • 使用Best Practice和New Technologies和Design Patterns。
  • 使用Docker-Compose和 Kubernetes為我們的部署機制。
  • 實施各種型別的測試Unit Testing,如Integration Testing.


詳細技術:
  •  .NET 6- .NET Framework 和 .NET Core,包括 ASP.NET 和 ASP.NET Core
  •  MVC Versioning API- 將服務 API 版本控制新增到 ASP.NET Web API、帶有 ASP.NET Web API 的 OData 和 ASP.NET Core 的一組庫
  •  EF Core- .NET 的現代物件資料庫對映器。它支援 LINQ 查詢、更改跟蹤、更新和模式遷移
  •  Masstransit- .NET 的分散式應用程式框架。
  •  MediatR- .NET 中簡單、無野心的調解器實現。
  •  FluentValidation- 用於構建強型別驗證規則的流行 .NET 驗證庫
  •  Swagger & Swagger UI- 用於記錄基於 ASP.NET Core 的 API 的 Swagger 工具
  •  Serilog- 帶有完全結構化事件的簡單 .NET 日誌記錄
  •  Polly- Polly 是一個 .NET 彈性和瞬態故障處理庫,允許開發人員以流暢和執行緒安全的方式表達重試、斷路器、超時、隔板隔離和回退等策略
  •  Scrutor- Microsoft.Extensions.DependencyInjection 的程式集掃描和裝飾擴充套件
  •  Opentelemetry-dotnet- OpenTelemetry .NET 客戶端
  •  DuendeSoftware IdentityServer- 適用於 ASP.NET Core 的最靈活且符合標準的 OpenID Connect 和 OAuth 2.x 框架
  •  EasyCaching- 開源快取庫,包含快取的基本用法和一些高階用法,可以幫助我們更輕鬆地處理快取。
  •  Mapster- .NET 中基於約定的物件-物件對映器。
  •  Hellang.Middleware.ProblemDetails- .Net Core 中用於處理異常的中介軟體
  •  IdGen- 用於 .Net 的類似 Twitter 雪花的 ID 生成器
  •  Yarp- 用於在 .NET 中構建快速代理伺服器的反向代理工具包
  •  Tye- 使開發、測試和部署微服務和分散式應用程式更容易的開發工具
  •  MagicOnion- 用於 .NET、.NET Core 和 Unity 的基於 gRPC 的 HTTP/2 RPC 流框架。
  •  EventStore- 具有複雜事件處理功能的開源功能資料庫。
  •  MongoDB.Driver- 用於 MongoDB 的 .NET 驅動程式。


領域和有界上下文 - 服務邊界

  • Identity Service: Identity Service 是一個有界上下文,用於通過Identity Server對使用者進行身份驗證和授權。此外,該服務還負責使用.Net Core Identity和 Jwt 身份驗證和授權建立使用者及其相應的角色和許可權。
  • Flight Service:Flight Service 是與航班相關的所有操作的有界上下文,並獲得可用的航班和座位。
  • Passenger Service:乘客服務是一個有界上下文,用於管理我們的乘客資訊、跟蹤活動和訂閱以獲取缺貨產品的通知
  • Booking Service: Booking Service 是一個有界上下文,用於管理與訂票相關的所有操作。


點選標題
 

相關文章