随笔分类 - DDD
DDD领域驱动模型
摘要:# DDD之实现集成事件(RabbitMQ) 1.1 RabbitMQ 集成事件是服务器间的通信,所以必须借助于第三方服务器作为事件总线。常用的消息中间件有Redis、RabbitMQ、Kafka、ActiveMQ等 1.2 RabbitMq简介 信道(Channel):信道是消息的生产者、消费
阅读全文
摘要:# DDD之EFCore发布领域事件的时机 (1)在聚合根的实体对象的ChangeName()、构造方法等方法中立即发布领域事件,因为无论是应用服务还是领域服务,最终要调用聚合根中的方法来操作聚合,我们这样做可以确保领域事件不会被漏掉。 缺点: 存在重复发送领域事件的情况 领域事件发布的太早:在
阅读全文
摘要:DDD之实现领域事件(MediatR) 领域事件:在同一个微服务内的聚合之间的事件传递。使用进程内的通信机制完成。 (1)C#的事件机制 var eventClass = new EventClass(); eventClass .事件+=eventClass_事件 eventClass.Start
阅读全文
摘要:# DDD之聚合在.Net中的实现 (1)工作单元 EFCore的DbContext:跟踪对象状态的改变;SaveChanges把所有的改变一次性地提交到数据库中,是一个事务。因此DbContext是天然的UoW实现。 (2)聚合与聚合根的实现 即使一个实体类型没有声明对应的DbSet类型的属性,
阅读全文
摘要:DDD之EFCore实现值对象 Region public record Region { public long Id { get; init; } public MultilingualString Name { get; init; } public Area Area { get; init
阅读全文
摘要:1. DDD之EFCore操作实体属性和实现充血模型 1.1 EFCore操作实体属性 (1)对象操作实体属性会调用get,set方法 (2)基于性能和对特殊功能支持的考虑,EF Core在读写属性的时候,如果可能,它会直接跳过get、set,而直接操作真正存储属性值的成员变量 (3)EF Core
阅读全文
摘要:# DDD之基本概念 1.1 微服务简介 (1)单体架构项目 缺点 耦合 技术栈统一,软件包版本锁定 一崩全崩;升级周期长;无法局部扩容 (2)微服务 优点 耦合性低,易于开发和维护;可以用不同技术栈;可以单独扩容;互相隔离,影响小;部署周期短 缺点 对运维能力要求高;运行效率会降低;技术要求高,
阅读全文
摘要:参考 https://www.cnblogs.com/laozhang-is-phi/p/9806335.html https://www.cnblogs.com/uoyo/category/1602382.html 领域驱动设计整体架构 Presentation Layer:表现层,负责显示和接受
阅读全文