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部署程序都可以采用缓存机制的处理。但如果数据更新频繁,则不建议使用缓存。

转载于:https://www.cnblogs.com/ningxu/p/3401096.html

提高Web Service效率的几种方式(转)相关推荐

  1. JAVA调用Web Service接口的五种方式

    文章目录 1. 通过eclipse等直接生成Client 2. 通过JAVA命令wsimprot命令生成Client 3.通过axis直接调用(无需生成Client) 4.通过axis中的wsdl2j ...

  2. 提高 Web Service 数据传输效率的基本方法

    背景 Web Service 现如今已经成为 SOA 实现标准之一.很多公司已经或者正在参与到 Web Service 项目的实现和部署中.Web Service 的优点在于松散的处理异构系统之间的通 ...

  3. CoffeeScript和Sass提高Web开发效率

    CoffeeScript和Sass提高Web开发效率 如果您是一位每天都要编写JavaScript和Css的Web前端开发人员,可能您已经开始感觉到JavaScript的关键字 var, functi ...

  4. linux数据同步技术比较,linux下实现web数据同步的四种方式(性能比较)教程.docx

    linux下实现web数据同步的四种方式(性能比较)教程 实现web数据同步的四种方式=======================================1.nfs实现web数据共享2.rs ...

  5. [Axis2与Eclipse整合开发Web Service系列之二] Top-Down方式,通过WSDL逆向生成服务端(续)

    前言 本篇是承接上一篇: [Axis2与Eclipse整合开发Web Service系列之二] Top-Down方式,通过WSDL逆向生成服务端 在上一篇粗略地介绍了如何使用Top-Down的方式创建 ...

  6. linux下实现web数据同步的四种方式(性能比较)

    实现web数据同步的四种方式 ======================================= 1.nfs实现web数据共享 2.rsync +inotify实现web数据同步 3.rs ...

  7. 实现web数据同步的四种方式

    实现web数据同步的四种方式 ======================================= 1.nfs实现web数据共享 2.rsync +inotify实现web数据同步 3.rs ...

  8. web服务器攻击的八种方式

    随着互联网的高速发展,网络走进了千家万户,同时也有很大一部分人架设起了自己的网站.继而不安分的黑客们,又将目光对准了服务器攻击这个方式,从而破坏或取得服务器的管理权限.本文将主要讲述针对web服务器攻 ...

  9. WEB通信交互的几种方式

    WEB通信交互的几种方式 - 实时通信发展过程简介 简单介绍一下现在的WEB通信有以下几种方式:最基本的http请求方式,Ajax轮询,Ajax长轮询,HTML5推送事件,HTML5的WebSocke ...

最新文章

  1. 第2章 熟悉Eclipse开发工具---- System.out.println(sum=+(a+b));
  2. jq输出文本_jQuery获取文本节点之 text()/val()/html() 方法区别
  3. 内存延时cl_内存频率和CL延迟哪个重要
  4. 授权后接口调用(UnionID)
  5. how is CRM One Order date range finally converted to OPEN SQL
  6. unity 使用tile_如何使用Tile从网上查找电话
  7. 【原创】jpgraph中文乱码问题的解决
  8. you *might* want to use the less safe log_bin_trust_function_creators variable
  9. 用于故障诊断的残差收缩网络
  10. 计算机师范专业考编,不是师范生考教师很难?这4个专业考教师反而轻松!
  11. cv2 imread函数 python_opencv-python库基础操作(一)
  12. UVA 1611 Crane
  13. 蓝桥杯2015年第六届C/C++省赛A组第九题-垒骰子
  14. Java日常·面对对象
  15. java软考 试题_软考程序员下午考试试题练习
  16. 【4K录屏】高清录屏及剪辑软件:Bandicam 和 Captura
  17. android 补间动画停止,Android动画原理分析(一)---补间动画
  18. 路由器做二级路由方法
  19. 计算机里面不显示光驱位硬盘,Windows10系统识别不了光驱位机械硬盘怎么办?解决方法...
  20. CAP原理与传统的ACID

热门文章

  1. 想Get热搜同款?GitHub开源神器让父亲重返18岁!
  2. 字节跳动AI Lab 秋季提前批招聘
  3. CV新赛事:密集场景行人检测
  4. Python应该怎么去练习和使用
  5. 世界第一编程语言是Python「为什么那么火?」
  6. 计算机视觉 | Python OpenCV 3 使用背景减除进行目标检测
  7. java restsharp_C# RestSharp应用
  8. 上海东海学院计算机,上海东海职业技术学院
  9. java gc回收堆还是栈_浅析JAVA的垃圾回收机制(GC)
  10. 图像处理-二值形态学运算