TechTarget中国网站推荐

Web服务可靠消息传输简介(六)

2007-12-26  选择字号:  | |
打印本文章
正在加载数据...

  “我能从WSRM得到什么层级的可靠性呢?”回答这个问题并不容易。WSRM其实是一个连线协议,而非应用级端对端协议。之所以这样设计,主要出于两个考虑。第一,Web服务标准(WS-*)一般都不针对实现层设计,这是为了提升其松散耦合能力。第二,要提供端对端的可靠性,就必须有某种与应用相关联的事务管理器。而事务管理功能,是由别的WS-*规范支持的,实现方法也有多种,因此对于WSRM来说,如此做意义就不大了。

  WSRM自身提供的可靠性保证,其实就是要求消息能从RMS到RMD成功传输,且RMD予以确认。就“确认”而言,不同的实现可能又有不同的含义。比如Apache Sandesha2,这是一个开源的WSRM实现,它有一个插件式的存储管理器。在这个实现中,只有消息被持久化到磁盘后才会发出确认消息。也就是说,Sandesha 允许服务器宕机与重启。WSO2 Tungsten服务器支持这种操作模型。

  WSRM 1.0规范对传输过程做了很多加固工作,如AtLeastOnce、AtMostOnce、ExactlyOnce和InOrder。不过,这些保障措施都是用于RMD与应用之间,而非连线上的。因此在1.1规范中,我们删除了这些部分。这些保障当然仍要提供,但应该是在实现层而非连线协议的责任。

  编程模型

  如果你从事消息处理工作,那么通常会学习一些为实现可靠传输的编程模型(PM),如JMS。WSRM或许会让你大吃一惊——它不要求任何新的PM。当然各厂商的具体实现可能有所不同,但WSRM核心规范,是不依赖于任何特定PM的。比如Sandesha允许用户自定义RM。如果没有序列,它会自动创建;不再需要发送消息时,它会自动超时并结束序列。换句话说,RMS和RMD不过是整个消息处理流程中的处理器(Handler),没有队列等等需要用户硬编码配置的可见实体,RM可以和现有Web服务共享同样的URI。因此,WSRM可以在不写任何代码的前提下与已有的Web服务集成。

  当然,我们也可以从编码角度做一些有意义的思考。现在不少Web服务协议栈和API,如Microsoft WCF (Indigo)、JAX-WS和Apache Axis2都支持非阻塞异步调用Web服务。在这种模型里,客户端通过回调实现对消息的处理。

  非阻塞异步模型对于WSRM非常重要。试想,如果Web应用阻塞调用其他Web服务,当请求并发数趋高时,应用的线程池就可能耗尽,无法再处理其他请求。

  1.0规范以来的修订历史

  WSRM的首次发布时间是2003年3月。2005年6月,1.0规范提交到OASIS。此次草案对1.0规范做了很多修改,主要包括以下各项:

  名字空间变化。因为修改较大,1.1规范与1.0不直接兼容,为突出OASIS的所有权,不少名字空间做了调整。

  规范清理。技术委员会对规范做了细致梳理,发现了很多小问题,并做了相应清理工作。

  增加了CloseSequence。上面已经讨论过,某些情况下,必须对序列做显式关闭。
  删除了LastMessage。1.0规范要求对最后一条消息作出标识,其实是多余的。
  安全功能得到加强。1.0规范与WS-Security/WS-SecureConversation紧密耦合,1.1规范在这方面增加了灵活性,还支持基于SSL/TLS的安全机制。
  采用W3C推荐的WS-Addressing。

  简化了WSRM-Policy。老版规范中包含大量定时参数,无法动态调整,新版规范予以删除,或移入CreateSequence。
  支持双向可靠传输条件下的防火墙穿越,即引入了MakeConnection。

  规范的实现

  WSRM 1.0规范的实现很多,如Microsoft WCF(以前叫作Indigo)、Apache Sandesha2等等。OASIS WSRX技术委员会以2006年初的最后版草案为基础,展开了各个实现版本的兼容工作,随后有五家公司参与。尽管结果并不理想,只有三家公司实现了兼容。不过委员会还将在此次公开预览版基础上,再次推动此项工作,希望能有更多公司参与进来。

  总结

  在本文中,还有很多复杂应用没有讲到,有兴趣的朋友,请直接阅读规范。文章的最后,我想结合我自己的经验和一些用户的意见,对WSRM的应用做一个总结:

  B2B可靠消息传输。很多人都看到了WSRM在B2B市场的潜力。不少企业都在寻找低成本的、安全的与合作伙伴传递采购、票务信息的技术。WSRM是一个理想的选择。

  部门与部门间,或服务器与服务器间的通讯。WSRM在企业内部信息传递上也大有可为。越来越多的公司开发并使用基于Web服务和XML的通讯工具,而WSRM恰是在其中保证可靠性的关键技术。

  替代JMS。Windows的下一个版本Vista将内置WSRM,这为那些希望用WSRM替换JMS的企业提供了契机。

  JMS桥接器。你还可以将WSRM作为独立协议,用于实现对多个不同JMS实现的桥接。Apache Synapse开源项目就是这样一个产品。

  基于浏览器的消息传输。AJAX的应用日益广泛,在浏览器间直接实现消息传输的想法是很吸引人的。到目前为止,已经有人在为Firefox中实现基于SOAP的AJAX模型而努力。RM恰恰能在其中贡献力量,因为AJAX的非阻塞异步传输模式与WSRM非常般配,更何况WSRM的MakeConnection还可以帮助穿越防火墙。再如实现浏览器中信息订阅(浏览器发出一个订阅请求,利用MakeConnection就可以收到多个回应),也很有前途。

  总之,我相信WSRM前景广阔。尽管还需要一些时间,才能让所有公司、技术牵起手来同心协力,但我们正在为这个目标努力奋斗,此次的公众预览版,无疑就是一个重要里程碑。

 


Web服务可靠消息传输简介
 Web服务可靠消息传输简介(一)
 Web服务可靠消息传输简介(二)
 Web服务可靠消息传输简介(三)
 Web服务可靠消息传输简介(四)
 Web服务可靠消息传输简介(五)
 Web服务可靠消息传输简介(六)

作者:Paul Fremantle     译者:罗小平   
相关的新闻
相关的专家答疑
信息技术行业使用 Web 服务已经超过三年。 有很多文档都介绍了 Web 服务的商业和技术效益。 很多公司正在生产环境中使用各种 Web 服务。 这些客户方案展现了 Web 服务目标的实际成就。
信息技术行业使用 Web 服务已经超过三年。 有很多文档都介绍了 Web 服务的商业和技术效益。 很多公司正在生产环境中使用各种 Web 服务。 这些客户方案展现了 Web 服务目标的实际成就。
信息技术行业使用 Web 服务已经超过三年。 有很多文档都介绍了 Web 服务的商业和技术效益。 很多公司正在生产环境中使用各种 Web 服务。 这些客户方案展现了 Web 服务目标的实际成就。
信息技术行业使用 Web 服务已经超过三年。 有很多文档都介绍了 Web 服务的商业和技术效益。 很多公司正在生产环境中使用各种 Web 服务。 这些客户方案展现了 Web 服务目标的实际成就。
信息技术行业使用 Web 服务已经超过三年。 有很多文档都介绍了 Web 服务的商业和技术效益。 很多公司正在生产环境中使用各种 Web 服务。 这些客户方案展现了 Web 服务目标的实际成就。
面向服务的架构(SOA)是一种基于可以重用的服务的,新的开发应用的架构体系. 近年来, 企业界对于SOA的需求越来越急切. 为了满足这样的需求, 一系列的SOA基础架构产品被推出. 主要的厂商如Oracle, BEA System, IBM都提供了SOA平台产品. 在一个包含各类应用的复杂的IT系统中, 要使用适配器并且在一个符合业务需求的流程中将各类应用串连在一起是一个非常困难的事情, 但是现在的SOA平台将困难转变成了容易。
Web 2.0是2003年之后互联网的热门概念之一,不过对什么是Web2.0并没有很严格的定义。一般来说Web 2.0是相对Web1.0的新的一类互联网应用的统称。
Ruby on Rails, 也称RoR或简称Rails, 是一个使用Ruby语言写的开源网络应用框架,它是严格按照MVC结构开发的。它努力使自身保持简单,来使实际的应用开发时的代码更少,使用最少的配置。
最新更新
专家答疑
技巧
Jason Bloomberg
企业是否应该意识到,云计算有许多积极因素,是否也有负面影响呢?重要的是要记住,云计算仍然非常新,而且在许多方面比vaporware更现实……
Ron Schmelzer,Jason Bloomberg
我们正在进入多元化的银行和金融服务,我们处理客户关系管理CRM,BI,遗产系统,产品J2EE和.NET和其他异构平台。如果我们想要转移到一个共同的平台,为什么要选择SOA……
Ed Tittel
在您最近的博客中提到,在XML.com中有你喜欢的XML内容。关于XML的信息还可通过什么途径可以得到?请与我们分享更多的来源……