我在设计WCF服务时遇到了一些麻烦。从语言上讲,我需要服务来接收XML文档。 xml映射到从xsd.exe生成的类。我本来就是这样的:
public void AddDocument(string xmlString)
然后我将xml反序列化为生成的类。我被告知这是一个坏主意,因为我正在做额外的工作,因为如果我只使用文档类作为这样的参数,wcf会为我做序列化:
public void AddDocument(MyGeneratedClass document)
我是WCF的新手,但如果我这样做,我认为我必须为MyGeneratedClass
创建一个数据提取。生成的类是20,000多行,所以这将永远。
我需要DataContract吗?无论如何,我想我错过了一些东西,所以我希望这是有道理的,如果有人能指出我正确的方向,我会非常感激。谢谢!
答案 0 :(得分:2)
如果你的方法只需要一个或两个参数,我会使用简单类型,并且只返回一个简单的类型值。
作为一般规则:
如果您需要传递的不仅仅是少数(少于5种)简单类型 - 请使用某种Request
对象,否则您的通话会变得笨拙。
如果您需要返回多个单一简单类型值,请使用Response
对象捆绑这些值。
我会尽量避免发送和接收XML并解析它 - 尝试来回发送真正结构良好的(数据)对象 - 更容易处理和类型安全而且全部!