1 / 12
文档名称:

提高WebService数据传输效率的基本方法.docx

格式:docx   大小:77KB   页数:12页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

提高WebService数据传输效率的基本方法.docx

上传人:wz_198613 2022/5/19 文件大小:77 KB

下载得到文件列表

提高WebService数据传输效率的基本方法.docx

文档介绍

文档介绍:提高 Web Service 数据传输效率的基本方法
如何提高 Web Service 的数据传输效率及其应用场景
王 云 (******@), 软件工程师, IBM 中国研发中心
简介: 本文介绍了在 方式举例说明。一般来讲,系统请求 XML 的体积相对较小,没有必要使用压缩和解压缩的方法处理请求 XML。而对于系统响应 XML 来讲,一般都包含大量的数据,导致其体积庞大,需要进行压缩处理。对响应 XML 进行压缩的流程如下:
服务器端数据模型-->序列化操作-->利用 gzip 方式对序列化后的 XML 进行压缩-->返回到客户端-->以 gzip 方式进行解压缩-->对解压缩后的 XML 进行反序列化操作-->客户端数据模型
这里需要说明的一点是,客户端以及服务器端的数据模型需要实现 Serializable 接口。
清单 2. gzip 方式压缩部分实现代码示例(java 实现)

import .*;
import .*;
public class Compress
{
public String gzip(OutputStream pStream)
{

try
{
GZIPOutputStream stream = new GZIPOutputStream(pStream);
return ();
}catch(IOException e){…}

return null;
}

}
在程序将对象模型序列化成 XML 之前,可以使用上面的压缩方法,对数据流进行压缩。部分代码如下:
清单 3. 对象模型序列化后再进行压缩的实现代码示例

public class XMLSerializerHelper
{

public static String saveOBJtoString(Object inputOBJ) throws ConverException
{
……
ByteArrayOutputStream outputStream = null;
try{
outputStream = new ();
((IXMLSerializable) inputObject, outputStream);
return (outputStream);
}catch(Exception e){…}
……
}

}
解压缩的过程也类似于上述代码。测试表明,采用 gzip 压缩可以减少60%以上的网络所带来的消耗。
2. 对于特定的数据进行特殊的处理
在企业日常的数据传输中,往往大量的数据具有很多共同的特点。数据和数据之间往往具有很多相同的地方,或者说,具有很多重复的地方。例如,在一个以 Web Service 为构架的报表处理系统中,报表往往会含有很多的空数据,或者相同属性和值域的数据,对于这样的情况,可以在代码中对特殊情况进行特殊的处理。我们同样以传输一个表格作为例子,如下:
表 2. 将要传输的含有多个空值的表格示例
Software sold
Hardware sold
System sold
Others
120
-
-
-
-
-
90
-
-
110
-
-
可以看到,上述表格具有很多的空值,那么在 XML 中完全可以把空值的部分统一处理,这样就能大大减少网络传输的数量,其对应的部分 XML 如下:
清单 4. 对空值进行处理后的简化 XML 示例

……
<NULL Value>(1,2),(1,3),(1,4),(2,1),(2,2),(2,4)(3,1),(3,3),(3,4)</NULL Value>
……
优点:
对于重复性的数据来说,该方法可以几十倍甚至上百倍的减少传输的数据量(这取决于数据重复的数量大小),相对于第一种压缩方式,由于只是对固定形式的数据进行处理,所以不会占用很大的 CPU 以及内存。
缺点:
数据的特点不容易把握,能够处理的情况比较简单和单一。对于空值或者某些值重复较多的情况,可以采用本方法。
解决方案二: 减少多次调用,尽量使用一次性的调用方式。
传统的 RPC 调用,