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

22-05-09 banq

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 是一个有界上下文,用于管理与订票相关的所有操作。


点击标题
 

2
猜你喜欢