Aggregates.NET 使用指南
项目介绍
Aggregates.NET 是一个专为 .NET
平台设计的库,旨在简化 NServiceBus
与 EventStore
之间的集成过程。它提供了一个框架,允许开发者轻松定义实体、值对象、命令和事件处理器等,全面支持领域驱动设计(DDD)和 CQRS 原则。此库负责处理所有复杂的事件流读写细节,使得开发者能够专注于业务逻辑而无需关心消息队列或存储技术。从 v0.17 开始,它采用了微软的标准依赖注入和日志模块,放弃了对 StructureMap、SimpleInjector 和 LibLog 的直接支持,以简化维护并鼓励使用微软的生态系统。
项目快速启动
要快速启动 Aggregates.NET,首先确保你已安装了 .NET Core SDK
或更高版本,以及 NServiceBus
和 EventStore
相关的依赖。
-
克隆项目
git clone https://github.com/charlessolar/Aggregates.NET.git
-
添加必要的NuGet包 在你的
.NET
项目中,你需要添加Aggregates.NET
及其相关依赖。你可以通过NuGet包管理器或在packages.config
文件中添加以下条目:<package id="Aggregates.NET" version="0.18.83.177" targetFramework="net6.0" />
-
编写基本示例 在你的应用程序中,创建一个简单的命令和对应的处理器。例如,处理一个发送命令到
EchoEntity
。using Aggregates; using NServiceBus; public class SendCommand : ICommand { public string Message { get; set; } } public class EchoEntity { public void Echo(string message) { // 处理逻辑,这里可以触发事件 } } public class SendHandler : IHandleMessages<SendCommand> { public async Task Handle(SendCommand message, IMessageHandlerContext context) { var entity = await context.For<EchoEntity>() .TryGet("default"); if (entity == null) entity = await context.For<EchoEntity>().New("default"); entity.Echo(message.Message); } }
-
配置NServiceBus与Aggregates.NET 确保你的NServiceBus配置包含Aggregates.NET的设置,这通常在启动类中完成。
-
运行你的应用 最后,启动你的应用服务,观察事件如何被正确地处理并保存至EventStore。
应用案例和最佳实践
应用案例
- 微服务架构中的订单处理系统,利用事件溯源保持订单状态的一致性。
- 实现复杂的工作流程管理,比如购物车处理和支付确认,通过Sagas来协调跨多个服务的操作。
最佳实践
- 利用Snapshots来优化大型实体的加载速度。
- 设计清晰的领域模型,每个聚合根应该代表不可变的业务概念。
- 细粒度地定义命令和事件,以减少耦合。
典型生态项目
- eShopOnContainersDDD: 这是基于
eShopOnContainers
的一个分支,采用 DDD/CQRS 设计模式,展示如何在企业级微服务应用中使用 Aggregates.NET。 - TodoMVC-DDD-CQRS-EventSourcing: 示例项目,实现经典的待办事项应用,通过事件溯源、CQRS及DDD原则,展示了Aggregates.NET的应用方式。
- DDD Enterprise Example: 展示了一个适用于企业的架构范例,深入探索了结合Aggregates.NET的DDD实施策略。
通过遵循上述步骤和建议,你可以有效地集成和利用Aggregates.NET进行事件源领域的开发,构建健壮且可扩展的.NET
应用。