我试图在我的设计中遵循DDD原则,并且我试图保持我的域实体清洁。我必须创建序列化程序类(使用json.net),我不知道在哪里放它。 我考虑了以下选项:
这是我的项目结构:
网络
应用
DomainServices
存储库
的DomainModel
答案 0 :(得分:2)
如果您使用洋葱架构,则意味着您使用接口以避免从中间环到外部基础架构的硬依赖性;并且在运行时注入实际的实现。
序列化功能是一个基础设施问题,因此逻辑属于那里,但是从您的域层开始,您可以针对其接口进行编程,因此您不依赖于实际的序列化实现,这是洋葱架构的全部概念:如果稍后序列化方法发生更改,则只影响基础架构层。
答案 1 :(得分:1)
通用基础架构代码未在特定物理层或逻辑层中表示。相反,它可用于您的所有代码。
考虑您的语言/平台的标准库中的代码。它代表了无处不在的基础设施和功能代码。
"它不是域服务,因为它不包含业务逻辑"
域服务不包含业务逻辑。
您描述了一个复杂的技术层/层"堆栈"。如果它不合理,那么它并不代表良好的做法。