Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.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
WCF服务具有两种方法—一种用于结构化结果,另一种用于原始XML结果。有更好的办法吗?_Xml_Wcf_Wsdl - Fatal编程技术网

WCF服务具有两种方法—一种用于结构化结果,另一种用于原始XML结果。有更好的办法吗?

WCF服务具有两种方法—一种用于结构化结果,另一种用于原始XML结果。有更好的办法吗?,xml,wcf,wsdl,Xml,Wcf,Wsdl,我正在设计一个WCFWeb服务方法,它可以根据客户机的偏好以原始XML字符串或结构的形式返回结果 一种简单的方法是采用两种不同的方法: MyStructure GetData(); string GetDataAsXML(); MyStructure GetData(); 字符串GetDataAsXML(); 这应该可以很好地工作,但考虑到这两种情况下的导线表示是相同的(或至少是等效的),我想知道是否有更好的方法在接口中表示这一点?例如,有没有一种优雅的方法可以将这两种方法合并为一种方法?嗯,无

我正在设计一个WCFWeb服务方法,它可以根据客户机的偏好以原始XML字符串或结构的形式返回结果

一种简单的方法是采用两种不同的方法:

MyStructure GetData(); string GetDataAsXML(); MyStructure GetData(); 字符串GetDataAsXML();
这应该可以很好地工作,但考虑到这两种情况下的导线表示是相同的(或至少是等效的),我想知道是否有更好的方法在接口中表示这一点?例如,有没有一种优雅的方法可以将这两种方法合并为一种方法?

嗯,无论哪种方法,您的结果都将是XML。一个看起来像这样

<Response>
<SomeTags>
  <SomeTag />
  <SomeTag />
  <SomeTag />
</SomeTags>
</Response>
<Response>
<Data>
   &lt;SomeTags&gt;
      &lt;SomeTag /&gt;
      &lt;SomeTag /&gt;
      &lt;SomeTag /&gt;
   &lt;/SomeTags&gt;
</Data>
</Response>

另一个看起来像这样

<Response>
<SomeTags>
  <SomeTag />
  <SomeTag />
  <SomeTag />
</SomeTags>
</Response>
<Response>
<Data>
   &lt;SomeTags&gt;
      &lt;SomeTag /&gt;
      &lt;SomeTag /&gt;
      &lt;SomeTag /&gt;
   &lt;/SomeTags&gt;
</Data>
</Response>

一些标签
某物标签/
某物标签/
某物标签/
/一些标签

我只会坚持第一种方法,让您的客户了解他们想要如何解析信息。

为什么不只使用GetData()-然后让客户决定是否将其反序列化?只提供GetData()的主要问题是性能。如果客户机需要XML,直接返回XML会更有效,而不是让客户机代理将其反序列化,然后让客户机应用程序再次将其序列化为XML。我支持Jeremy的建议-只要使用“MyStructure”,如果客户机真的需要原始XML,它总是可以序列化为XML—我认为工作起来容易得多—而且我不确定它是否真的会对性能造成那么大的影响(我怀疑—先测量它,然后再过早地优化!)@Dylan:这都是XML在线。总是。此外,我怀疑您是否会注意到反序列化的开销,尤其是在使用数据契约的情况下。它们相当快。