从图2所示可以看出,在Ajax中,每个客户端表现的页面可以由多个服务器端页面共同完成,一个服务器端页面可以为多个客户端页面服务。在这样的模式下,每个服务器端页面可以将功能的粒度分的很细,至于这些功能怎么组合,则完全是客户端的事。通过Ajax引擎,客户端页面可以根据用户的需求来调用服务器端相应的页面,获得数据并显示在页面上。此时许多服务器端页面已经不能称之为页面,应该称之为接口。 ⑶两种开发模式的比较 ①传统Web模式的工作流程 比起Ajax中的异步的概念,在传统Web模式中是一种同步的概念:用户必须等待每个请求,当一个请求完成后才能获得结果,在使用完这些结果后才会发出新的请求。如时序图3描述
从图中可以看到,在传统的Web开发中,完全是一种请求→刷新→响应的模型,用户只有等请求完成后才能进行用户操作,操作完成后才能提交下一个请求,用户行为和服务器行为是一种同步的关系,需要相互等待,正是这种等待,造成了BS结构客户端和CS架构客户端的本质区别。 ②Ajax程序的工作流程 在基于Ajax的Web程序中,最为重要的特征就是将同步请求转变为异步请求。这意味着客户端和服务器端不必再相互等待,而是可以进行一些并发的操作。用户在发送请求以后可以继续当前工作,包括浏览和提交信息。在服务器响应完成之后,Ajax引擎会将更新的数据显示给用户,而用户则工具响应内容来决定自己下一步的行为,图4描述了异步Ajax操作的流程。
从图4中可见,在用户行为和服务器端多了一层Ajax引擎,他负责处理用户的行为,并转化为对服务器的请求。同时它接收服务器端返回的信息,经过处理后显示给用户。由于Ajax在后台以异步的方式工作,用户无需等待服务器的处理,可以进行并发工作,这就在用户界面层次上更为接近了CS架构的客户端平台。 注意:同步和异步只是两种开发模式的区别中的一个。Ajax还带来了性能的提高:因为用户的行为经过了Ajax引擎的处理,使得客户端可以只获取需要的数据。DOM模型使得动态改变页面的层次结构成为可能,这样动态获取的数据可以动态的嵌入到页面之中,避免了数据重复加载带来的速度和效率问题。服务器端的组织形式则可以将功能划分的更细,这样服务器就可以只为有用的数据进行工作,大大提高了运行效率。 3、Ajax中的关键技术 Ajax是多种技术的一个组合应用,尽管很多技术都已经存在多时并且相当成熟,但却没有引起人们足够重视,对它们的了解一般也都停留在一个很基础的阶段。现在就将对这些技术做一个简要的介绍,说明他们在Ajax中所起的作用以及如何协同工作的。 ⑴JavaScript脚本语言 页面设计时常常会加入一些特效,这个是JavaScript的功劳。 在Ajax中,JavaScript已经从后台状态转移到前台,发挥着巨大的作用。可以说,JavaScript是Ajax中的黏合剂,它使DOM、XHTML、XML和CSS可以互相协作,并控制他们的行为。 现在Web程序中基于JavaScript实现很多功能已经具有相当大的实用性了,不再是一些特效或者表单验证之类的简单应用了,这些应用所使用的JavaScript技术也是相当专业的。因此,要开发复杂高效的Ajax应用程序,就必须对JavaScript有深入的认识,应该象对待一门新的语言一样来对待它。 ⑵XMLHttpRequest对象 XMLHttpRequest是一个长期被人忽视的对象,这与它强大的功能不相匹配。借助他可以在网页的背后和浏览器进行异步通讯,而无需刷新整个页面。XMLHttpRequest对象在JavaScript中创建并使用,客户端可以仅仅从服务器端获取它需要的信息;通过DOM和CSS的结合,就可以实现局部刷新的效果;同时还可以通过XMLHttpRequest对象异步提交信息,将用户的输入在后台提交到服务器而无需刷新这个页面。 ⑶可扩展标记语言(XML) XML作用很大而且广为接受,它为跨平台、跨领域的应用提供了一种通信手段。在Ajax中,它以客户端和服务器端通信载体的身份出现。按照最初对Ajax的定义,服务器端和客户端的通信都应该由XML来完成。事实上,使用XML的确可以带来很多好处,例如数据传输非常规范;服务器端和客户端的开发人员可以很好的协同工作,不用为数据格式的问题而烦恼;可以方便地使用XSLT将XML文档直接转换为HTML片断插入到页面中。 ⑷文档对象模型(DOM) 文档对象模型(DOM)用来表示显示在浏览器上的整个文档对象及其层次结构。在Ajax中,DOM模型是不可缺少的一部分。使用JavaScript可以访问文档中的所有节点,即所有对象。 通过改变这些对象的属性,用户可以控制页面的局部行为,将动态获取的数据插入到文档中,实现局部刷新的目的。用户还可以利用DOM模型增加和删除文档结点,实现界面元素的动态变化。 ⑸级联样式表技术(CSS) CSS最近两年是热火朝天,其中一个重要的原因就是使用Web标准进行页面设计正逐渐成为主流。 在Ajax中,CSS同样担当着界面表现的重任,其重要性甚至超过了传统的Web程序设计。JavaScript通过XMLHttpRequest对象和服务器进行交互,通常获取的都是单纯的数据,不包括表现元素,而将这些数据插入到文档本身就是一件非常严谨的工作,如果此时还需要使用JavaScript操作标记的属性来控制其外观,会使代码更加复杂而且难以维护,也无法做到使程序开发人员和界面设计人员分工合作,使用CSS则能很好的解决这个问题。CSS知道出现在某个地方的标记应该显示什么样式,通过简单的类属性和id属性也很容易决定那些元素应该有怎样的表现形式。4、使用Ajax带来的问题 ⑴用户浏览习惯改变带来的问题 ⑵对搜索引擎的不友好 ⑶前进后退按钮的失效 ⑷刷新定位问题 ⑸性能问题 ⑹开发难度的加大
Powered by: BlogJava Copyright © 龍~天飛