作为新生事物,SOAP 不得不做一些解释以获得认可。SOAP 将成为包括 CORBA、 RMI 和 DCOM 在内的其它服务器到服务器通信技术的邻居。围绕现有的技术阵营已经形成。现在各种误解、流言和讥讽横飞。在这篇文章中将细述并解释了很多围绕 SOAP 的误解。
作为一个新来者,SOAP 被拿来与它的已确立的和成熟的前辈作比较,包括 CORBA、DCOM、RMI 及其它技术。SOAP 采取了一个轻量级的“让我们与一切互操作”方法。很多围绕 SOAP 的误解需要向大家公布事实。正如 Ralph Waldo Emerson 曾经说过的要成为一个真正伟大的人要先被误解一样。这里是一些比较常见的围绕 SOAP 的误解:
误解:SOAP 存在是因为 CORBA 对防火墙不友好,CORBA 难与防火墙一起工作的名声是不公平的。
SOAP 和 CORBA 包含把通过因特网连接传送到远程服务的数据组织在一起的机制。虽然 CORBA 1.0 成功地定义了一种语言无关的通信方式,但它却把实现“对象请求代理”(Object Request Broker,ORB)的协议的任务留给了供应商。因为因特网在它刚出来时是相当新的东西。大部分 CORBA 1.0 ORB 不能互操作。CORBA 2.0 引入了“ORB 间协议”(Inter-ORB Protocol,(IIOP)),它和其它网络协议一起,运行在 TCP/IP 之上。
防火墙注意到这个新协议,并且有的时候就阻止 ORB 通信。IIOP 很快给 CORBA 带来一个不应有的难与防火墙一起工作的坏名声。
然而,SOAP 通过建立 HTTP 连接隧道来部署自己的协议:SOAP 要求把请求参数组织在 XML 文档中,该文档然后被放到 HTTP POST 请求体中发送到运行在 Web 主机基于 SOAP 的 Web 服务。同样,现在正在做很多扩展 SOAP 的工作,使它能使用其它的传输协议,例如 HTTPS 和 SMTP。
SOAP 插入现有的 Web 环境;CORBA 扩展自己以包含 Web。旧系统 — 包括“开放式软件基金会”(Open Software Foundation,(OSF))的“分布式计算环境”(Distributed Computing Environment,(DCE))、联机事务处理(online transaction processing,(OLTP))软件,例如 IBM CICS 和其它拥有自己的协议和语言相关的系统 — 被期望能实现支持 SOAP 的 HTTP 类型的无状态协议。另一方面,IIOP 被设计来使这些旧系统能成为跨网络连接 ORB 的通信协议。
自从 CORBA 2.0 在 1995 年问世以来,启动了很多 IIOP/HTTP 网关来启用 IIOP 在 HTTP 上建立隧道。
误解:SOAP 能更好地伸缩,因为 SOAP 是无状态的
SOAP 也将最终变成有状态的
SOAP 把请求参数组织到 XML 文档并使用 HTTP 来把请求发送到 Web 服务。很多人认为 SOAP 对 HTTP 的依赖使它无状态。并且 SOAP 1.2 确实缺少对会话机制的定义。然而,SOAP 将不可避免地拥有会话机制以启用事务请求。设想一个数据库应用程序,那里由几个 SOAP 请求构成一个事务,并且 SOAP 请求组可能被立即回滚或者提交。毕竟,连想象的无状态 HTTP 协议都有启用有状态事务的 cookie。
CORBA 以一个使用无状态的 ORB 请求的简单机制为特色。选择无状态还是有状态是系统设计者在 CORBA 环境中要作的决定。很多系统当它们试图实现复杂的无状态系统时失去了可伸缩性。
1
2
下一页>>
|