我什么时候需要在WCF中使用datacontract,并且使用简单类型会更好吗?

时间:2011-01-04 21:40:49

标签: c# xml wcf serialization

我在设计WCF服务时遇到了一些麻烦。从语言上讲,我需要服务来接收XML文档。 xml映射到从xsd.exe生成的类。我本来就是这样的:

public void AddDocument(string xmlString)

然后我将xml反序列化为生成的类。我被告知这是一个坏主意,因为我正在做额外的工作,因为如果我只使用文档类作为这样的参数,wcf会为我做序列化:

public void AddDocument(MyGeneratedClass document)

我是WCF的新手,但如果我这样做,我认为我必须为MyGeneratedClass创建一个数据提取。生成的类是20,000多行,所以这将永远。

我需要DataContract吗?无论如何,我想我错过了一些东西,所以我希望这是有道理的,如果有人能指出我正确的方向,我会非常感激。谢谢!

1 个答案:

答案 0 :(得分:2)

如果你的方法只需要一个或两个参数,我会使用简单类型,并且只返回一个简单的类型值。

作为一般规则:

  • 如果您需要传递的不仅仅是少数(少于5种)简单类型 - 请使用某种Request对象,否则您的通话会变得笨拙。

  • 如果您需要返回多个单一简单类型值,请使用Response对象捆绑这些值。

我会尽量避免发送和接收XML并解析它 - 尝试来回发送真正结构良好的(数据)对象 - 更容易处理和类型安全而且全部!