专栏首页简单就是美!摘转:发现 SOAP 编码对 Web 服务性能的影响

摘转:发现 SOAP 编码对 Web 服务性能的影响

阅读更多

今天在搜索资料,无意中找到这个三种方法的比较,还不错,摘一些主要的如下:

发现 SOAP 编码对 Web 服务性能的影响,通过改变编码样式从根本上提高性能

http://www-128.ibm.com/developerworks/cn/webservices/ws-soapenc/

  • SOAP 远程过程调用(Remote Procedure Call,RPC)编码,也称为 Section 5 编码,它由 SOAP 1.1 规范定义
  • SOAP 远程过程调用文字编码(SOAP RPC-literal),它使用 RPC 方法进行调用但使用 XML 自制的方法编入数据
  • SOAP 文档样式(document-style)编码,也称为 消息样式(message-style)文档文字(document-literal)编码。

SOAP RPC这种编码样式是最简便的。您对远程对象进行调用,并传递任意必需的参数。SOAP 堆栈将这些参数序列化为 XML,再使用传输协议(如 HTTP 和 SMTP)将这些数据传送到目的地,然后接收响应,并将接收到的响应反序列化为对象,然后将结果返回到调用方法。唷!SOAP RPC 处理了所有的编码和解码工作(即使对于非常复杂的数据类型也是如此)并自动绑定到远程对象。

SOAP RPC 也允许通过文字编码将这些 XML 数据转换为单个字段,然后将这些字段序列化并发送到 Web 服务主机。这就是 RPC-literal编码所指的内容。由于只有一个参数 - 即 XML 树 - 所以 SOAP 堆栈只需要对一个值进行序列化。SOAP 堆栈仍然处理传输问题以将请求传送到远程对象。堆栈将请求绑定到远程对象并处理响应。

SOAP 文档样式调用中,SOAP 堆栈将整个 XML 文档发送到服务器,甚至不需要一个返回值。消息可以包含任何种类的对于远程服务适合的 XML 数据。在 SOAP 文档样式编码中,开发人员要处理每一件事,包括确定传输协议(如 HTTP、MQ 或 SMTP)、编入和编出 SOAP 信封体以及对请求和响应中的 XML 进行解析以找到所需的数据。

SOAP RPC 编码对于软件开发人员来说是最简单的;但是所有这些容易都是以牺牲可扩展性和性能为代价的。在 SOAP RPC-literal 编码中,您需要更多地对 XML 解析进行处理,但是这种编码样式对于 SOAP 堆栈来说需要处理开销。SOAP 文档文字编码对于软件开发人员是最难的了,但因此需要很少的 SOAP 开销。

为什么 SOAP RPC 会简单一些呢?使用这种编码样式,您只需要在代码中定义公共对象方法一次;SOAP 堆栈将请求参数编出到对象中并将这些参数直接传送到您的对象的方法调用中。否则,您必须完成在向公共方法进行调用之前遍历 XML 树进行解析以查找需要的元素这一任务。

对于您自己对 XML 数据进行解析这一点有一个论点:既然您最了解 XML 树中的数据,那么您的代码对那些数据进行解析要比通用的 SOAP 堆栈代码效率高。在衡量使用各个 SOAP 编码样式的可扩展性和性能的时候您会发现这一点。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Java Persistence with Hibernate中文版Hibernate实战第2版勘误 博客分类: Java Hiberna

    样书我今天仍还没有到手,不过我知道当初我提交的译者序里的关键字中英文对照列表是被砍掉了,今天又看到 andyao 读者在 这里 说“一些关键词语的英文...

    阿敏总司令
  • InfoQ.com(Information Queue)中文站今日正式发布

    InfoQ.com(Information Queue)中文站今日正式发布

    阿敏总司令
  • Apache SOAP的Web Services在Tomcat上的初体验:安装和测试

    原来发贴在CJSDN,后转载到Matrix,还是自己收集到Blog里来,由于SOAP停止开,接下来准备写个AXIS的开发。

    阿敏总司令
  • Loadrunner 脚本开发-soap_request函数介绍及WebService接口测试

    int soap_request( const char *StepName, ExpectedResponse, URL, , [Attachments,] ...

    授客
  • 自适应导航网页源码

    Youngxj
  • 响铃:开放协作理念走入移动安全,360这次又挑大梁?

    互联网创新创业时代,很多领域呈现一个共同特征:当先行者的技术积累到一定程度后,开放协作就逐渐成为这个领域的关键词,百度的Apollo人工智能、阿里的城市大脑/大...

    曾响铃
  • 深度学习的动机与挑战之-流形学习

    流形 (manifold) 指连接在一起的区域。数学上,它是指一组点,且每个点都有 其邻域。给定一个任意的点,其流形局部看起来像是欧几里得空间。日常生活中,我 ...

    用户1908973
  • 记一次python升级版本遇到的事

    由于服务器需要升级python,参照了一篇坑爹的文章卸载了旧版python # 卸载旧的python sudo rpm -evf --nodeps python...

    py3study
  • Linux各类压宿包的解压方法

    Java学习123
  • linux把文件压缩成.tar.gz的命令 转

    (adsbygoogle = window.adsbygoogle || []).push({});

    双面人

扫码关注云+社区

领取腾讯云代金券