gpt4 book ai didi

.net - CQRS 命令构造

转载 作者:行者123 更新时间:2023-12-01 06:46:10 26 4
gpt4 key购买 nike

我有一个这样的 CQRS 命令

public sealed class RequestRoute
{
public RequestRoute(string fromAddressName, double fromLatitude, double fromLongitude, string toAddressName, double toLatitude, double toLongitude, string userId)
{
UserId = userId;
ToLongitude = toLongitude;
ToLatitude = toLatitude;
ToAddressName = toAddressName;
FromLongitude = fromLongitude;
FromLatitude = fromLatitude;
FromAddressName = fromAddressName;
}

public string FromAddressName { get; private set; }
public double FromLatitude { get; private set; }
public double FromLongitude { get; private set; }

public string ToAddressName { get; private set; }
public double ToLatitude { get; private set; }
public double ToLongitude { get; private set; }

public string UserId { get; private set; }
}

我的程序员的直觉告诉我,我应该将 FromXXX 和 ToXXX 字段分解为一个名为“Address”的单独类......但我不确定这是否违反了 CQRS 模式......我见过的所有示例都只使用原始类型作为命令和事件的属性。

最佳答案

命令是面向数据的,而不是面向对象的。它的属性应该主要是基元。你在这里没有建模任何东西,只是发送平面数据。

使用自定义类型会强制您将类型发布到每个想要使用这些命令的客户端。它还可以防止您将来轻松更改这些类型。

然后是可串行化:自定义类型越少越简单。

在诸如命令和事件之类的消息中,我会尽可能合理地使用原语。重复不是这里的问题,您需要低耦合、可串行化、更改容错性。

关于.net - CQRS 命令构造,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15891143/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com