我在我的域中有一个聚合,它有一些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; }
}
在上面的代码中,AgencyTitle
在当前域中不存在,我想通过Restfull从另一个实时服务获取它,并将聚合对象发送到客户端。
这是一种可接受的方式吗?
答案 0 :(得分:4)
听起来您正在谈论的是您向用户而不是聚合呈现的阅读模型。
有多种方法可以解决这个问题:
本地缓存
在您的服务中本地保留内存缓存,以便在AgencyId和AgencyTitle之间进行映射 - 这可以通过:
对数据进行非规范化
您可以通过将AgencyTitle与AgencyId一起保存来复制数据。这样您就无法调用外部服务。权衡是你需要考虑AgencyTitle可能改变的频率,以及你如何处理这种变化。
举报“域名”
您可以拥有一个完全独立的服务,用于侦听来自其他服务的数据并维护UI的视图模型。这将使您的其他服务不了解其他服务的顾虑。使用事件驱动系统时,您将从其他服务中侦听事件,以便为UI构建视图模型