网络工程 毕业设计(论文)外文翻译-一个基于组件和推技术体系的AJAX应用.doc

上传人:西安人 文档编号:3967076 上传时间:2019-10-11 格式:DOC 页数:30 大小:465.50KB
返回 下载 相关 举报
网络工程 毕业设计(论文)外文翻译-一个基于组件和推技术体系的AJAX应用.doc_第1页
第1页 / 共30页
网络工程 毕业设计(论文)外文翻译-一个基于组件和推技术体系的AJAX应用.doc_第2页
第2页 / 共30页
网络工程 毕业设计(论文)外文翻译-一个基于组件和推技术体系的AJAX应用.doc_第3页
第3页 / 共30页
网络工程 毕业设计(论文)外文翻译-一个基于组件和推技术体系的AJAX应用.doc_第4页
第4页 / 共30页
网络工程 毕业设计(论文)外文翻译-一个基于组件和推技术体系的AJAX应用.doc_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《网络工程 毕业设计(论文)外文翻译-一个基于组件和推技术体系的AJAX应用.doc》由会员分享,可在线阅读,更多相关《网络工程 毕业设计(论文)外文翻译-一个基于组件和推技术体系的AJAX应用.doc(30页珍藏版)》请在三一文库上搜索。

1、杭州电子科技大学毕业设计(论文)外文文献翻译毕业设计(论文)题目一种基于WEB的实时事件通知方案及其应用翻译题目一个基于组件和推技术体系的AJAX应用学 院软件工程学院专 业网络工程姓 名班 级学 号指导教师一个基于组件和推技术体系的AJAX应用 Ali Mesbah,Arie van Deursen.The Journal of Systems and Software,2194 - 2209.April,2008.摘要:本文介绍一种叫做AJAX的新的Web应用方法,它是一种正在形成的,在大型无状态网络中交互作用有局限性的一种新方法。这一新方法的核心是一个单一的页面交互模型,有利于丰富的页面

2、交互。同时,AJAX正在网上采用来自分布式系统的基于推的解决方案。然而,这个领域的特点是缺乏一个连贯的,精确的思想去描述这一组架构概念。因此,很难去理解和评估,也很难和现有的技术作比较。我们研究并试验了几个AJAX的框架,试图了解它们的架构特性。在本文中,我们总结了四个框架,并观察他们的特性。文章介绍了SPIAR架构体系,它抓住了AJAX应用的本质。我们描述了软件工程的指导原则并有限制的去选择想要引起的特性。该体系强调用户界面组件的开发,中间最主要的是在客户端/服务器组件之间的联系,通过组件来改变基于推技术的事件通知状态,改善一些诸如用户间相互作用的特性,使得最终达到用户感知延时,数据一致性,

3、易于开发的目的。此外,我们利用概念和原则来讨论AJAX框架和应用发展的各种各样悬而未决的问题。引言在过去十年中,人们越来越多的关注并且接受桌面应用程序向网络应用的变化过程。然而,在这个过程中减少了大量的用户交互。经典网络应用是基于多页面的接口模式,这种相互作用是基于页面序列模式的。当设计简单的交换文件时,这种模式对发展与用户友好的人机交互的现代Web应用有很大的局限性。最近,出现了一种向新一代Web2.0应用方向转变的网络发展技术。Web应用程序的一个新技术,被称为AJAX(异步JavaScript和XML)(Garrett,2005年),在大型无状态的网络互动中已经出现了这种针对有限度的交互

4、技术。AJAX利用现有的网络技术,原先称为动态HTML(DHTML)和远程脚本(Crane等,2005年),来提供更多的基于Web的交互式用户接口。这个新方法的核心是一个单页界面模式,这有利于丰富的交互性。在这种模式下,改变了个别用户界面在网页中包含的组件,而不是(刷新)整个页面。在相同的前提下,最近的另一个发展是从分布式系统到网络的基于推技术的概念(Khare,2005年)。它在申请实时事件通知方案时,由客户端发起的拉动作是非常低效的,并可能导致网络拥塞。而推的方式,把传播的状态从服务器传送变为客户端每次异步传送,这种方式正在网络上成为一个非主流的新型术语,称为Comet(Russell,2

5、006年)或反向AJAX(DirectWeb Remoting,2007年)。这些操作都有自己的架构权衡。在AJAX的推动下,该技术在Web应用开发社区中已引发了人们的一种强烈兴趣。在AJAX被发明之后的2005年2月(Garrett,2005年),大量的框架和库都出现了,许多Web应用已经通过了一项或更多的基于基础AJAX的思想,这在大多数开发网站中的文章和专业杂志中已经出现。采用基于AJAX的技术是一项重要的选择,不仅是对新开发的应用程序,还是对ajaxifying(Mesbah 和 van Deursen,2007年)来说,现有网站的用户友好性是不够的。有一个软件工程师考虑采用AJAX技

6、术,但是,面对了很多挑战。什么是最根本的设计权衡?是设计一个传统的网络还是一个AJAX Web应用?如何引进一种基于推技术的方式去影响网络应用的可扩展性?什么是AJAX框架的不同特点?这些框架是怎么隐藏的?这些设计应用是否有足够的支持?什么问题可能出现在开发阶段?会有很多链接在许多不同的技术类型中吗?其中哪些技术可以继续使用,哪些将被更好更强大的解决方案所取代?解决这些问题要求对AJAX的Web应用有一个更抽象的观点。然而,尽管所有关注的技术都是在网络社区接收,但还是缺乏一个连贯和精确的思想去描述一套用于架构体系的有效的基于AJAX 的Web应用。本文探讨了是否可以在概念和软件架构的研究机构开

7、发的原则中去协助解决这些问题。从一个抽象的角度看,我们已经研究了若干AJAX框架,提取了它们的特征,并证明了它们有共同的架构组件和预期的性能。特别要说的是,我们提出了SPIAR,即单页面的互联网应用架构体系,它强调了基于组件的用户界面开发,在客户端/服务器组件之间通信,甚至从组件上改变基于推技术的通知状态,从而改善了很多属性,例如用户的交互性,用户感知延迟,数据一致性,易于开发。希望这种方式可以使用在高级用户相互作用和快速响应的Web应用程序中。其中对提出的架构体系的挑战之一是评估体系是否成功。同时Fielding(2000年)还注意到,要证明一个架构是否成功最终是通过这个体系的构建是否符合实

8、际的需要来确定的。由于这个不可能事先确定,我们会从以下方面对体系进行评估: (1)我们要调查研究如何使用现有的AJAX框架,像GWT或Echo2。 (2)我们要讨论如何将典型的AJAX框架覆盖到以客户为中心,服务器为中心,以推技术为基础的模式。 (3)我们要展示并讨论如何将体系用在AJAX应用设计的不同权衡中,如可扩展性和适应性这些架构属性。本文组织结构如下。首先,在第二章,探索研究AJAX的四个框架(谷歌的GWT,Backbase,Echo2和基于推技术的Dojo/Cometd框架),可以让我们从本质的需求上做出不同的设计选择。在第三章,我们调查现有的架构体系(如在万维网基础上的Repres

9、entational State Transfer架构风格REST(Fielding 和 Taylor,2002年),并分析其适合AJAX特性的地方。第四-七章中,我们介绍了SPIAR,描述了架构性能,基础,这种体系的目地和约束。鉴于SPIAR,在第八章,我们使用它的概念和原则来讨论AJAX框架和应用发展中各种悬而未决的问题,并加以评价。最后,我们总结概括相关理论并做出对今后工作的展望。2. AJAX技术2.1 AJAX最近几年中,有关网页更新的技术越来越多了,但直到最近,在创造AJAX出来的时候,即刻得到了广泛的关注。AJAX实际上是现代Web应用开发的技术标准名称,以前被称为动态HTML(

10、DHTML)和emphremote脚本,供给以Web为基础的用户界面互动。最初由Garrett(2005年)定义的AJAX包括基于标准的使用XHTML和CSS的外部结构,动态显示和使用文档对象模型的交互,数据交换和处理,使用XMLHttpRequest进行异步数据检索并和JavaScript捆绑在一起。但是这个定义仅仅侧重于Web应用的客户端范围。正如我们看到的这篇文章,对AJAX的应用有重要的服务器端的含义。AJAX代表了在Web应用开发中一种已经被建立的网络技术组合。它是一种在网络上使用AJAX的有用的技术组合。 而不是一个“请求-等待-反应”的典型模型,在这个模型下服务器为每个用户动作重

11、载整个页面,AJAX允许服务器在背后发生异步更新部分页面。这种在背后更新的方法可能提供更多网上的响应和加速的经验。在AJAX时代创造之前,它是通过Web应用例如Google Suggest,Google Docs或Google地图来使其影响力变得明显。其他著名的例子有Gmail,雅虎的较新版本! Mail、Flickr和Digg。为了更多的了解AJAX技术的细节我们提到了Asleson,Schutta(2005年)和Crane等(2005年)。2.2 反向 AJAX: COMET传统的网络模型要求浏览器和网络服务器之间的所有通信都是要通过客户的,即终端用户点击按钮或链接,再从服务器请求新的页面

12、。因此,一旦一个完整的响应返回,就没有进一步的方式让服务器把数据送回到客户端浏览器。在这个方案中,每个客户端和服务器之间的交互作用都是独立的。“永久”连接没有被建立在客户端和服务器之间用来保持关于客户的无状态信息。并且对这个特殊请求,服务器会退回一个响应。 这份方案有利于可扩展性,但是阻止了服务器的异步传输。有许多用过的例子,对在客户端更新用户接口有重要意义。例子包括:1.在一个拍卖网站上,一位投标者出了一个比前一位投标者更高的价格,那之前的出价就要被覆盖。例如易趣网一样,用户必须连续按他们浏览器的“刷新”按钮,看有没有人出了一个更高的价格。 2. 一台证券报价机,它的股票价格需要实时更新。3

13、. 一个闲聊的应用程序,新信息要即使传送到所有用户。 4. 一个新闻门户网站,新闻出版的时候要主动送到订户方。以当前的Web技术来说,这些应用形式要求实时事件通知和数据传输主要使用拉的形式,同时在客户端超时的时候,客户活跃地请求状态变换。拉动作有许多缺点,例如在客户端和服务器之间传输数据有很低的连贯性,增加了网络利用率。如果更新不频繁,用户将做出多余的请求。在另一方面,如果客户很少有拉操作,他们也许会错过一些有用的更新(Bozdag等, 2007年)。 一个可以选择的拉操作是基于推技术的体系(Hauswirth和Jazayeri,1999年; Bozdag等, 2007年),它是由客户端每次异

14、步改变服务器的传播状态。通过服务器推或流网络数据的概念,第一个是由Netscape(1996年)以“动态文件名义”提出的。这种方法仅仅存在于流出的服务器数据在长时间的HTTP连接中的响应。多数的网络服务器在进行一些处理时,发回一个响应,并且立即退出。但是在这一模式中,网络服务器连接并打开一个正在运行的长循环。服务器脚本使用事件注册或其他一些技术检测出任何状态的变化。只要状态发生变化,新出来的数据流就会及时刷新,而实际上并没有关闭连接。Comet(Russell, 2006年)或反向AJAX (Direct Web Remoting,2007年)是在网络上提供这种交互方式的新名称。Comet使用

15、XMLHttpRequest对象打开一个连接。这带来了一些有关连接长度和连接频率的灵活度的问题。之后,对于来自客户端的初始请求,服务器不关闭连接,也没有作出完整的回应。当新的数据再次可用时,服务器返回客户端现有的连接。这种在网络上的新模式介绍了一些有潜力的架构权衡,对上述提到的用户案例存在了有价值的意见。2.3 框架Web应用开发商不断的与有限的HTML页序列进行经验斗争,并且和客户端复杂的JavaScript编程一起去添加一些有力度的用户界面。问题在于跨浏览器兼容,例如,告诉所有人谁建立了一个现实世界的Web应用。丰富的用户界面(UI)经历了来自AJAX的承诺在所有这些问题上所面临的价格。发

16、展商要建立强大的AJAX应用必须要有各种先进的网络技术。此外,在生产之前必须花费很多努力在测试这些应用上。这就是需要框架来解决的地方。至少其中很多都需要。由于得到了原动力的AJAX,一个广大的框架正在被开发。它的重要性是为了给这个竞争混乱的领域带来明显的效果,当我们得知“差不多每天都出现一个新的框架”,这句话的意思就是每天都有新框架增加到已知的框架名单中。 我们研究并且试验了几个AJAX框架,设法了解他们的架构特性。我们在这个章节中总结了四个框架。我们的选择对象包括一种广泛使用的叫做Echo2的开源框架,一种由谷歌提出的叫做GWT的网络框架,由Backbase公司传送的商业包和一种叫做Dojo

17、/Cometd的基于推技术的Comet框架。所有四个框架都是在AJAX基础上的,但其基本技术差异极大。2.3.1 Echo2Echo2是一个开源的AJAX框架,它允许开发人员创建面向对象的Web应用,UI组件和基于事件驱动的Web开发模式。它的Java应用程序框架提供的API(给UI组件,性能对象和事件/听众)用于代表和管理一个应用程序和用户界面的状态。所有实际功能的组件与客户端浏览器的通信功能是专门组装在一个单独的模块中的。该引擎由一个服务器端的部分(用Java/J2EE写)和客户端部分(JavaScript)组成的。所有功能都是为了在一个分开的模块中给予一个组件或为连接客户端与浏览器,这就

18、叫做网络提供引擎。这个引擎包括服务器端(用Java/J2EE写的)和客户端(Java语言)。客户机/服务器的交互协议是隐藏在这个模块里的,是从其他模块里完全分离出来的。Echo2有一个更新管理器,它跟踪用户界面组件模型的更新,处理从代理商处获得的输入并将其和组件联系起来。Echo2客户端引擎运行在客户端浏览器上,并在服务器端提供远程用户界面的应用。其主要作用是当在界面上发生用户操作时,进行同步的客户机/服务器状态转变。一个XML格式的用户消息用于传输客户端到服务器端的状态变动,它明确说明变化的性质和组件的ID受状态变化的影响。服务器处理用户消息,更新组件模型以反映用户的操作。听众对事件十分感兴

19、趣可能造成对服务器端状态应用的进一步变动。服务器的响应通过提供一种服务消息来实现,这也是一个XML消息,它包含的指令执行部分用以更新客户端上的DOM表示。 2.3.2 GWTGoogle有一种新的AJAX框架的实施方法,叫Google网络工具箱(GWT)。像Echo2一样,GWT牵强的方便了用来开发用户界面及一个小部件库AWT或Swing。GWT的独特性在于它是在客户端界面呈现。代替了保持在服务器上的UI组件和连接他们的状态改变,GWT编译所有的Java UI组件的JavaScript代码(在编译时)。开发人员允许使用Java 1.4 API的一个子集来实现所需的组件功能部件。GWT使用一个小

20、型通用的客户端引擎,并使用编译器将所有的用户界面功能变得可让客户端上的用户利用。这种方法大大的降低了到服务器的轮询时间。该服务器考虑的是,客户端UI组件可能需要原始数据填充。这使服务器完成了去定义一个基于RPC风格的服务。这种服务(这是不一样的Web服务)使得Java和数据在网络上通过两种方式实施,以JSON格式和使用连载技术。2.3.3 BackbaseBackbase公司总部位于阿姆斯特丹,是提供第一个商业AJAX框架之一的公司。该框架仍然在不断发展中,在世界上众多用户中广泛使用。Backbase框架的一个关键组件是Backbase客户端执行时间(BCR)。 这是一个用JavaScript

21、编写的运行在Web浏览器上基于标准的AJAX引擎。它可以通过一个叫XEL的用户界面语言来编程。XEL提供一个应用级选择给JavaScript语言、并且处理可能是很乏味的程序和管理JavaScript异步操作。BCR的主要功能是: 1.建立一个单一的网页界面和管理部件树(查看树)。2.和XEL语言一样解释Java语言。3.关心服务器的同步和状态管理,通过使用Delta通信和异步交互作用与用户进行代表模型的操作。该Backbase框架提供一种叫做Backbase标记图书馆的标记语言(BTL)。 BTL提供部件库,UI控件,用一个途径去查封他们,并且连接到服务器的异步设施。Backbase公司的服务

22、器端框架是由BJS,Backbase JSF服务器构成。它建立在JavaServer Faces(JSF)的顶部,即提出的新的J2EE架构。JSF跟随模型视图控制器模式提供一个基于用户界面组件的框架。Backbase公司的JSF服务器利用所有标准的JSF机制,例如验证处理通过JSF生命周期阶段的检验、转换和事件。然而在JSF的相互作用中,传统基础上的页序列模型将不在一个页面框架的一体化变的微不足道。Backbase公司在单页界面环境下延长了JSF请求的生命周期。它还管理服务器端事件处理程序和服务器端控件树。任何Java类提供getter和setter方法给它的属性,可以直接分配给一个用户界面组

23、件的属性。开发人员可以使用声明的组件(web脚本)来构建AJAX应用。该框架呈现了各种已宣布的服务器端的UI组件相应的客户端XEL UI组件,并保持对双方同步组件树的更改。客户端的状态变化发送到在某些定义上的事件服务器。Backbase公司使用DOM事件委托用户的行动,叫做Bcr处理异步事件。这些事件可以启动一个客户端(本地)代表性模式的改变,但同时,这些事件可以作为触发服务器端的事件监听器。这些服务器转换了状态的变化,在服务器组件树上确定了相应的组件。经过必要的动作,服务器上的变化对引擎作出反应,以XEL格式再次呈现。2.3.4 Dojo and Cometd最后我们考虑的是与客户端结合的D

24、ojo框架和服务器端的Cometd框架,它们共同支持基于推技术的客户端服务器通信。该框架是以Cometd小组最近发布的BAYEUX协议为基础的,是一个缺少交流反应的通信标准。更多的细节是我们看到的Bozdag等(2007年)和Bozdag(2007年)。BAYEUX消息格式是定义在JSON(JavaScript对象符号),它是根据Java语言编程语言的一个子集的数据互换格式。最近该协议在一个Web服务器中执行,包括一定数量的网络服务器,Jetty 和IBM Web软件平台都在内。当前实施BAYEUX协议的框架为HTTP推提供了一种长连接形式Polling。在长轮询中,服务器保存了客户端请求,直

25、到数据可用。如果有事件发生,服务器发送数据到客户端,会和客户端重新连接。否则,服务器会有一段有限时间的连接,然后要求客户端重新连接。如果数据发布间隔是低的,系统会变成一个纯粹的拉动作,因为客户将重新提出经常连接的要求。如果数据发布间隔高,那么该系统将会是一个纯粹的推动作。 BAYEUX 协议定义了以下几个阶段,以建立一个Comet连接。客户端:(1)执行与服务器的握手并接收客户端ID,(2)发送一个请求ID的连接,(3)预订一个渠道并且接收更新。用BAYEUX协议支持的客户端AJAX框架称为Dojo.它目前完全用JavaScript编写,并计划在不久的将来采取一项标记语言。Dojo提供了一些准

26、备使用的UI部件,它们是预先包装的JavaScript代码组件,以及一个抽象的包装(dojo.io.bind)围绕各种各样的浏览器中XMLHttpRequest对象的实现,来与服务器通信。Dojo促进 etd库,做连接握手,订阅特定的渠道。 在服务器端,BAYEUX协议是通过Cometd支持的。这是一项基于HTTP事件的路由框架,实现了互动式的Comet。目前它已经被作为一个模块应用在Jetty中。2.4 特色尽管在许多方面有所不同,但这些框架分享一些共同的架构特色。通常,这些框架的目标可以总结如下: 掩藏开发复杂的AJAX应用,是单调的、难的和易出错的任务。 隐藏不同的网络浏览器和平台兼容。

27、 掩藏复杂的客户机/服务器通信。 所有这一切,实现丰富的交互性和最终用户的便携性,以便于开发人员的发展。 该框架的实现提供了用户界面组件和开发环境的库,用来创建可重复使用的自定义组件。这种架构对客户机/服务器组件之间的一个小的相互作用有一个明确的规定协议,因此需要通过网络传输的数据大大减少。这可能会导致更快的响应数据传送。它们的架构注意到列客户端提高了用户的互动所产生的加工优势,以及数量较少的轮询,并降低网络服务器的负载。后面这些框架的架构决定了改变我们开发的Web应用。而不应在网页序列的角度来考虑,Web开发人员现在可以在编程时更直观的看到(单页)基于组件和基于事件的方式,例如,AWT和Sw

28、ing。3 架构风格在本节中,我们首先介绍本文中使用的架构术语,并探讨在软件体系结构研究界的开发风格和原则,特别是那些基于网络的,可以帮助在AJAX应用中正式使用的架构特性。3.1 术语在本文中,我们使用软件架构的概念和术语,根据Fielding (Fielding,2000年)使用,而这又是建立在Perry 和 Wolf (Perry 和 Wolf,1992年)工作的基础上。因此,软件架构被定义为架构性能配置(Perry 和 Wolf,1992年)- 加工,连接器和数据 - 限制着它们之间的关系,以达到理想的架构属性。一种架构风格,反过来说,(Fielding,2000年)是一整套协调一致的

29、体系结构限制,限制架构属性中的作用和在任何架构中符合这些要素的风格所允许的关系。一种架构风格存在于设计元素和它们的关系之间,以这样的方式(Perry 和 Wolf,1992年)来说明软件系统中的某些预期的结果与性能。Clements等(2002年)为元素和专业化的关系类型定义了一种架构体系,连同在如何设置才可以使用上的一系列限制因素。一种样式也可以看作是经常性的结构组成和设置的互动特征的抽象。一个架构系统可以组成多种样式和风格,也可以和其他样式混合(Shaw和 Garlan,1996年)。(Monroe 和Garlan,1996年)共同架构模式在不同的系统架构中可重复使用,因此长期的架构模式也

30、被用来描述同一个概念(Bass等,2003年)。使用样式的好处可以概括如下:设计重用:充分理解解决方案,适用于新的问题。 代码重用:分享一种不变风格的共同实现。 易懂,易于交流:词组,例如“客户端服务器”或“休息”来传达一种隐含丰富信息的词汇使用。互用性:标准化的支持样式。 具体权衡分析:启用约束设计空间。 可视化:具体描述心智模式的匹配。我们认为,能够了解权衡固有架构(Kazman等,1998 年)的AJAX系统是利用架构风格的精髓。一种架构风格使我们能够针对不同的实例化体系结构作出相关的权衡。3.2 现有样式客户机/服务器(Sinha,1992年),n层架构(Umar,1997年),流动代

31、码(Carzaniga等,1997年;Fuggetta等,1998年),都是以不同的网络为基础的架构风格(Fielding,2000年),这考虑了有关AJAX的应用特点。此外,用户界面应用中通常利用流行的样式,如用模块/视图/控制器(Krasner 和 Pope,1988年)来形容大型架构,并在更具体的情况下,如C2样式(Taylor等人,1996年)是依靠状态的变化和在独立的组件中请求消息的异步通知实现的。也有很多风格的互动活动,如事件观察和通知(Rosenblum和Wolf,1997年),发布/订阅(Eugster等,2003年),组件和通信模型(Hauswirth和Jazayeri,19

32、99年),和阻止(Khare和Taylor,2004年)塑造了该模型的客户端/服务器分布式系统推进。我们认为,对网络最完整,最合适的风格,迄今为止,是具象状态传输(REST)(Fielding和Taylor,2002年)。REST强调的是数据和可利用资源的名称和地址,作为一个统一资源定位符(URL)(Berners-Lee等,1994年)。这种风格从一定数量上继承了其他样式如客户机/服务器,管道和过滤器,以及分布式对象。这种样式是对Web架构的主要特征的描述,它通过对架构的限制已大大促进了网络的成功。它围绕着五个基本概念:一个任意的资源,例如,一个文档或图像,在一个媒体类型代表形式下的资源,通

33、过HTTP交互获取或修改申述的同步请求响应,一个作为应用程序状态实例的网页,和引擎(如浏览器,履带式),从一个状态到下一个状态。REST指定了一个客户端状态,服务器体系结构中的代理,缓存系列,过滤器可用于每个以前是独立的请求,引起可扩展的性能。它还强调了在制约信息的组件中统一的接口,并以一种标准化的形式转变。3.3 一种Ajax风格AJAX应用可以被看作是一个桌面和Web应用的交互,继承了两个世界的特点。表1总结了REST提供什么和现代AJAX(Comet)之间应用需求的差异。AJAX框架通过UI组件以事件驱动或推模式提供后端服务给客户。这种结构并不那么容易被REST取代,因为存在以下区别:1

34、.虽然REST适合大型超媒体数据传输,但由于它统一接口的限制,所以它不是在AJAX应用中所需的最佳小型数据交互。2.REST的重点是超链接资源的交流,在客户端请求一个特定的资源。相比之下,在AJAX应用中用户与系统交互很像一个桌面应用,要求以具体行动回应。3.所有交互作用是通过REST作为获得资源的表示法。AJAX申请执行一个同步的请求响应,但需要一个异步通信模式。4.REST明确的限制了服务器的状态,也就是说,每个来自客户端的请求必须包含所有的服务器要求了解的必要信息。虽然这种限制可以提高可扩展性,但对于权衡网络性能和用户的交互性来说,更重要的是设计一个AJAX架构。5.REST是以缓存为基

35、础,同时促进AJAX的实时数据检索。6.每个请求必须由客户端发起,每一个反应必须立即产生,每个请求只能产生一个响应(Khare 和 Taylor,2004年)。Comet需要一个使数据从服务器到客户端推动的模式。这些不匹配的条件呼吁制定新的架构风格来满足所需的属性。 表1:REST提供的机制和Ajax所需应用的对比4 架构属性一个软件体系结构的架构性质包括系统中获得的功能特性和非功能特性,功能特性通常被称为质量属性(Bass等,2003年;Offutt,2002年)。因为构架一个系统需要一个必要的理解,所以这些属性也可以作为一些要求。下面,我们讨论了一些有关AJAX本质的架构属性。其他属性,如

36、可扩展性和安全性,可能是任何系统所需要的,但都没有直接采用AJAX技术去影响决定,所以不考虑在内。请注意,下面讨论的性质是有相互关联的:例如,用户交互性影响用户感知延迟,而这又同时影响了网络性能。4.1 用户交互性在人机交互学上的定义是在某种程度上通信过程的参与者可以控制的交互性,并存在相互交流的话语角色。用户的交互性是密切相关的可用性(Folmer,2005年),这个词是在文献中使用的软件架构。张志贤等(2003年)提供了用户交互性并在一个商业网络应用上进行深入研究。他们的研究结果表明,交互程度的增加对用户的感知满意度,效能,效率,价值和对一个网站的整体态度事有正面影响的。改善这种网络上的特

37、性已成为AJAX进步的主要动力。4.2 用户感知延迟 用户感知延迟是指用户发出请求和从系统响应的第一个迹象之间的时期。一般来说,有两种主要方式来改善用户感知性能。首先,通过减少往返时间,时间定为消息从浏览器传到服务器,然后再返回,第二,允许用户与系统进行异步交互。这是所有带客户端的分布式应用中的一个重要特性。4.3 网络性能 网络性能受吞吐量的影响,吞吐量即在网络和带宽上数据传输的速率,即最高可传输的数据吞吐量,是一个度量衡。网络性能可以通过减少传输数据的数量和粒度来提升。4.4 简易性 简易或发展工作是指需要去了解,设计,实施,保持和发展一个Web应用工作。这是影响任何一个新方法使用和接受的

38、重要因素。4.5 可伸缩性 在分布式环境中的可扩展性是由一个系统对越来越多组件处理能力的程度决定的。在网络工程中,系统的可扩展性是确定的,例如,客户可以被不同的服务器服务而不影响结果的程度。可伸缩的Web体系结构可以轻松配置,以服务越来越多的客户要求。4.6 可移植性可在不同环境中使用的软件被称为是可移植的。在网络上,能够使用Web浏览器而不需要用户的任何额外操作,例如,下载插件导致产生了可移植的特性。4.7 可见度 可见性(Fielding,2000年)是由外部调解员理解两部分相互作用的程度决定的,即调解员越容易理解其相互作用,两个组件之间的互动就越明显。从当前AJAX框架的实行来看,可见度

39、在客户端服务器中的相互作用较低,因为它们是以各自的协议为基础的。虽然高层次的可见度使互动更被理解,但相应的高观测性也会对安全问题产生负面影响。因此,低可见度不是本身的劣势特点,而是依赖于特性与权衡所构成的期望的系统。4.8 可靠性 可靠性是指正确服务的连续性(Avizienis等,2004年)。任何软件系统的成功很大程度上取决于它的可靠性。在互联网上,依赖于不可靠软件和恶劣工作的网络应用,就会失去客户(Offutt,2002年)。测试(测试自动化,单位测试和回归测试)资源可以提高一个应用程序的可靠性水平。但是,跟传统的桌面应用程序相比,Web应用通常没有作出很好的测试。除了短时间内对市场的压力

40、,多页互动式网页也使其很难检验。采用单页基于组件的Web应用开发方式可以提高系统的可测试性和结果的可靠性。4.9 数据一致性网络数据对实时事件通知的一个重要方面是对数据一致性的修复,这些数据在事件发生时就要尽快地告知用户,如股票价格(Bhide等,2002年)。如果服务器上的数据和客户端是同步的,那么这个数据就被定义为是一致的。在坚持HTTP协议的Web应用中,客户端需要频繁地拉基于预定间隔的数据。相比之下,采用推性能的服务器维护了客户的有关资料,并且当发生变化时把其通知给用户。这两种技术在取得的数据一致性方面有不同的属性(Bozdag等,2007年)。4.10 适应性 适应性是指便于系统或该

41、系统部件适应不断变化的环境的特性。在Web应用中,一个允许在服务器上变化的架构被传播到客户端即称为适应性。我们用代码的动态概念(Fuggetta等,1998年)来比较不同AJAX架构行为方面的变性和适应性。移动代码,一般来说,是软件代码,它从远程服务器获得,通过网络传输,然后下载并执行在未明确安装或由收件人执行的客户端上。5 SPIAR的建筑原理根据Fielding,Perry 和 Wolf,SPAIR的建筑原理主要分成三类,即数据处理(组件),数据和连接组件。关于组件的概貌在图1中展现。在这一章节,我们对组件进行解释,而在下一章节,我们将讨论他们之间的相互影响。图1:一个基于SPIAR架构方

42、式的处理5.1 处理组件处理元素是那些在数据元素上提供转换处理的组件。客户浏览器提供一系列标准支持,如超文本传送协议,超文本制标语言,层叠网络文稿,JAVA描述语言以及文档对象模型。通过对代表性模型的网页进行处理产生用户界面。用户交互可以建立在一个独立的用户界面模型上。所有的视觉渐变及效果都通过这个界面展现给用户。就像桌面客户应用程序,它由一个独立并带有别的部件的主要页面组成。这些部件的性质可被独立操作,而不要求刷新页面去改变。AJAX系统是一个客户系统,它在客户浏览器中装入运行。网络应用及运行不需要插件程序。然而,下载系统要向用户产生初始等待时间,这将由更小的数据传送来补偿。此系统负责代表性

43、模型的初始化和操作。从图1可以看出,系统通过用户处理事件的初始化响应,与服务器进行通信以及执行客户端数据处理。服务器应用程序依附于服务器,通过接受来自网络的HTTP响应请求进行运作,向请求者提供应答。所有的服务器端功能依附在服务器应用程序数据处理组件上。服务供应商代表服务器的逻辑引擎处理状态变化及用户请求动作。它可以存储任意需要执行动作的资源(比如数据库,网络服务)。服务供应商的功能是由事件监听器调用,由组件附属,通过引用请求初始的Delta编码/编码程序输出/输入Delta信息。基于这一点,用户与服务器之间的通信协议被定义和隐藏在一个接口上。此组件支持用户与服务器之间的Delta通信,这个服

44、务器提高了用户觉察的等待时间以及网络性能。UI组件由一系列服务器端的UI组件构成。这个在服务器上的组件模型可以着色用户的代表性模型。每个服务器端组件包含了数据以及部分依附于客户端部件的性能,此部件与状态变化相关;何时及怎样着色客户端的UI密码有不同的途径。比如,GWT着色整个来自服务器端Java组件的客户端UI密码编译时间。在另一方面,拥有一个真实基于组件的架构命令着色在运行时间的组件,并保持同在客户端和服务器端的组件。这些UI组件有事件接听项,这些事件接听项可以依附于客户端用户初始事件,比如点击按钮。这个组件通过提供位物变数组件而建立网络应用系统来提高单一性。服务器依附于一个在服务器应用系统

45、上的独立模块。此数据处理组件有能力开启从服务器到用户的数据入栈的HTTP连接。服务器供应商可以发布给此组件新的数据(状态改变)。推送客户组件依附于客户端内。它可以是一个独立的模块或是AJAX引擎的一部分。此组件可以描述为在推送服务器组件上一个特别的通道,接收来自服务器发布的实时数据。5.2 数据组件数据组件包含通过由数据处理组件使用和转换的信息。表征组件包括任意媒体形式,比如REST。HTML、CSS以及图象都是这个数据组件的组成部分。代表性模块是一个运行时间的抽象性,它表明UI怎样在客户端浏览器上显现。浏览器内的文档对象模型在AJAX应用系统中有着非常重要的作用。它主要通过操作这个代表性模块

46、产生丰富的效果。一些构架比如Backbase, 运用特别域语言来定义结构及代表性模块的性能。其他像GWT则用一个直接的途径,即运用JAVA描述语言。Delta通信信息形成了客户及服务器之间的Delta通信协议方式。SPIAR对客户端Delta数据和服务器端Delta数据作了区别。前者由客户创造,代表客户端状态改变的相应命令引起这些变化,而后者响应是在服务器组件上命令的结果。此Delta通信的数据建立在各种当前的格式上,比如XML。JavaScript Object Notation或者完全的Java描述语言。客户端Delta消息包含了服务器所需的信息,例如知道这些行动必须执行的组成部分。作为一

47、个例子,图2显示了在Echo2中的Delta通信。用户点击一个组件(按钮ID为c_7)后,客户端引擎检测并将它传到服务器端,显示在图2的REQUEST块中。然后服务器使用在Delta的客户端信息,响应一个服务器端XML格式的Delta。在这种情况下,是由行动,组件ID和事件类型组成的。可以看出,Delta服务器告诉客户端引擎到底如何与新的风格和文字内容,特别是与ID c_35_content的父组件来更新DOM状态。 图2:Echo2中Delta通信的一个例子 我们区分三种代码,可以改变客户端的状态:表象代码,功能代码和文本数据。表象代码顾名思义是对视觉风格和应用演示方面有影响,例如,CSS或

48、HTML格式。文本数据是单纯的数据。功能代码可以执行在客户端,例如,JavaScript代码,或XML格式的命令(例如,在图2中的DOM添加)。Delta服务器可以组成任意这些三种类型的代码。这三种类型的代码可以影响到客户端的应用代表性模型(DOM),它是运行时代码的表象抽象,被执行的功能代码和文本数据的结合。GWT使用Delta服务器主要是由文本数据组成的RPC样式的服务,而在Backbase公司和Echo2中一个基于组件的方法实施调用事件监听器,是混合在一个表象和功能的代码中的。5.3 连接组件连接元素作为粘合剂,担当了使它们能够结合起来的作用。时间构成了在SPIAR中交互模型的基础。一个事件是由每个发起的对接口传播到用户操作的引擎。根据事件的种类,一个请求到服务器,或一次接口的部分更新都是可能需要的。如果需要,该事件可以异步处理,在这种情况下,控制立即返回给用户。在服务器上,会请求由事件发起调用的服务。这项服务可以

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1