Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我什么时候需要WCF中的datacontract,使用简单类型会更好吗?_C#_Xml_Wcf_Serialization - Fatal编程技术网

C# 我什么时候需要WCF中的datacontract,使用简单类型会更好吗?

C# 我什么时候需要WCF中的datacontract,使用简单类型会更好吗?,c#,xml,wcf,serialization,C#,Xml,Wcf,Serialization,我在设计WCF服务时遇到一些问题。基本上,我需要该服务来接收XML文档。xml映射到从xsd.exe生成的类。我本来就有这个, public void AddDocument(string xmlString) 然后将xml反序列化到生成的类中。我被告知这是一个坏主意,因为我正在做额外的工作,因为如果我只是将document类用作如下参数,wcf将为我执行序列化: public void AddDocument(MyGeneratedClass document) 我是WCF新手,但如果我这

我在设计WCF服务时遇到一些问题。基本上,我需要该服务来接收XML文档。xml映射到从xsd.exe生成的类。我本来就有这个,

public void AddDocument(string xmlString)
然后将xml反序列化到生成的类中。我被告知这是一个坏主意,因为我正在做额外的工作,因为如果我只是将document类用作如下参数,wcf将为我执行序列化:

public void AddDocument(MyGeneratedClass document)
我是WCF新手,但如果我这样做,我想我必须为
MyGeneratedClass
创建一个datacontract。生成的类有20000多行,因此这将花费永远的时间


我需要数据合同吗?无论如何,我认为我遗漏了一些东西,所以我希望这是有意义的,如果有人能给我指出正确的方向,我将不胜感激。谢谢

如果您的方法只需要一个或两个参数,并且只返回一个简单类型值,那么我将使用简单类型

一般来说:

  • 如果您需要传入多个(少于5个)简单类型,请使用某种类型的
    Request
    对象,否则您的调用会变得很麻烦

  • 如果需要返回多个单一的简单类型值,请使用
    响应
    对象将这些值捆绑起来

我会尽量避免发送和接收XML,并对其进行解析——尽量来回发送真正结构良好的(数据)对象——更易于处理和类型安全