Mik*_*son 0 domain-driven-design
我的网域中有一些Guid二级密钥,我想通过RESTfull从其他域中获取有关这些密钥的更多信息。
public class ProductAggregate
{
public Guid Id { get; set; }
public Guid UserId { get; set; }
public Guid AgencyId { get; set; }
public string AgencyTitle { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码中AgencyTitle,当前域中不存在此代码,我想通过Restfull从另一个实时服务中获取它,并将聚合的对象发送到客户端。是否可以接受?
听起来您正在谈论要呈现给用户而不是聚合的读取模型。
您可以通过多种方式处理此问题:
本地缓存
在您的服务中本地保留一个内存缓存,该缓存在AgencyId和AgencyTitle之间映射-可以通过以下方式进行:
对数据进行非规范化
您可以通过将AgencyTitle与AgencyId一起保存来复制数据。这样,您就无需呼叫外部服务。权衡是您需要考虑AgencyTitle可能多久更改一次,以及您如何处理该更改。
报告“域”
您可能拥有一个完全独立的服务,该服务侦听其他服务的数据并维护UI的视图模型。这会使您的其他服务无视其他服务的顾虑。当使用事件驱动的系统时,您将侦听来自其他服务的事件,这些服务允许您为UI构建视图模型。