在领域驱动设计中将通用序列化类放在哪里?

Her*_*ter 4 architecture domain-driven-design

我试图在我的设计中遵循 DDD 原则,并且我试图保持我的域实体干净。我必须创建序列化器类(使用 json.net),但我不知道把它放在哪里。我考虑了以下选择:

  • 创建一个实用项目很容易,但它只会让洋葱刺穿。
  • 它有点类似于存储库,因为它包含实际实现并具有依赖性(就像存储库使用 EF 一样),但它不存储对象,只是转换它。
  • 它不是领域服务,因为它不包含业务逻辑
  • 将其放入应用程序或 UI 等外层对我来说没有太大意义。

这是我的项目结构:

网络


应用


领域服务

存储库


领域模型

L-F*_*our 5

如果您使用洋葱架构,则意味着您使用接口来避免从中环到外部基础设施的硬依赖;实际的实现是在运行时注入的。

序列化功能是一个基础设施问题,因此逻辑属于那里,但是从域层,您可以针对其接口进行编程,因此您不依赖于实际的序列化实现,这就是洋葱架构的整体思想:如果以后序列化方法发生变化,仅影响基础设施层。