【问题标题】:Sending XML over WCF?通过 WCF 发送 XML?
【发布时间】:2011-10-19 16:16:19
【问题描述】:

我正在开发一个 WCF SOA(ish) 架构应用程序,我需要接收和返回 XML。

我已经在网上搜索了最佳实践。我唯一知道的是将原始 xml 作为字符串发送会导致问题。

因此,我正在研究一个 XmlTextReader 类型的对象,它可能更优雅地从 a 编组到 b 然后再返回。

当我尝试调用将 XmlTextReader 作为类型的服务时遇到错误,坦率地说,这让我很困惑。

底线它需要接受和接收大量 xml,我不能/不想使用我自己定义的类型。

有什么帮助吗?

【问题讨论】:

  • 网络没有所有的答案...(免费)。您应该考虑购买一本 C# XML 书籍,例如“使用 C# 2008 开始 XML:从新手到专业人士”或“C# XML 入门:C# 程序员的基本 XML 技能”。如果您打算在 C# 中读取/写入大量 xml,那么您真的应该知道自己在做什么。此外,当您使用 .net 4 时,您可能需要阅读 LINQ。有关相关问题,请参阅 stackoverflow.com/questions/55828/…
  • 该死的书 :) 我知道我知道我必须变得精明,但 da bawz 昨天想要它!近乎完美就足够完美了:)谢谢!

标签: c# .net xml wcf


【解决方案1】:

一个没有更深入分析的答案:您可以将 XML 转换为 Base64 编码的字符串并像这样发送。

【讨论】:

  • 嗯仍然可能有大小问题..一旦它到达那里我没有问题处理但由于某种原因它不会编组 XmlTextReader 我只是得到'对象引用未设置为一个对象的实例。没有证据表明这种类型不能编组。
  • 我不会代替你这样做,因为即使你让它工作,你的服务也不会在其他平台上工作。为什么你会遇到 base64 的大小问题?你的 xml 有多大?
  • 嗯,我从服务返回的 XML 很容易突破字符串的 8k 限制。我只是不想返回自制的复杂数据类型,因为我无法说出谁或什么可能调用该服务。因此我探索了一个框架 XML 容器。该死的 XML 太冗长了。
  • 您可以随时对其进行压缩并以字符串形式返回 XML 的压缩版本(转换为 Base64)。此外,您可以通过更改 Binding 定义中的 maxStringContentLength 轻松增加字符串大小。这不是一个大而复杂的问题。
【解决方案2】:

您可以使用 XElement - 个人只在相对较小的 Xml 块上使用它 - YMMV。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-10
    • 1970-01-01
    • 2012-03-29
    • 1970-01-01
    • 2013-04-27
    • 1970-01-01
    相关资源
    最近更新 更多