设计用于流量压缩的移动Web服务器和客户端

时间:2011-11-29 22:24:34

标签: web-services http servlets java-me compression

我对如何最好地解决这个问题感到有些困惑。

事情:我正在创建一个j2me移动应用程序,它将通过HTTP将压缩数据发送到Web服务器,然后Web服务器将解压缩请求,获取数据,压缩数据并发送回客户端。

一个类似的解决方案是:T-Booster

问题:我对如何从客户端应用程序发送压缩的http请求,服务器使用什么技术以及如何最好地实现它感到困惑。 假设服务器一次处理数千个请求,对整个应用程序会产生什么影响?

评论非常感谢。 感谢。

2 个答案:

答案 0 :(得分:4)

方法I:最高标准:压缩,安全和建筑设计自由

实现数据压缩的最佳可行方法是创建移动客户端及其服务器无法理解的自定义语言。您可以使用GZIP / LZW或任何其他压缩算法为其添加下一级压缩。

优点:

  1. 使用最少的标头自定义有效内容并将其发送到服务器。
  2. 从屋檐下降相对安全,额外的加密水平也不会造成伤害,但需要根据需要进行考虑。
  3. 拖曳水平压缩减少总有效负载。
  4. 除非您使用GZIP /加密库,否则不依赖于任何第三方编码器/解码器库。因此它可以跨平台移植。
  5. 由于没有使用第三方库,假设没有gzip且没有加密算法,没有商业许可的麻烦。
  6. 缺点:

    1. 难以维护自定义语言,应该支持架构,设计和javadoc的
    2. 如果使用多个压缩器,则创建有效负载的时间相对较长。自定义语言编码,GZIP压缩和加密库。
    3. 示例:在此链接Opera Mini上阅读功能部分。

      方法II:最高标准:严格的项目时间表

      为了快速支付项目,请使用第三方压缩器,如GZIP和行业标准的Web服务内容交换格式,如SOAP和JSON。

      优点:

      1. 快速集成,遵循标准方法,使Web服务器组件更易于开发
      2. 没有时间消耗发明轮子,就像说在构建和开发自定义语言时没有浪费时间。
      3. 缺点:

        1. 级别压缩由第三方库驱动,其中实际内容可能未被压缩。该库只会重构类似于Shannon / Rate-Distortion理论。
        2. 压缩在低端/高端设备中的工作原理相同,因此堆内存消耗可能会在低内存设备上受阻。
        3. 依赖于第三方库,您永远不知道何时撤回支持。
        4. 使用第三方库时,您可能会陷入商业许可的恶性循环,除非您使用开源库。
        5. 示例: http://developers.sun.com/mobility/apis/articles/wsa/

          修改:一些非常有用的链接

          1. Informit
          2. DevX
          3. Design Mobile Webservices
          4. Providing web services to mobile users: the architecture design of an m-service portal

答案 1 :(得分:0)

我不是J2ME开发人员,但想分享我作为Java开发人员的观点。如果您正在与您的Web服务器通信,那么我猜您将调用Web服务(SOAP或REST)。我做了类似于Web服务的SOAP,以便在一段时间后压缩通信。这是我所遵循的。 http://www.predic8.com/soap-compression-howto.htm