用于Flex的ASP.NET 3.5 WebService压缩

时间:2009-08-17 10:07:43

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

我们有Flex应用程序连接到我们的ASP.NET 3.5 Web应用程序,并且通常下载大量数据。现在考虑将XML作为传输,对于每个项目,它会传输元数据两次,例如..而不是传递int值<Customer CustomerID=23/>它传输<Customer><CustomerID>23</CustomerID></Customer> ..现在这里带宽保护成为一个问题。< / p>

  1. FLEX无法读取GZip和DEFLATE压缩的HTTP响应(因此无法使用其中任何一个)
  2. 我听说过一些WSCompression但它现在需要WSE 3.0我怀疑在我的托管环境中引入了太多的依赖,这需要太多的管理和开销。 WSE 3.0只是dll库,不需要在生产服务器上安装吗?是否需要重写所有WebService属性?或者是简单的一次性配置,或多或少,任何人都知道它与Flex一起工作?
  3. Flex动态生成Web服务,我们使用了很多自动生成的代码,现在如果我们想支持压缩,那么我们是否需要重写大量代码?
  4. 我能想到的最简单的解决方案是,减少不必要的XML标记并将其减少到属性以节省带宽。有没有一种简单的方法来实现它,我们的类有超过50-70属性,我知道为每个属性添加属性将是噩梦,但我们不知道如何在SOAP的情况下这样做。

    问题:

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

    2. 是否有一种简单的方法来标记属性和强制序列化的简单形式,如[SoapAttribute],它将数据转换为属性而不是标记,它是否可以与FLEX一起使用,还是可以与任何客户端一起使用?< / p>

    3. SOAP是否只有元素的标准格式,还是可以支持属性?

2 个答案:

答案 0 :(得分:1)

最后,我通过使用XmlAttribute

找到了解决方法
[XmlAttribute]
public long CustomerID;

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

答案 1 :(得分:0)

SOAP支持属性和元素。