c# – 使用EventSourcing时避免原始的痴迷

c# – 使用EventSourcing时避免原始的痴迷,第1张

概述我一直在构建一个小游戏,作为使用Event Sourcing作为持久性机制构建应用程序的学习练习. 我现在遇到的一个问题是在我的应用程序中有很多原始的痴迷. 玩家是一个核心概念,玩家名称必须是唯一的,所以我一直使用PlayerName作为我游戏中事件的标识符.这是一个字符串. 直到这一刻,我一直在逃避我的事件处理程序能够存储一个玩家名称列表(作为字符串)来表示游戏中的玩家及其各种状态.然而,我在游 我一直在构建一个小游戏,作为使用Event Sourcing作为持久性机制构建应用程序的学习练习.

我现在遇到的一个问题是在我的应用程序中有很多原始的痴迷.

玩家是一个核心概念,玩家名称必须是唯一的,所以我一直使用Playername作为我游戏中事件的标识符.这是一个字符串.

直到这一刻,我一直在逃避我的事件处理程序能够存储一个玩家名称列表(作为字符串)来表示游戏中的玩家及其各种状态.然而,我在游戏中添加的最后一个主要角色要求我在几个地方进行更改(而不仅仅是一个) – 在介绍一些“真实”对象之前我已经离开了一段时间.

我现在面临的问题是每个事件处理程序处理与玩家(或许多玩家)有关的事件需要某种查找去找到与事件上的Playername相对应的Player对象.

现在处理程序中似乎会有相当多的重复,因为他们必须从查找中“获取”各种玩家(直到此时我的域对象上没有getter / setter,我认为这是值得交易以消除原始的痴迷,但我想要一个不需要我的解决方案).

感觉我错过了拼图的一部分,但是我很难把手指放在上面.

解决方法 创建事件时,您的聚合是否可以访问播放器名称?如果玩家名称对事件处理程序很重要,那么它应该是事件有效负载的一部分.

向可能在下游使用的事件添加附加信息称为事件丰富.我不知道您的事件的结构,但它们通常包含比原始命令更多的数据.这些附加数据可以很好地存储为基元.

原始的痴迷可能是领域模型中的一种气味.在涉及到事件时,我不认为这是一个问题.我甚至会说这是相反的方式.您希望事件独立于其他类,以使上下文之间的耦合保持较低,并且可以在集成场景中轻松使用它们.

总结

以上是内存溢出为你收集整理的c# – 使用EventSourcing时避免原始的痴迷全部内容,希望文章能够帮你解决c# – 使用EventSourcing时避免原始的痴迷所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1229310.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-06
下一篇2022-06-06

发表评论

登录后才能评论

评论列表(0条)

    保存