代码之家  ›  专栏  ›  技术社区  ›  Sean

使用WCF服务的Win CE 6.0客户端-减少带宽

  •  2
  • Sean  · 技术社区  · 14 年前

    我们有一个WinCE6.0设备,需要它来使用将使用WCF提供的服务。我们正试图尽可能减少带宽使用,通过一个简单的测试,我们发现使用UDP而不是HTTP可以节省大量的数据使用。

    我了解到在.NET Compact Framework 3.5设备上WCF有一些限制,并且很好奇人们认为什么是合适的前进方式。开发一个自定义的UDP绑定是否有意义,这是否对双方都有效?

    如有任何反馈,我们将不胜感激。谢谢。

    1 回复  |  直到 14 年前
        1
  •  3
  •   Marc Gravell    14 年前

    虽然HTTP确实有一些开销,但是如果这正在成为您数据使用的重要组成部分,那么我会怀疑您的API太“健谈”,应该考虑更少的消息(每个消息承载更多的负载)。

    下一点是:我们如何减少给定负载量的带宽?压缩是一种选择,但在某些平台上可能是一个问题。另一种方法是使用一种串行化格式,这种格式具有固有的密集性和处理效率(就CPU周期而言,因为您使用的是低功耗设备)。为此,像“协议缓冲区”之类的东西是理想的。

    Protobuf NET是.NET协议缓冲区的一个与CF兼容的实现;CF构建没有所有好的WCF功能(因为CF不支持它们),但是它可以非常有效地工作。

    另外,如果你 应该考虑使用HTTP,然后使用MTOM,因为这样可以减少二进制数据的编码开销(即protobuf-net将使用什么)。

    移动到UDP 可以 是一个选项,但我会尝试类似http+protobuf net+mtom的方法 第一 (再加上一个不那么“健谈”的API),看看它是如何堆积起来的。

    我还应该注意到 现在的 (可下载)Protobuf NET的版本与CF有一些“纠结”;它可以工作,但速度不够快等(由于CF上的元编程的限制)。“V2”产品(尚未发布)解决了所有这些问题,允许在CF上完全静态(和快速)执行。最重要的是,它是免费的。