域对象应该实现IXmlSerializable吗?

时间:2009-12-04 04:07:09

标签: c# domain-driven-design ixmlserializable

我正在构建一个以XML格式公开数据的REST API。我的域层中有一大堆域类,供API背后的服务层和我们将提供给客户的客户端API使用。 (客户可以选择直接与REST API交互,但客户端API简化了事情)。我希望保持我的域类清除任何数据持久性逻辑,但我试图弄清楚域类是否可以实现IXmlSerializable以帮助简化序列化通过和检索的数据的过程。 API。我开始认为我保持域类没有任何序列化逻辑,而是使用序列化行为来装饰它们,例如将域对象包装在处理序列化的对象内。我的事情比他们需要的更复杂吗?有关如何处理此问题的任何想法?谢谢!

1 个答案:

答案 0 :(得分:5)

域类应仅关注业务逻辑,而不是持久性或序列化。

您应该创建一组数据传输对象(DTO)类,每个类对应一个域类。这些类只包含您决定公开的域类的属性。这允许域类具有不通过持久性或序列化层公开的属性。

只有DTO对象才会被序列化和反序列化。

然后,您可以发现创建静态“翻译”方法以在域和DTO对象之间进行转换很方便。