Soapbox:为什么使用SOAP?

日期: 2010-07-05 来源:TechTarget中国 英文

  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会获得类似的成功吗?

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

相关推荐