现在的位置: 首页 > 综合 > 正文

如何优化WebService进行大批量数据传送(WSE3.0应用技巧)

2013年09月06日 ⁄ 综合 ⁄ 共 7174字 ⁄ 字号 评论关闭

在网上找了一下资料,用WebService进行大量数据传送的人并不多,主要原因是因为传送速度慢,因为WebService是以XML文件流的方式来传送的,写过XML的人都知道,XML中会有很多冗余的内容,比说字段名,他是每一行就要写一次,如果有约束,还要附加很多描述语句,而且从WebService返回数据时,还要进行64位编码,所以用WebService进行通迅效率很低.找了好久终于找到了一位高手的文章,原来WebService可以通过三步瘦身,但他用的方法是VS2003+wse2.0,而我用的是Vs2008+Wse3.0写法有所不同,于是写下此日志,帮助自己记录,也希望帮到有相关需求的人.

正文:

1.将DataSet设置为用于远程传送的精简二进制模式
2.用压缩程序对数据进行压缩(此处使用微软提供的ICSharpCode.SharpZipLib.dll)
3.使用WSE3.0的MTOM技术优化SOAP.
WSE3.0配置:

安装完WSE3.0后,你会发现安装目录下会有一个WebService3.dll,要将其引入到WebService项目中(不能像VS2005中可以直接创建一个WSE3.0的项目),然后要配置Web.config,置于具体的配置写法可以用Wse3.0安装目录下的WseConfigEditor3.exe进行配置,例如要开通MTOM,则先在General页中勾选Enable this project for Web Service Enhancements,再在Messaging页中Client Mode选择on 然后关闭程序,会提示生成配置文件,打开文件,将相关项目填回Web.config中就可以使用了.

具体Web.config内容如下

具体代码:

一.压缩类:

 

二.客户端:

三.WebService

 

经此方法可以将原数据量大大压缩2/3以上,只是原来的1/3左右

 

qingyou0405 发表于2009年5月25日
PackDs(Ds, LinLimit), 能提供此方法的源代码吗?我现在在做一个功能,涉及到webservice远程数据传输, 我的email 33353405@163.com , 希望你能答复 。
turejackon 发表于2009年6月6日
回复 qingyou0405:PackDs(Ds, LinLimit)是用于装上传数据划分为若干个数据包,程序好简单,用一个同构DataSet每次取上传数据中的若干数据后清除相关行就可以了

malingxian 发表于2010年1月23日
ICSharpCode.SharpZipLib.dll是微软提供的?你很强啊turejackon
回复 malingxian:吓....不是吗,因为我也是看一个例子改过来的..他那里说是微软提供的.
malingxian 发表于2010年3月3日 10:57:51
回复 turejackon:呵呵,确实不是。如果用.NET 2.0以上的话,可以用MS内置的ZIP工具压缩。 很不幸,我也用WebService进行大数据量传输,也用SOAP进行压缩,但是Dataset的压缩应该单独拿出来进行优化。我的做法是 Dataset->XML->Byte[]进行压缩这样做的好处是要比Dataset单独进行压缩数据量小更多,速度上也没有什么影响。 你可以比较一下Dataset经SOAP后跟XML的大小,数据量越大,XML相对越小——因为二者结构不一样。
chen_chen121212 发表于2010年1月25日 19:08:13
c++做的服务器,用.net引用wsdl后找不到方法了,为啥啊???
你好,我按照你上面的方法,配置Web.config时,老是提示未能找到元素“****”的架构信息,网上相关资料比较少,能不能在线指导一下,我的email是xmlttys0@163.com

出处:http://blog.csdn.net/turejackon/archive/2009/03/05/3958962.aspx

 

 

 

抱歉!评论已关闭.