我为什么使用 SOAP[转] (0分)

  • 主题发起人 主题发起人 netnice
  • 开始时间 开始时间
N

netnice

Unregistered / Unconfirmed
GUEST, unregistred user!
作者:zee
email: zee@chinaasp.com
日期:8/22/2001 11:51:19 PM
我为什么使用 SOAP
c.gif
[B]英文原文[/B]
c.gif
c.gif
c.gif
c.gif
一位开发人员讲述了 SOAP 说服他的原因
Benoît Marchal
软件工程师
2001 年 2 月
[BLOCKQUOTE]在 XML 专区的新观点专栏,Benoît Marchal 将走近soapbox,讲述 SOAP 使他折服的原因。Marchal 说,SOAP 的卖点是其简单性。由于新协议是建立在常见的技术之上,特别是 Web 服务器和 XML,因此对于开发人员设计和部署 SOAP 服务器相对容易些。[/BLOCKQUOTE]
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 是理想的。我认识到,对于“轻量级”,这里没有硬性定义,但实质上,它表示请求不应该取决于如继承或事务管理等面向对象概念。
我最近碰到一个以 CORBA 的教科书示例开始的项目。但最终它成为一个 SOAP 项目。我将与您分享主要问题,以帮助您评估 SOAP。
该项目是典型的三层应用:有一个 Oracle 数据库服务器、商业对象驻留在中间层服务器上,用户界面是用 Java servlet 编写。servlet 使用 XML 和 XSLT 结合,正如我在 Making teams work, via XML and XSL 中所解释的(请参阅参考资料)。
客户原来想在商业对象服务器和表示层的 servlet 之间部署 CORBA。然而,我们碰到两个问题:成本和缺乏培训。ORB,CORBA 运行时,是非常昂贵的,这限制了我们部署应用的能力。而且,开发队伍在 Web 开发方面有丰富的经验,而对 CORBA 却是新手。
在细化分析时,我们认识到表示层和中间层之间的通信是简单的远程过程调用(例如,产品列表或产品细节)。如果表示层的servlet 取决于 XML,我们得出的结论是,SOAP 可能是比 CORBA 更完美的解决方案。SOAP 响应( XML 格式)可以直接交给 XSLT 处理器。
我们刚完成一系列测试,而 SOAP 的案例是引人注目的。我们不但省去了 CORBA 许可证和培训,而且在中间层和表示层上部署了 Web 服务器。这意味着我们将汲取相同的经验来精调该服务器。
结束语
名称 SOAP 总是使我想起另一个协议:SMTP,简单邮件传输协议,宣扬简单性是其主要优点。如同 SMTP,SOAP 功能不是十分强大,但易于理解和快速部署。有比 SMTP 功能更强大的电子邮件协议,但没有一个象 SMTP 那样流行。SOAP 会获得类似的成功吗?
参考资料 [UL][LI]Apache SOAP 是 SOAP 的开放源码实现。它有 Java 和各种脚本语言形式。 [LI]IdooXoap 是 SOAP 的另一个开放源码实现。 [LI]微软已经发布了 SOAP Developer Resources,其中包括在 Visual Studio 中 SOAP 的测试版支持。 [LI]Jon Bosak 在最近的 XML 2000 会议上发表了关于 SOAP 和 ebXML 的评论。 [LI]W3C Protocol Activity 可能导致取代 SOAP 的标准。 [LI]Making teams work, via XML and XSL 取自我所著的 XML by Example 中的一个章节,在 dW 上摘选,解释了表示 servlet 如何使用 XML 和 XSLT。 [LI]可以在 developerWorks soapbox forum 上张贴问题和获取答案。 [LI]您有不同的观点吗?或者关于 XML 开发的另一方面有强烈的观点?请到临时讲台上来。可以向 ndunn@us.ibm.com 的 XML 专区编辑发送您想法的简单描述,或者如果您的想法已经成定稿,可以使用 Submit content form。 [/LI][/UL]
关于作者
Benoît Marchal 是比利时 Namur 的软件工程师和作家,他在 Java 和 XML 方面进行了大量工作。他是 XML by ExampleApplied XML Solutions 这两本书的作者。通过他的咨询公司,Pineapplesoft,他参与了无数电子交易项目。他的网站在 www.pineapplesoft.com 上。
 
>>我以前必须编辑来自搜索引擎(例如,Alta Vista)的排名信息。我的顾客产......
的确,这很吸引人,但是仔细想想有些一相情愿,难道我们要用SOAP写好了程序,然后
等到猴年马月的时候搜索引擎开始支持XML输出??
 
接受答案了.
 
后退
顶部