透过老技术熟悉SOAP新概念

ZDNet软件频道 时间:2002-07-12 作者:BUILDER.COM |  我要评论()
本文关键词:
本文通过一个简单的网页和一个Perl CGI程序提出了SOAP的核心思想。这些示例的语法你应该很熟悉,虽然用来编写SOAP应用程序是错误的,但所表达的思想却是正确的。如果概念对头以后再学习真正的SOAP语法就不是什么难事了。
SOAP W3C规范 依赖于大量的其他W3C 规范和通信程序员所熟知的各种术语。然而,你如果刚刚接触SOAP,这种规范语言或许会令你感到陌生。本文通过一个简单的网页和一个Perl CGI程序提出了SOAP的核心思想。这些示例的语法你应该很熟悉,虽然用来编写SOAP应用程序是错误的,但所表达的思想却是正确的。如果概念对头以后再学习真正的SOAP语法就不是什么难事了。

什么是SOAP

SOAP也被称作XMLP,为两个程序交换信息提供了一种标准的工作机制。在各类机构之间通过电子方式相互协作的情况下完全有必要为此制定相应的标准。

交换信息可以采用很多方法,比如电子邮件、即时聊天和远程过程调用(RPC)等。电子邮件和聊天消息通常不具备计算机友好性。计算机可以读取电子邮件报头,但是其类型内容却无法得到计算机这个“硅脑袋”的理解。即时聊天和RPC也面临同样的尴尬情况:计算机倒是可读可人又没法读了。

计算机确实知道如何理解XML。SOAP描述了把消息捆绑为XML的工作方式。它还说明了发送消息的发送方、消息的内容和地址以及发送消息的时间。这也是为什么把SOAP叫做一种协议的原因。SOAP并没有同电子邮件协议(SMTP)、RPC(套接字和IDL)或者Web协议(HTTP)截然分开。SOAP要利用这些系统作为消息的起点。

程序剖析

程序清单A程序清单B(Simple.html和Simple.cgi)所示的简单示例从原理上看都是非常基本的概念。

程序清单A 包含了一个表单,其中有4个字段和一个提交(Submit)按钮。现在在前三个字段中填写内容,比如姓名J. Random、年龄 17及其头发的颜色brown;然后按下Submit按钮,页面再度显示,第4个字段显示“J. Random is a young brunette”。背景也变为黄色。注意,程序清单A的HTML表单调用了程序清单B中的CGI程序。该程序为浏览页面实施远程服务。如果服务在本地实现,那么你根本用不着提交表单直接采用JavaScript就可以了。

CGI程序相当简单:读取表单数据,返回HTML页面。唯一有点特别的就是参数在被采用之前先收集到了一个%args哈系表里。对这一简单示例而言这样做当然是不必要的,不过,我们的目的就是让所有的表单数据都能放到一个Perl数据结构中来。

现在让我们从协议的角度来审视这个表单提交程序。提交表单时,一个HTTP POST请求会携带表单数据传送给服务器。表单数据由name=value 这样的参数对组成。HTTP响应带回替代的网页。网页可以是任何文档类型。在示例中其文档类型就是“text/html”。

协议内容并不标准。请求内容(表单数据)只包含了表单元素的NAME属性的内容。如果表单元素发生变动,提交的数据也发生相应的改变——两者是链接的。此外,你不可能明晰地发送同一名字对应下的两个数据。所以其灵活性不高。另一方面,返回的文档又太灵活了;它可能只包含一些垃圾。

而且以上这种通信方式也谈不上是一种很清晰的消息系统。发出原始消息的页面发生了改变而非仅仅发送和接收它所需要的内容。Perl可以什么都不返回(一个204“No Content”响应)。但这一响应却并不带回消息给浏览器。从单纯的消息角度来看,这种方法简单太缺乏结构性了,从而带来很多缺点。


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134