Phi*_*ray 1 .net vb.net compression entity-framework
我有一个WCF Windows服务,通过压缩数据集向250多个PDA提供数据,并且正在寻求重新开发服务和移动应用程序以使用Entity Framework 4.x模型.
为了在PDA上发送/接收数据时保持性能可接受,我需要保持尽可能小的数据大小,并且想知道是否可以从WCF Windows服务压缩IEnumerable?
根据之前的数据集经验,我获得了80%+/ - 压缩率,甚至解压缩PDA上的数据也实现了50%的性能输入,因此保持相似的性能水平至关重要.
编辑:我可以使用二进制序列化程序,然后压缩流? 如图所示
如果您不能使用内置的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().