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中国
相关推荐
-
如何选择Web服务器:Nginx对阵Apache
Nginx人气的迅猛提升与Apache在Web服务器市场份额领域的稳步下降不禁引发诸多猜测,很多从业者认为这种趋势将使新部署流程中的方案选择变得更为清晰。
-
API设计:如何正确开发应用程序接口
在交互组件化软件的世界里,没有比让组件之间以及组件与移动设备和浏览器之间进行连接的应用程序接口(API)更重要的东西了。
-
REST vs. SOAP:如何挑选最好的Web服务
在应用没有任何服务器端的组件情况下,有没有可能直接通过我的应用数据库直接使用这些Web服务?
-
BEST:SOAP/XML和REST的替代方案
虽然拥有大量的机架服务器,以及大量软件开发人员的组织,基于web和集成服务的SOAP和REST很适合他们,但也会出现问题。