如何减少上传到webservice的内容长度
2010-01-05 15:28
148 查看
假设我有一个方法,
[WebMethod]
public string DoCommand(string pCommandName,string pParameter)
{
return "ER|建议中";
}
他做很多的工作。并会根据pCommandName的不同来使用pParameter,pParameter有可能是一个对象的XML序列化的字符串。当一个对象很大时,如一个集合,我很担心上传的流量。我想到了压缩、二进制序列化、字节来改动上面的方法。
首先尝试改为字节参数
[WebMethod]
public string DoCommand(string pCommandName,byte[] pParameter)
{
return "ER|建议中";
}
使用TCP跟踪器,发现pParameter传送的base64的字符串,看来是框架自己加了处理。好了,那就看看压缩XML字符串和二进制序列化的比较了。//测试数据
List<EntityTest> ens = new List<EntityTest>();
for (int i = 0; i < 50; i++)
ens.Add(new EntityTest());
//转换为字符
string xmlStr = XmlSeriTool.Serialize(ens);
string binStr = ZipTools.GetBinaryBase64(ens);
string xmlDstr = ZipTools.GZipCompress(xmlStr);
string binDstr = ZipTools.GZipCompress(binStr);
this.richTextBox1.AppendText(string.Format("XML字长:{0}\nBIN字长:{1}\n压缩XML字长:{2}\n压缩BIN字长:{3}",
xmlStr.Length,
binStr.Length,
xmlDstr.Length,
binDstr.Length));
结果很有意思,如下:
XML字长:13280
BIN字长:9252
压缩XML字长:4868
压缩BIN字长:7024将对象序列化为XML的长度最长。先将对象执行二进制序列化,再取字节的Base64字符的长度,比直接XML序列化短2000多字。但把这两个字符用zip压缩后,两者都短了,但XML的字符更短!
我很乐意看到这个结果,毕竟使用XML序列化灵活一些。
[WebMethod]
public string DoCommand(string pCommandName,string pParameter)
{
return "ER|建议中";
}
他做很多的工作。并会根据pCommandName的不同来使用pParameter,pParameter有可能是一个对象的XML序列化的字符串。当一个对象很大时,如一个集合,我很担心上传的流量。我想到了压缩、二进制序列化、字节来改动上面的方法。
首先尝试改为字节参数
[WebMethod]
public string DoCommand(string pCommandName,byte[] pParameter)
{
return "ER|建议中";
}
使用TCP跟踪器,发现pParameter传送的base64的字符串,看来是框架自己加了处理。好了,那就看看压缩XML字符串和二进制序列化的比较了。//测试数据
List<EntityTest> ens = new List<EntityTest>();
for (int i = 0; i < 50; i++)
ens.Add(new EntityTest());
//转换为字符
string xmlStr = XmlSeriTool.Serialize(ens);
string binStr = ZipTools.GetBinaryBase64(ens);
string xmlDstr = ZipTools.GZipCompress(xmlStr);
string binDstr = ZipTools.GZipCompress(binStr);
this.richTextBox1.AppendText(string.Format("XML字长:{0}\nBIN字长:{1}\n压缩XML字长:{2}\n压缩BIN字长:{3}",
xmlStr.Length,
binStr.Length,
xmlDstr.Length,
binDstr.Length));
结果很有意思,如下:
XML字长:13280
BIN字长:9252
压缩XML字长:4868
压缩BIN字长:7024将对象序列化为XML的长度最长。先将对象执行二进制序列化,再取字节的Base64字符的长度,比直接XML序列化短2000多字。但把这两个字符用zip压缩后,两者都短了,但XML的字符更短!
我很乐意看到这个结果,毕竟使用XML序列化灵活一些。
相关文章推荐
- 如何通过WebService上传图片
- asp.net上传大文件-请求筛选模块被配置为拒绝超过请求内容长度的请求
- 如何限制多行输入框的内容的长度
- 如何让li中内容显示超过长度后以省略号显示
- 关于如何把canvas中的内容转换为图片上传到服务器的操作过程
- 如何解决上传文件时文件内容相同
- (原创)如何通过WebService上传图片
- adnroid如何上传图片到webservice(c#编写的)(原创)
- 如何使用webservice上传文件(vb.net版本 )
- 黑马程序员—关于winform中如何令textbox随输入的文本内容的长度而实时改变宽度
- ios上传应用后,审核流程完成前(reveiw)修改了程序内容,如何上传替换
- 如何让li中内容显示超过长度后以省略号显示
- 文件上传:HTTP错误 404.13-Not Found 请求筛选模块被配置为拒绝超过请求内容长度的请求
- asp.net上传文件,IIS【请求筛选模块被配置为拒绝超过请求内容长度的请求 】的解决办法
- 如何使用H5判断登录页面手机号码长度是否正确和账号密码不能为空,从而减少对服务器的请求(注册也一样)
- C#如何把Editor设计的内容上传到服务器端
- 如何控制asp.net控件TextBox输入内容的长度--(多种方法)
- c语言函数如何获取传入的数组(指针)的指针所指向内容的长度
- 如何在html中获取字符串长度,扩展css对标签内容多省略
- 如何读取、上传Android模拟器中sdcard的内容