今天在搜索资料,无意中找到这个三种方法的比较,还不错,摘一些主要的如下:
发现 SOAP 编码对 Web 服务性能的影响,通过改变编码样式从根本上提高性能
http://www-128.ibm.com/developerworks/cn/webservices/ws-soapenc/
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 编码样式的可扩展性和性能的时候您会发现这一点。