WebService压缩问题

matthew2000 2008-12-26 06:05:05
WebService如何进行压缩传输和接收?客户端每次发送100K大小的数据,服务器接收并存入数据库,怎样实现压缩?最好有例子。
...全文
492 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzuyongp 2009-02-17
  • 打赏
  • 举报
回复
恩,留个记号。。。这方面对传送较大的数据有用
tianwei262 2009-01-12
  • 打赏
  • 举报
回复
接2楼的调用部分
//webservices引用
TestWebService ds = new TestWebService();
byte[] zipBuffer = ds.GetDataSetSurrogateZipBytes();
byte[] buffer = UnZipClass.Decompress(zipBuffer);
BinaryFormatter ser = new BinaryFormatter();
DataSet DS = ds.GetDataSet();
DataSetSurrogate dss = ser.Deserialize(new MemoryStream(buffer)) as DataSetSurrogate;
DataSet dataset = dss.ConvertToDataSet();



public static byte[] Decompress(byte[] data)
{
try
{
MemoryStream ms = new MemoryStream(data);
Stream zipStream = null;
zipStream = new GZipStream(ms, CompressionMode.Decompress);
byte[] dc_data = null;
dc_data = EtractBytesFormStream(zipStream, data.Length);
return dc_data;
}
catch
{
return null;
}
}
yangxinglouis 2009-01-07
  • 打赏
  • 举报
回复
2楼的方法很好
通过这样压缩的比例可以达到90%几
同时注意接收数据后要解压缩并反序列化后才能得到正确结果
claymore1114 2008-12-27
  • 打赏
  • 举报
回复
[WebMethod(Description = "返回DataSetSurrogate对象用Binary序列化并ZIP压缩后的字节数组")]
public byte[] GetDataSetSurrogateZipBytes()
{
DataSet DS = GetDataSet();
DataSetSurrogate dss = new DataSetSurrogate(DS);
BinaryFormatter ser = new BinaryFormatter();
MemoryStream ms = new MemoryStream();
ser.Serialize(ms, dss);
byte[] buffer = ms.ToArray();
byte[] Zipbuffer = Compress(buffer);
return Zipbuffer;
}

public byte[] Compress(byte[] data)
{
MemoryStream ms = new MemoryStream();
Stream zipStream = null;
zipStream = new GZipStream(ms, CompressionMode.Compress, true);
zipStream.Write(data, 0, data.Length);
zipStream.Close();
ms.Position = 0;
byte[] compressed_data = new byte[ms.Length];
ms.Read(compressed_data, 0, int.Parse(ms.Length.ToString()));
return compressed_data;
}
magicam 2008-12-27
  • 打赏
  • 举报
回复
 
public byte[] Compress( byte[] data )//压缩二进制数据
{
MemoryStream ms = new MemoryStream();
Stream zipStream = null;
zipStream = new GZipStream( ms, CompressionMode.Compress, true );
zipStream.Write( data, 0, data.Length );
zipStream.Close();

ms.Position = 0;
byte[] Compress_data = new byte[ms.Length];
ms.Read( Compress_data, 0, int.Parse( ms.Length.ToString() ) );
return Compress_data;
}

12,162

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 Web Services
社区管理员
  • Web Services社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧