除了SOA这方面,也许还有另外一个方面让SOA成为最近几个月内的很多IT机构开发列表上的东西,那就是:Ajax。尽管这一方面更加倾向于在Web的可用性和专业设计上取得轰动效应,它的确带来了有效的跨入面向服务架构的领域的途径,我们将会在下面为你展示这些方法中的一部分。
Ajax是异步JavaScript和 XML单词的缩写(asynchronous JavaScript and XML)。正如Web服务开发者应该关于的一样,我们最应该的关注的技术是它的异步本质,以及随之而来的它的暗示了关于在一个语言可执行的环境的知识的JavaScript根源——命名为一个浏览器——并且也带来了在至少的一点来看,一旦能够运转之后它所产生的视觉效果(不是说我们要忽略这个最后的一点,而是图像设计师一般的比程序员更加熟练于解决这些问题)。
异步是描述的一个客户端和一个服务器端的交互的侧面,在这种交互中客户端不用等待服务器端——或者经常称之为的被阻塞——来等待接受从服务器端的响应。 消息传递系统,如MQ-Series, Tibco Rendezvous和类似于JMS的可编程API,都是比较早就采用异步机制的概念了的,但是现在Ajax正在以相同的方式来解决Web应用程序的问题。
Ajax 的异步概念来自于由浏览器进行的JavaScript 函数调用,并把结果返回给Web服务提供者或者服务端的应用程序。当你和一个Ajax应用程序交互的时候,那种可以更新展示在屏幕上的信息块的而不需要刷新或者重载它的所有内容的方式就是异步的,因为你能够在服务器端构建很多不同的调用而不需要在等待服务器响应的时候——客户阻塞——时刻的盯着一个空白的屏幕。
尽管正式那些Web2.0的支持者包括图像设计者和软件市场人员最经常的使用Ajax,很多开发出来的软件使得Ajax应用程序可以作为可复用服务的集合。
奇怪的是为一个Ajax应用程序提供的数据不需要由一个Web浏览器客户端的约束或者JavaScript语言来帮定,实际上一个最优化的Ajax设计将会确定的在服务端以一种广为所知的Web服务设计方式来帮定:REST(可以在REST: Simplicity in Web Services design 专栏看到关于REST的更多的消息。)
REST服务,是被创建来用于提供一个Internet URL 的简单的访问点,有效的掩盖服务端的平台,比如你也许期望的Web service 并且由最早的Web services选择器提供最简单的 设计模式,如eBay、Yahoo!和 Amazon。他们本质上是提供粒度的数据块而不是提供完全的页面,所提供的数据块可以按照客户端提供的需求来消费和产生。
因为Ajax应用程序的生命周期是由从服务端调用的对屏幕特定部分进行更新的过程组成的,REST服务提供了一个创建基于Ajax的应用程序的超集。所以如果现在你有一个已经存在的REST服务群,这将会是为你的Ajax应用程序开个好头。类似的,你将会被很好的建议,以采取必要的步骤来整合所有的你是用来让你的Ajax应用程序变成一个更加庞大的REST服务集合那些资产,这样做的目的是让这些资产能够在其他的面向服务/非Ajax的应用程序中使用。
在另外一方面来说,绑定到一个浏览器来使用你的服务,遮掩个会限制你的使用环境,所以这也会暗示着创建你的Web services客户端。 然而很多Web services客户端具有从其他不同的来源集中和控制数据的能力,这些上可以实现的,因为他们被由类似于Java EE, .NET或者 PHP的系统架构构建而成的。
考虑在两个不同的Web服务提供者之间集成数据。这种情况和在一个非浏览器环境下也许一样简单,可以证明会成为Ajax应用程序中的一个头疼的问题,也就是它是跨站点的脚本的原因。为了能够努力阻止恶意代码的执行,一个浏览器通常是受限的,它只能在它显示的站点上拥有的执行逻辑代码。这防止了信任的请求在那些未被信任的站点执行,但是这个相同的处理会避免接近两个或者更多的不同Web service提供者,除非是在一个更低的安全配置要求的浏览器的情况下,因为这种方式在整个IT安全实践中都被认为是一种不好的方式。
最后的,还有一个需要考虑的东西是用来构建Ajax应用程序的JavaScript语言。每一个用来开发Web应用程序的编程语言都依赖于一个特定的框架,以减少开发任务的难度和适应Web的本质。大部分的这些框架都是用于服务器端的平台,而Ajax作为服务端的一个简单的单独REST服务集合,它并不是其他的Web架构平台提供的并不适用于Ajax应用程序的功能。它是这些设计所关注的一些简单的东西——如标准化请求或者控制类——转移到浏览器。在最后,关于很多JavaScript 架构方面的研究都是很值得去做的,以便开出来让创建Ajax应用程序更加容易。
Ajax本质上是Web开发的下一个潮流,但并不是意味着它将会被作为一个Web的新的注视点而已。正如你可能已经意识到的一样,在关于Ajax设计你的整个面向服务的动机结合起来的考虑意味着你可以在你的时间和资源上取得一个最大的回报。所以下一次你开发主动解决Ajax适用的有效性的时候,可以试着用SOA的相同的可复用性方法。