Domain driven design 其中,本地化服务类应位于具有洋葱架构的DDD中

Domain driven design 其中,本地化服务类应位于具有洋葱架构的DDD中,domain-driven-design,onion-architecture,Domain Driven Design,Onion Architecture,我正在尝试使用洋葱架构学习DDD,但我遇到了一个问题 我的应用程序应该支持对标签、枚举、验证消息和某些实体中的某些数据(例如Item.ItemName)的本地化 因此,很明显,本地化过程与域和ui有关 此本地化服务还应支持缓存 现在我很困惑我应该把这个类放在哪里我还没有用DDD方法进行本地化,但我会尽力帮助你 本地化是一个表示数据的问题,我不认为您的领域模型应该关心它,如果它的唯一目的是表示的话。 那么如何处理呢 我会这样做的 假设客户正在创建新产品。当然,他必须为它定义一个名字。 您希望将每个

我正在尝试使用洋葱架构学习DDD,但我遇到了一个问题
我的应用程序应该支持对标签、枚举、验证消息和某些实体中的某些数据(例如Item.ItemName)的本地化
因此,很明显,本地化过程与域和ui有关
此本地化服务还应支持缓存

现在我很困惑我应该把这个类放在哪里

我还没有用DDD方法进行本地化,但我会尽力帮助你

本地化是一个表示数据的问题,我不认为您的领域模型应该关心它,如果它的唯一目的是表示的话。 那么如何处理呢

我会这样做的

假设客户正在创建新产品。当然,他必须为它定义一个名字。 您希望将每个产品名称翻译成不同的语言。如何做到这一点由您自己选择:

  • 每个产品的管理面板
  • 客户必须在创建新产品时提供
  • 字典
  • 混合所有这些
等等,这并不重要


因此,在您的
createNewProduct
视图中,您应该调用将创建新产品的产品服务,也可以调用将为该产品创建翻译的服务,但不要将翻译保存在域实体中。换句话说,您应该将处理业务逻辑和创建翻译的服务分开。然后在演示时按productId链接它们。

有什么帮助吗?这个问题让meSo很困惑,你说我应该从两个地方加载实体数据,一个是从域中加载整个实体,除了它的可本地化属性,另一个是在应用程序服务中加载可本地化属性,对吗?是的,但可能不在应用程序服务中,而是在基础设施层。若您将遇到性能问题,那个么您应该转向CQRS方法。