【问题标题】:ASP.NET 3.5 WebService Compression for Flex用于 Flex 的 ASP.NET 3.5 WebService 压缩
【发布时间】:2009-08-17 10:07:42
【问题描述】:

我们有连接到我们的 ASP.NET 3.5 Web 应用程序的 Flex 应用程序,通常会下载大量数据。现在将 XML 视为传输方式,例如,对于每个项目,它会传输两次元数据.. 而不是像 <Customer CustomerID=23/> 那样传输 int 值,而是传输 <Customer><CustomerID>23</CustomerID></Customer> .. 现在这里是带宽节约成为问题的地方。

  1. FLEX 无法读取 GZip 和 DEFLATE 压缩的 HTTP 响应(因此无法使用其中任何一个)
  2. 我听说过一些WSCompression,但它需要 WSE 3.0 现在我怀疑在我的托管环境中引入太多依赖项,这需要太多管理和开销。 WSE 3.0 只有不需要在生产服务器上安装的 dll 库吗?是否需要重写所有WebService 属性?或者它是简单的一次性配置,或多或少,有人知道它是否适用于 Flex ?
  3. Flex 动态生成 W​​eb 服务,我们使用了很多它自动生成的代码,现在如果我们想要支持压缩,那么我们需要重写很多代码吗?

我能想到的最简单的解决方案是,减少不必要的 XML 标签并将它们缩减为属性以节省带宽。有没有一种简单的方法来实现它,我们的类有超过 50-70 个属性,我知道为每个属性添加属性将是一场噩梦,但我们不知道在 SOAP 的情况下如何做。

问题:

  1. WSE 3.0 到底是什么,它需要安装在生产服务器上吗?要启用 WSCompression,我们是否需要在我们的 Web 服务代码中集成额外的代码,例如每个 WebMethod 属性,我们是否需要在属性中添加更多代码?

  2. 1234563 /p>
  3. SOAP 是只有元素的标准格式还是可以支持属性?

【问题讨论】:

  • 从不使用 WSE!!! WSE 已过时,已被 WCF 取代。
  • WSCompression 仅通过 WSE 支持,我们不能使用 WCF,因为我们的客户端不是 .NET,它的 FLEX。我们想使用纯网络服务,我们不想坚持只使用微软的代码。
  • WCF 完全支持纯 Web 服务!是什么让您认为它只支持 Microsoft 代码?它是 ASMX 和 WSE 的替代品!如果它不能互操作,那就意味着微软已经完全放弃了互操作!

标签: apache-flex web-services soap asp.net-3.5


【解决方案1】:

最后我找到了使用 XmlAttribute 的解决方法

[XmlAttribute]
public long CustomerID;

强制将字段序列化为“属性”,但 SoapAttribute 的 MSDN 文档说明“将 SoapAttributeAttribute 应用于公共字段以指定 XmlSerializer 将该字段序列化为 XML 属性”。并且根据SOAP标准,它应该这样做,但它没有!

【讨论】:

    【解决方案2】:

    SOAP 支持属性和元素。

    【讨论】:

    • 那又是微软,从来不支持标准的100%,我将[SoapAttribute]应用于一个类的所有属性,尝试了各种组合,序列化总是在元素中,它不在属性中!!!
    • 好的,据记载 [SoapAttribute] 应该可以工作,但它不能工作,相反 [XmlAttribute] 工作,仍然需要检查 FLEX 中的实现细节。我会在检查完所有内容后更新答案。
    • 请仔细阅读文档。我知道这很令人困惑,但[SoapAttribute] 适用于您的情况。注意msdn.microsoft.com/en-us/library/… 的示例并与msdn.microsoft.com/en-us/library/… 进行比较。
    • 另外,出于好奇,[SoapAttribute] 与支持任何标准有什么关系?
    猜你喜欢
    • 1970-01-01
    • 2011-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-19
    • 1970-01-01
    相关资源
    最近更新 更多