位置:轻松日志 » 帮助/文摘

什麽是SOAP?

发表于:2004/12/07 23:53:14

什麽是SOAP?

简单对象访问协议(SOAP,全寫為Simple Object Access Protocol) 是一種簡化了的XML查詢界面,主要用于Web服务(web service)中。SOAP的出現是為了簡化網頁服務機(Web Server)在從 XML 數據庫中提取資料時,無需花時間去格式化頁面。

· SOAP封装(envelop),封装定义了一个描述消息中的内容是什么,是谁发送的,谁应当接受并处理它以及如何处理它们的框架;

· SOAP编码规则(encoding rules),用于表示应用程序需要使用的数据类型的实例;

· SOAP RPC表示(RPC representation),表示远程过程调用和应答的协定;

· SOAP绑定(binding),使用底层协议交换信息。

SOAP 通过建立 HTTP 连接隧道来部署自己的协议:SOAP 要求把请求参数组织在 XML 文档中,该文档然后被放到 HTTP POST 请求体中发送到运行在 Web 主机基于 SOAP 的 Web 服务。同样,现在正在做很多扩展 SOAP 的工作,使它能使用其它的传输协议,例如 HTTPS 和 SMTP。

SOAP 是由 W3C 制定的开放标准。

SOAP 使用 HTTP 来把 XML 请求和响应数据发送到远程运行进程。听起来似乎您必须学习 XML、HTTP、DOM、Web 服务器操作和更多其它知识。但是,实际上大部分 SOAP 示例代码使用 SOAP 的内绑组织方法来设置传出参数和值。因此,除非您发送一个有很多参数的复杂请求,否则我认为最好是使用 SOAP 的 Call 对象和 Vector 来设置参数。

SOAP 返回包含一个 XML 文档的一个 Response 对象。

为什麽使用SOAP ?

SOAP,“简单对象访问协议”,是由 IBM、Microsoft、Userland 和 DevelopMentor 共同设计的一种新协议,通过 HTTP 支持远程过程调用(和其它复杂请求)。

SOAP 汲取于两种截然不同的环境。SOAP 构建于 HTTP 和 XML 之上,其目的是与 Web 一样简单。还有,它的目标是从CORBA 和 DCOM 借鉴来的面向对象的远程过程调用。

我认为采用 SOAP 的主要好处是它构建在 Web 服务器之上。所以,要了解 SOAP,需要从 Web 服务器开始。现代 Web 服务器 - 尤其如 WebSphere、WebLogic 或 ColdFusion 等应用服务器 -是功能强大的开发平台。它们已经优化,可以有效地处理请求。

SOAP 是将这些 Web 服务器转成对象服务器的尝试。通过对象服务器,我指的是三层体系结构中的中间层服务器。SOAP 通过在 HTTP 之上添加一个瘦 XML 层这一方法来支持对象服务器。

让我举一个示例。我以前必须编辑来自搜索引擎(例如,Alta Vista)的排名信息。我的顾客产生关于站点受欢迎程度的报告。模拟从应用程序来的浏览器请求是容易的,问题是译码响应。它以 HTML 格式进来,我的应用程序将对它进行语法分析并抽取其链接。遗憾的是,每当搜索引擎改变其布局,该应用程序就会失效。那是 Web 的局限性之一:当用户查询 Web 服务器时,它工作良好,但自动化很困难。

现在设想搜索引擎运行在对象服务器上。我的应用程序的更新版本可以查询它。如果对象服务器构建在 SOAP 之上,请求和响应都是 XML 响应。由于 XML 不包含格式化指令,当搜索引擎下次改变其布局时,该应用程序不会失效。

应该考虑 SOAP 吗?
坦白地说,一开始我对 SOAP 持怀疑的态度。我最初认为 SOAP 太简单。这项新协议面向一个拥挤的市场:其它对象协议包括 DCOM(微软提供)、RMI(由 Sun 提供的 Java 联网)以及 CORBA(一次开放成就)。当我比较 CORBA 和 SOAP 时,我不得不感到,对于实际应用,SOAP 太有限了。

当我开始使用 SOAP,认识到其主要好处是它构建在 Web 上。当然,SOAP 比 CORBA 以及 DCOM 局限性更大。例如,对于如继承之类的,面向对象的概念,它提供有限的支持,并且缺乏事务管理(正如 MTS 与 DCOM 或 OTS 与 CORBA)。

然而,SOAP 的简单性大大补偿了它在功能上的欠缺。例如,由于 SOAP 使用 HTTP,SOAP 服务器是 Web 服务器。在部署 Web 服务器或开发 Web 应用程序方面,大多数企业有丰富的经验。用 SOAP,他们可以将那些经验用在对象服务器上。

何时应使用 SOAP?
我只能想到 SOAP 的两个缺点,但它们可能是很重要的,这取决于项目。首先,SOAP 还不是正式标准。W3C 启动了它自己的 Protocol Activity,而且并没有保证结果将与 SOAP 兼容。

其次,SOAP 是新的,它缺乏一些对于 CORBA 或 DCOM 常用的工具。特别是,SOAP 没有事务管理。这不是 SOAP 的固有限制;我相信市场上最终会有事务管理器,但现在还没有。

当前,对于需要轻量级远程过程调用的分布式应用,SOAP 是理想的。我认识到,对于“轻量级”,这里没有硬性定义,但实质上,它表示请求不应该取决于如继承或事务管理等面向对象概念。


请参阅 SOAP 协议规范
这里是公开可用的 Web 服务的列表。
请参阅 Microsoft 的 SOAP 参考资料


收藏这篇文章

 

© 2007 Rocklv个人主页空间轻松日志v.1.1