c# – 使用EventSourcing时避免原始的痴迷
我一直在构建一个小游戏,作为使用Event Sourcing作为持久性机制构建应用程序的学习练习.
我现在遇到的一个问题是在我的应用程序中有很多原始的痴迷. 玩家是一个核心概念,玩家名称必须是唯一的,所以我一直使用PlayerName作为我游戏中事件的标识符.这是一个字符串. 直到这一刻,我一直在逃避我的事件处理程序能够存储一个玩家名称列表(作为字符串)来表示游戏中的玩家及其各种状态.然而,我在游戏中添加的最后一个主要角色要求我在几个地方进行更改(而不仅仅是一个) – 在介绍一些“真实”对象之前我已经离开了一段时间. 我现在面临的问题是每个事件处理程序处理与玩家(或许多玩家)有关的事件需要某种查找去找到与事件上的PlayerName相对应的Player对象. 现在处理程序中似乎会有相当多的重复,因为他们必须从查找中“获取”各种玩家(直到此时我的域对象上没有getter / setter,我认为这是值得交易以消除原始的痴迷,但我想要一个不需要我的解决方案). 感觉我错过了拼图的一部分,但是我很难把手指放在上面. 解决方法
创建事件时,您的聚合是否可以访问播放器名称?如果玩家名称对事件处理程序很重要,那么它应该是事件有效负载的一部分.
向可能在下游使用的事件添加附加信息称为事件丰富.我不知道您的事件的结构,但它们通常包含比原始命令更多的数据.这些附加数据可以很好地存储为基元. 原始的痴迷可能是领域模型中的一种气味.在涉及到事件时,我不认为这是一个问题.我甚至会说这是相反的方式.您希望事件独立于其他类,以使上下文之间的耦合保持较低,并且可以在集成场景中轻松使用它们. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |