除了SOA这方面也许还有另外一个方面让SOA成为最近几个月内的很多IT机构开发列表上的东西那就是Ajax尽管这一方面更加倾向于在Web的可用性和专业设计上取得轰动效应它的确带来了有效的跨入面向服务架构的领域的途径我们将会在下面为你展示这些方法中的一部分
Ajax是异步JavaScript和 XML单词的缩写(asynchronous JavaScript and XML)正如Web服务开发者应该关于的一样我们最应该的关注的技术是它的异步本质以及随之而来的它的暗示了关于在一个语言可执行的环境的知识的JavaScript根源——命名为一个浏览器——并且也带来了在至少的一点来看一旦能够运转之后它所产生的视觉效果(不是说我们要忽略这个最后的一点而是图像设计师一般的比程序员更加熟练于解决这些问题)
异步是描述的一个客户端和一个服务器端的交互的侧面在这种交互中客户端不用等待服务器端——或者经常称之为的被阻塞——来等待接受从服务器端的响应 消息传递系统如MQSeries Tibco Rendezvous和类似于JMS的可编程API都是比较早就采用异步机制的概念了的但是现在Ajax正在以相同的方式来解决Web应用程序的问题
Ajax 的异步概念来自于由浏览器进行的JavaScript 函数调用并把结果返回给Web服务提供者或者服务端的应用程序当你和一个Ajax应用程序交互的时候那种可以更新展示在屏幕上的信息块的而不需要刷新或者重载它的所有内容的方式就是异步的因为你能够在服务器端构建很多不同的调用而不需要在等待服务器响应的时候——客户阻塞——时刻的盯着一个空白的屏幕
尽管正式那些Web的支持者包括图像设计者和软件市场人员最经常的使用Ajax很多开发出来的软件使得Ajax应用程序可以作为可复用服务的集合
奇怪的是为一个Ajax应用程序提供的数据不需要由一个Web浏览器客户端的约束或者JavaScript语言来帮定实际上一个最优化的Ajax设计将会确定的在服务端以一种广为所知的Web服务设计方式来帮定REST(可以在REST Simplicity in Web Services design 专栏看到关于REST的更多的消息)
REST服务是被创建来用于提供一个Internet URL 的简单的访问点有效的掩盖服务端的平台比如你也许期望的Web service 并且由最早的Web services选择器提供最简单的 设计模式如eBayYahoo!和 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的相同的可复用性方法