Jef*_*eff 3 .net domain-driven-design cqrs
我有这样的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; }
}
Run Code Online (Sandbox Code Playgroud)
我的程序员的直觉告诉我,我应该将FromXXX和ToXXX字段分解为一个名为"Address"的单独类...但我不确定是否违反了CQRS模式......我见过的所有例子都只使用原始类型作为命令和事件的属性.
命令是面向数据的,而不是面向对象的.它的属性应该主要是原始的.你没有在这里建模任何东西,只是发送平面数据.
使用自定义类型会强制您将类型发布到要使用命令的每个客户端.它还可以防止您将来更改这些类型而不会有任何麻烦.
然后就是可加性:自定义类型越少越简单.
在命令和事件之类的消息中,我尽可能地使用原语.复制不是问题,你需要低耦合,可串行化,改变容差.