实体框架数据压缩

Phi*_*ray 1 .net vb.net compression entity-framework

我有一个WCF Windows服务,通过压缩数据集向250多个PDA提供数据,并且正在寻求重新开发服务和移动应用程序以使用Entity Framework 4.x模型.

为了在PDA上发送/接收数据时保持性能可接受,我需要保持尽可能小的数据大小,并且想知道是否可以从WCF Windows服务压缩IEnumerable?

根据之前的数据集经验,我获得了80%+/ - 压缩率,甚至解压缩PDA上的数据也实现了50%的性能输入,因此保持相似的性能水平至关重要.

编辑:我可以使用二进制序列化程序,然后压缩流? 如图所示

Jam*_*mes 6

如果您不能使用内置的IIS GZip功能,那么您可以随时手动执行此操作,例如

public static byte[] Compress(this IEnumerable<T> list)
{
    using (var stream = new MemoryStream())
    {
        using (var zip = new GZipStream(stream, CompressionMode.Compress, true))
        {
            var formatter = new BinaryFormatter();
            formatter.Serialize(zip, list);
        }
        return stream.ToArray();
    } 
}
Run Code Online (Sandbox Code Playgroud)

然后让你的WCF方法返回一个字节数组,然后你可以在客户端解压缩和反序列化.

上面的代码是一种扩展方法,所以你基本上可以调用return myList.Compress().