.Net Core 清晰架构:CQRS与事件源的完美融合
项目简介
.Net Core Clean Architecture
是一个用于构建清晰架构和微服务的 .Net Core
开源启动项目,它演示了如何使用 CQRS 模式,MediatR 和自定义中间件处理横切关注点,以及如何通过 gRPC 和 REST API 使用 OpenAPI/Swagger 进行服务通信。此外,它还集成了 FluentValidation,AutoMapper,CosmosDB 数据存储以及 Serilog 日志记录和表存储以实现混合事件源模式。
该项目的灵感来源于 Jason Taylor 关于“Clean Architecture”的演讲和 Eric Evans 的经典著作《领域驱动设计》(DDD),以及 Jimmy Board 的出色工作——MediatR 项目。
项目技术分析
项目的核心是将业务逻辑集中在 领域层、应用层 和 基础设施层 中。无头实施允许您在控制台、测试、WebAPI 和 Web 应用之间互换接口。
- 领域层 面向非技术人员的领域专家共享,包括易于阅读的领域模型/实体和作为策略编写的重要的业务逻辑。
- 应用层 包括命令和查询逻辑,较低级别的业务逻辑,视图模型,并作为领域层和基础设施层之间的桥梁。
- 基础设施层 包括持久化层、配置、MediatR 管道、MediatR 通知、诊断、日志记录和第三方集成。
技术应用场景
核心服务可以通过 REST API 和 Webhooks 以 Docker 容器的形式部署到 Linux 或 Windows 上,支持各种平台,如:
- Azure、AWS、Google 或其他主要云提供商
- 虚拟机或集群
- Azure Web Apps、Amazon EC2 或 Google AppEngine
- Azure Service Fabric
- Azure Service Fabric Mesh
- Kubernetes 或者任何你选择的容器编排系统。
项目特点
- 基于 Domain-Driven Design 设计,强调与非技术人员的早期合作,确保软件能够准确反映现实世界的问题。
- 使用 MediatR 支持 CQRS 模式,简化命令和查询对象的创建和发送,提高代码可读性和可维护性。
- 实现事件源,提供业务操作的不可变历史记录,便于调试和审计,且具有未来扩展潜力。
- 自定义中间件处理横切关注点,例如日志记录、性能监控和通知。
- 提供对 REST、Webhooks 和 gRPC 服务间通信的支持。
项目的核心服务提供了主入口点,用于访问客户端。依赖注入由默认的 .Net Core 服务提供者处理。提供的工具和 API 示例可以在相应文件夹中找到。此外,项目鼓励开发人员将客户端分离到单独的仓库和构建系统,以便独立管理。
通过 .Net Core Clean Architecture
,你可以构建出灵活、可扩展的解决方案,满足复杂业务需求,同时保持代码整洁,易于理解和维护。现在就加入我们,探索这个项目,体验领域驱动设计和事件源的强大魅力吧!