【问题标题】:WCF - way of using data contractsWCF - 使用数据合约的方式
【发布时间】:2011-08-21 13:20:26
【问题描述】:

如果我有一个所有模块在内部使用的 核心类,然后我想发布一个 wcf 服务 来使用这个类.. .那么最好的方法是什么? 直接将其标记为数据契约更好,还是更好地创建一个新类作为数据契约,该类继承或映射到核心结构,或者......你怎么办建议伙计们?

【问题讨论】:

标签: c# wcf model datacontract


【解决方案1】:

任何一个都可以,因为在大多数情况下,客户端将获得 WSDL/MEX 表示 - 而不是您的类型。无论哪种情况,请记住使用显式的[DataContract]/[DataMember] 属性,以便它真正基于合同,而不是查看字段。

(注意:不要继承您的域类型的 DTO;如果您采用该方法,则 DTO 应该是独立的)

就个人而言,我更喜欢单独的 DTO,但我知道人们已经成功地直接公开了域模型(例如,LINQ-to-Data-Services 就是这样工作的)。

【讨论】:

  • 非常感谢您的反馈。那么,如果两者都能奏效,哪一个会更好呢?如果我想出第二个服务,它使用相同的类,但略有不同,该怎么办?
  • @Cristi - 在这种情况下,单独的 DTO。如果没有第二个服务的额外上下文”,任何一个都是可行的。我更喜欢单独的 DTO,但这只是主观的,直到您有特定要求以一种方式或另一种方式推动它。
  • 非常感谢马克。你一直很有帮助。在我结束这个问题之前,您能否检查一下我的这个问题:stackoverflow.com/questions/5913177/…。在这里,每个人都说我应该使用继承,我很确定我不应该这样做。它非常接近这个问题,所以请,如果你有时间并想提供帮助。我只是想确保我朝着正确的方向前进。
  • 实际上,这是一个使用核心类的 2 个不同服务的具体案例。
  • @Cristi - 哇,我讨厌那个;非常少的隔离等。当然取决于你。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-17
  • 2015-10-29
相关资源
最近更新 更多