提高Web Service效率的几种方式(转)
2013-11-01 10:15
253 查看
2008-02-20 16:01
基于SOAP的Web Service的性能一直为人诟病,由于采用 XML标准进行系统间的数据传输,加大了传输的数据量,尤其是在传输一些具有比较严格结构的数据时,会使得传输效率有所下降,以至于有人认为如果真的要考虑性能,就不应该用SOAP。但无疑SOAP已然成长为一个通行的标准。作为开发人员,更需要考虑的是在此架构下如何提升Web Serive调用的效率,下面讨论的几种方式可供参考:
1.及时释放资源
通常,客户端的WebService代理类会一一对应生成所有的WebMethod的代理方法,从而直接导致了客户端Web Service代理类的体积庞大,而庞大的WebService代理实例将占用大量的内存。在设计时,建议应根据系统逻辑来规划Web Service类,不要把所有的操作方法都放在一个WebService类中;在使用时才去创建相关的WebService类。提倡尽量晚的创建,尽量早的释放。
2.让一次Web Service调用完成尽快多的工作
客户端应用程序应该尽量少地调用Web Service,在每一次调用Web Service的服务时也要尽量地把有用的信息处理在一次调用中完成,或是把多个远程Web Service调用封装在一个调用之中,以增加数据的使用率并且减少网络往复传输。例如,在查询数据时,尽量将WebMethod定义为getDataList(String query)以返回一个列表,而不是getDataById(int id)仅返回一条记录。
3. 对于整个 XML 传输文件进行压缩
经常用于对数据压缩的 API 有 gzip 等方式,在java.util.zip包中提供了相关的类。对象模型序列化成 XML 之前,可以对数据流进行压缩,再在XML接收端对已经压缩的文件进行解压缩。不过压缩和解压缩虽然可以使得 XML 的体积大大减少,但是其过程却是十分耗费CPU及内存。对于配置不高的客户端甚至是服务器端,都会造成不小的压力,建议用于网络瓶颈突出的情况或是主机配置比较高的情况。
4. 选择高效的XML解析器
XML解析器最基本的方式有DOM和SAX两种,DOM解析器的优点在于:1.XML树在内存中完整存储,可以直接修改其数据和结构;2.可以通过该解析器随时访问XML树中的任何一个节点; 3.DOM解析器的API在使用上也相对比较简单。但缺点在于如果XML文档体积比较大时,将文档读入内存是非常消耗系统资源的。SAX对内存的要求比较低,因为它让开发人员自己来决定所要处理的标签。特别是当开发人员只需要处理文档中所包含的部分数据时,SAX 这种扩展能力得到了更好的体现。但用SAX方式进行XML解析时,需要顺序执行,所以很难访问到同一文档中的不同数据。此外,在基于该方式的解析编码过程也相对复杂。比较十分有效。一个系统中往往需要同时使用这两种解析方式,以达到解析的最高效率
5.简化标签
<Name>不妨简化为<N>,<Address>不妨简化为<A>,只要事先约定好(最好建立一个对照表),这种简化有助于提高传输和处理效率。
6.使用缓存
一般的Web Service部署程序都可以采用缓存机制的处理。但如果数据更新频繁,则不建议使用缓存。
基于SOAP的Web Service的性能一直为人诟病,由于采用 XML标准进行系统间的数据传输,加大了传输的数据量,尤其是在传输一些具有比较严格结构的数据时,会使得传输效率有所下降,以至于有人认为如果真的要考虑性能,就不应该用SOAP。但无疑SOAP已然成长为一个通行的标准。作为开发人员,更需要考虑的是在此架构下如何提升Web Serive调用的效率,下面讨论的几种方式可供参考:
1.及时释放资源
通常,客户端的WebService代理类会一一对应生成所有的WebMethod的代理方法,从而直接导致了客户端Web Service代理类的体积庞大,而庞大的WebService代理实例将占用大量的内存。在设计时,建议应根据系统逻辑来规划Web Service类,不要把所有的操作方法都放在一个WebService类中;在使用时才去创建相关的WebService类。提倡尽量晚的创建,尽量早的释放。
2.让一次Web Service调用完成尽快多的工作
客户端应用程序应该尽量少地调用Web Service,在每一次调用Web Service的服务时也要尽量地把有用的信息处理在一次调用中完成,或是把多个远程Web Service调用封装在一个调用之中,以增加数据的使用率并且减少网络往复传输。例如,在查询数据时,尽量将WebMethod定义为getDataList(String query)以返回一个列表,而不是getDataById(int id)仅返回一条记录。
3. 对于整个 XML 传输文件进行压缩
经常用于对数据压缩的 API 有 gzip 等方式,在java.util.zip包中提供了相关的类。对象模型序列化成 XML 之前,可以对数据流进行压缩,再在XML接收端对已经压缩的文件进行解压缩。不过压缩和解压缩虽然可以使得 XML 的体积大大减少,但是其过程却是十分耗费CPU及内存。对于配置不高的客户端甚至是服务器端,都会造成不小的压力,建议用于网络瓶颈突出的情况或是主机配置比较高的情况。
4. 选择高效的XML解析器
XML解析器最基本的方式有DOM和SAX两种,DOM解析器的优点在于:1.XML树在内存中完整存储,可以直接修改其数据和结构;2.可以通过该解析器随时访问XML树中的任何一个节点; 3.DOM解析器的API在使用上也相对比较简单。但缺点在于如果XML文档体积比较大时,将文档读入内存是非常消耗系统资源的。SAX对内存的要求比较低,因为它让开发人员自己来决定所要处理的标签。特别是当开发人员只需要处理文档中所包含的部分数据时,SAX 这种扩展能力得到了更好的体现。但用SAX方式进行XML解析时,需要顺序执行,所以很难访问到同一文档中的不同数据。此外,在基于该方式的解析编码过程也相对复杂。比较十分有效。一个系统中往往需要同时使用这两种解析方式,以达到解析的最高效率
5.简化标签
<Name>不妨简化为<N>,<Address>不妨简化为<A>,只要事先约定好(最好建立一个对照表),这种简化有助于提高传输和处理效率。
6.使用缓存
一般的Web Service部署程序都可以采用缓存机制的处理。但如果数据更新频繁,则不建议使用缓存。
相关文章推荐
- 码农提高工作效率的几种方式
- ArcGIS Engine中导入数据的几种方式及其效率对比
- 几种常见SQL分页方式效率比较
- 电脑上几种常用的快捷键(极大提高工作效率)
- 更快的提高队员开发效率的方式
- apache FileUtils 和 IOUtils 工具类 改写普通文件读写方式 提高效率
- 从今天起采取这几种方法,提高工作效率
- 提高 Web Service 数据传输效率的基本方法
- java读取写入文件几种方式效率比较
- apache FileUtils 和 IOUtils 工具类 改写普通文件读写方式 提高效率
- 几种常见SQL分页方式效率比较
- 几种常见SQL分页方式效率比较
- JAVA使用XFire开发Web Service客户端几种调用方式
- 提高 Web Service 数据传输效率的基本方法
- 提高 Web Service 数据传输效率的基本方法
- 提高Ubuntu命令行方式下的工作效率
- paip.提高效率---集合的存取括号方式 uapi java python php js 的实现比较
- 几种调用web service的方式【含spring】
- 几种常见SQL分页方式效率比较
- Android 你可能忽略的提高敲代码效率的方式