AJAX联手SOA 新一代Web2.0应用程序

网络整理 - 07-26

一、引言

  当今,各个企业都在想方设法提高自己的生产效率,并且对IT资产的重组也都在努力的探索当中。借助于面向服务的架构(SOA)技术,IT组织已经在克服这些问题方面取得了一定的成效;但是,在大多数情况下仍然只是实现了整个IT服务组合的一小部分。目前,有关这方面的大多数的努力也只不过是达到一种“刚刚满足”的SOA应用状况—在改进构建应用程序的能力以及使之与市场的结合更快更好更为便宜方面。而且正如我们已了解的,要实现这些目标说起来容易做起来难。

  二、传统的基于中间件的复合应用程序

  现有的事实是,SOA是一种中间件—而传统情况下,中间件往往要依赖于更多的中间件才能把数据翻译成一种消费者友好的状态。当你最后搞清楚构建一种融入SOA技术的复合应用程序不仅要求使用一种portal(中间件)而且还有可能要使用一种BPEL引擎(甚至还是中间件)对它进行编排时,这当然使你非常失望。更糟糕的是,你有可能在一家发布UDDI注册表和注册大量Web服务的组织内工作。但遗憾的是,在大多数情况下,还存在极少的实际消费这些服务的应用程序。怎么会是这种情况呢?

  难道如果无法构建消费这些SOA服务的应用程序我们就该得出结论—什么东西出错了吗?是否是因为业务内容开发者太难构建这种直接消费SOA服务的应用程序从而导致只好由其它的IT组织为我们创建这样的应用程序呢?是否由于缺乏一种SOA监管架构从而使我们犹豫不决?我想,我对上面所有问题的回答都是“是的”。而且存在一种非常突出的理由:仅由业务开发者消费和利用这种由IT组织暴露的SOA服务实在是太难了!其实,真正存在的问题是缺乏一种容易的方法来在SOA上加入一种界面—而这正是把AJAX技术与SOA结合到一起的优点所在。

  典型情况下,SOA服务被实现为一种松耦合的封装和暴露业务功能的Web服务。这听起来似乎非常直接,但是实现起来却非常复杂和困难。开发者经常在SOA服务的开发粒度方面讨论不止;但是现在,大多数开发人员都一致认为“业务级”的开发粒度是最合适的。然而,这仍然需要大量的相关领域专家加入并且要与业务内容合作才能最终确定这些服务的大小。

  三、SOA的复兴

  幸运的是,最近人们又对SOA产生了深厚的兴趣。也许企业最终意识到SOA确实能够帮助给它们带来巨大帮助。也许这是由于更好的开发工具和在Amazon,Yahoo和eBay宣传下的Web服务所致的缘故。也许它就是AJAX?不错—这也正是本人撰写此文之原因。认真地说,我确实认为正是AJAX成为更新人们对于SOA的重新认识的一种重要的驱动力量,特别是在当今各种新技术混合应用领域。但是,这两种迥然不同的技术应该如何结合并连接到一起才能迸发出更巨大的力量呢?先让我们来看一下Wikipedia对当前AJAX技术的定义。其中涉及到了Web页面,但是根本没有提及SOA。其中的描述是:

  “AJAX,代表了‘异步JavaScript+XML’,是一种创建交互式Web应用程序的Web开发技术。其目的是,通过在后台与服务器实现少量的数据交换从而使前端Web页面感觉起来更具响应性;因此,每当用户作出一个改变时,不必重载整个Web页面。其最终目的是进一步提高Web页面的交互性、响应速度及可用性。”

  此定义中没有提及SOA并不奇怪,因为早期的AJAX应用主要集中在增强页面的功能与可用性方面。这一点已经在众多应用程序,例如Google Maps,Flickr和Yahoo Mail,中得到证实。然而,并不是这些面向消费者的应用程序使我对AJAX的潜力感到激动,而是运行于公司的防火墙背后的业务应用程序真正利用了AJAX中的优点,因为它向我们展示了两个关键特征:一个是客户端编程模型,另一个是对服务器进行异步调用的易实现。这两种关键能力—在客户端(浏览器)应用逻辑的能力和在不打断Web页面的情况下存取服务器数据的能力,正是它们拓宽了构建新的更为丰富的Web 2.0企业应用程序的如此众多的可能性应用领域。

  前面,我曾提及SOA缺乏一种界面。这也正是AJAX“介于”这其中的原因—它能够给SOA加上一个体面的外观。在此,请让我多作一些解释。我们不妨考虑一下,如果SOA服务以在线方式出现的话,情况会怎么样?这样的服务通常需要在一个注册表或仓库中进行注册(如果我们幸运的话),然后就可以用于消费。例如,我们不妨去看一下StrikeIron网站()中所提供的内容。StrikeIron已经成功地创建了一种针对普通大众的“Web服务市场”。乍看起来,StrikeIron网站中的目录机制很象一个小型业务应用程序中所提供的列表。但是稍后,你就会意识到这并不是一些应用程序—它们实际上是一些Web服务。由一家公司针对广大消费者提供WSDL/REST Web服务的概念本身就蕴含了多种意义。但是,现在先让我们来看一下这家公司所出售的内容。根据StrikeIron提供的信息(他们允许存取这些服务),它提供的大多数流行的Web服务包括:

  ·美国地址校验

  ·全球短信服务

  ·销售和使用税

  ·电子邮件校验

  ·逆向电话查询

  毫无疑问,所有这些Web服务都相当有用,而且能被应用于许多不同的领域。但同时,它们又太“商品化”。换句话说,我可能并不在意是谁提供的这些服务,而仅想得到我所希望的信息。另一方面,我会简单地使用任何Web服务来实现把现金从我的经常帐户转到我的储蓄帐户吗?我不会这么做的。我首先需要建立对这种服务的信任,因此,我必须与提供该服务的供应商建立一定的关系。存在于我(消费者)和服务提供者之间的这种“信任圈”也正代表了企业内部及其合伙企业之间的关系。

  四、AJAX+SOA技术相结合

  上面同样的方式也可以为企业所采用,从而把他们的Web服务提供给更广大的用户群。通过一种Web服务市场,企业可以注册各种Web服务—而这些Web服务通常情况下仅能为企业内部或合作伙伴所使用。市场供应商显然希望这种情况发生,但是更重要的是,我们看到了一种机会—应用AJAX+SOA技术来驱动一类新的Web 2.0业务应用程序。