WCF:减少数据交换GZipMessageEncodingBindingElement +二进制内编码器?

时间:2012-05-25 07:20:21

标签: c# .net wcf encoding wcf-binding

我有一个由服务器和客户端应用程序组成的解决方案。

问题是大多数用户通过小型GPRS连接进行连接,并且与服务器同步数据的速度很慢,因此我正在寻找一些方法来减少交换数据的大小。

实际上,应用程序使用带有TextMessage编码的HTTP连接。

我看到我可以使用二进制编码对其进行编码,这将节省一些时间,而且我还看到有一个gzip编码器:http://msdn.microsoft.com/en-us/library/ms751458.aspx

在示例中,它有一个textMessage内部编码器,但我想知道是否有任何理由不使用二进制内部编码?

在gzipping之前进行二进制编码是否有效?

1 个答案:

答案 0 :(得分:0)

您必须使用特定数据分析各种选项才能回答这些问题。例如,我使用protobuf-net数据(一个不相关的二进制序列化器)做了很多工作, 压缩是否取决于确切的数据。如果数据是基于文本的,或者有很多重复,那么即使在二进制序列化之后它也可能会很好地压缩。但是,在许多情况下,尝试gzip数据会导致增加的大小。

因此;这是非常具体的数据。

如果带宽是您的主要问题,我可能会说:检查WCF和DataContractSerializer之类的东西是否对您有所帮助。就个人而言,我会看一些较小的东西(可能是json或protobuf-net)和原始套接字或基本的http主体。一些bandwidth comparisons here