【问题标题】:Can I use a rich domain model with WCF?我可以在 WCF 中使用富域模型吗?
【发布时间】:2009-11-30 19:33:11
【问题描述】:

如果您的应用程序是这样的,是否可以使用 DDD 和富域模型:

  • Windows 客户端 (WPF)
  • windows 服务

然后通过 WCF 进行通信?

我习惯了只有数据状态的 DTO,并且在服务层中有业务规则,但是每个人都一直告诉我,我应该有一个丰富的域模型,其中数据状态和规则/方法都在对象本身中.

我只是不确定这个富域模型是否适用于具有 UI 并通过 WCF 与服务通信的系统(就像我在上面介绍的那样)。就我而言,由于 WCF,继续使用贫血域模型会更好吗?如果没有,您能否举例说明如何使用富域模型构建它,考虑 WCF、代理等?

谢谢!

【问题讨论】:

    标签: wcf architecture domain-driven-design anemic-domain-model


    【解决方案1】:

    一般来说,您将域对象序列化为跨 WCF 传输,无论如何都是一些简化的 DTO,而您的客户端应用程序使用的正是这些对象。

    您可以serialize user defined types 并在客户端中反序列化它们,但对于大多数应用程序来说这是不必要的。只要您不需要客户端中对象的“丰富”行为(无论如何您都不应该使用良好的 DDD),在我看来,您可以在服务层中使用丰富的设计并且通过网络发送简单的 DTO。

    【讨论】:

    • 感谢肉体。在这种情况下,我会有重复的定义。例如,对于用户,我将有一个用户域对象(带有数据状态和方法)和一个用户 DTO(只有数据状态)。这是一件好事还是可以接受的事情?谢谢
    • 是的,没关系。事实上,这通常是您用于支持 Web 服务和智能客户端应用程序等内容的模式。我使用类似的模式 - 传递状态包/DTO 以供客户端使用,并在域中使用更丰富的模型来封装行为。
    • @flesh: "...只要你的客户端不需要对象的'丰富'行为(无论如何你不应该使用好的 DDD)..." .这是一个相当严厉的限制!您是否建议客户端 PC 不应该执行逻辑?
    • 是的,我也不明白——验证逻辑呢?我希望将验证逻辑作为我的域模型的一部分,但是在用户填写表单时能够应用它也很有帮助。我不想重复这个逻辑,但是如果 UI 只使用 DTO,它会如何共享呢?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-21
    • 2019-08-16
    • 2010-12-13
    • 1970-01-01
    • 2019-03-04
    • 1970-01-01
    相关资源
    最近更新 更多