【问题标题】:Dynamic data contracts in WCFWCF 中的动态数据协定
【发布时间】:2011-06-17 14:45:50
【问题描述】:

在客户端和 WCF 服务之间传输实体存在一些痛点。

  • 通过序列化所有属性来击败延迟加载
  • 序列化数据可能会不必要地膨胀
  • UI 和业务层之间的一些耦合

解决这些问题的一种方法是传输 DTO 而不是实体,但我知道这种技术有其自己的一组警告(我知道的最大的一个是维护这些特定于功能的 DTO 所需的类型)。

我认为如果服务实现可以动态生成这些 DTO 和this appears to be possible,那就太好了。不幸的是,看起来合同在客户端(即“对象”)的定义很松散,这听起来像是一种可能的风险。

是否建议以这种方式使用动态 DTO,或者是否有另一种方法来使用 DTO,而无需为每个 DTO 创建/维护类?

我认为圣杯将是实现动态生成 DTO 但客户看到定义明确的合同的地方。我猜这对 WCF 来说是不可能的。

【问题讨论】:

    标签: wcf soa dto


    【解决方案1】:

    我想问题是你要从什么生成它们?您必须在某处对要传输的数据进行一些描述。如果您拥有的只是域对象,那么您最终会处于通过域对象传输数据的类似位置。

    DTO 启用的关键功能之一是解耦,因此您可以在不意外破坏服务使用者的情况下发展域对象。如果您动态生成 DTO,那么您将级联更改 - 除非您将动态创建视为一次性练习以开始使用 DTO

    【讨论】:

      【解决方案2】:

      DTO 与其他任何数据合同一样,必须进行定义。当您选择使用 DTO 时,您将增加一层您必须维护的复杂性。有一些工具可以帮助您在域对象和 DTO 之间进行映射(例如 AutoMapper),但您的职责是定义 DTO 应该传输的内容——这很难自动完成。即使使用自动化工具,您仍然需要维护一些用于生成代码的 DTO 定义。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-29
        • 2011-03-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多