以下转自飞翔天空-傅海欧 http://hi.baidu.com/fuseagull/blog/item/d827621b627a06d2ad6e75ab.html
开发Ajax应用面临的挑战及解决方案
对程序员而言,开发Ajax应用最头痛的问题莫过于以下几点:
1. Ajax在本质上是一个浏览器端的技术,首先面临无可避免的第一个问题即是浏览器的兼容性问题。各家浏览器对于JavaScript/DOM/CSS的支持总有部分不太相同或是有Bug,甚至同一浏览器的各个版本间对于JavaScript/DOM/CSS的支持也有可能部分不一样。这导致程序员在写 Ajax应用时花大部分的时间在调试浏览器的兼容性而非在应用程序本身。因此,目前大部分的Ajax程序库或开发框架大多以js程序库的形式存在,以定义更高阶的JavaScript API 、JavaScript对象(模板)、或者JavaScript Widgets来解决此问题。如prototype.js。
2. Ajax技术之主要目的在于局部交换客户端及服务器间之数据。如同传统之主从架构,无可避免的会有部分的业务逻辑会实现在客户端,或部分在客户端部分在服务器。由于业务逻辑可能分散在客户端及服务器,且以不同之程序语言实现,这导致Ajax应用程序极难维护。如有使用者接口或业务逻辑之更动需求,再加上前一个JavaScript/DOM/CSS之兼容性问题,Ajax应用往往变成程序员的梦靥。针对业务逻辑分散的问题,Ajax开发框架大致可分为两类:
1 将业务逻辑及表现层放在浏览器,数据层放在服务器:因为所有的程序以JavaScript执行在客户端,只有需要数据时才向服务器要求服务,此法又称为胖客户端(fat client)架构。服务器在此架构下通常仅用于提供及储存数据。
此法的好处在于程序员可以充分利用JavaScript搭配业务逻辑来做出特殊的使用者接口,以符合终端使用者的要求。但是问题也不少,主因在第一,JavaScript语言本身之能力可能不足以处理复杂的业务逻辑。第二,JavaScript的执行效能一向不好。第三,JavaScript存取服务器数据,仍需适当的服务器端程序之配合。第四,浏览器兼容性的问题又出现。有些Ajax开发框架如DWR企图以自动生成JavaScript之方式来避免兼容的问题,并开立通道使得JavaScript可以直接叫用服务器端的Java程序来简化数据的存取。但是前述第一及第二两个问题仍然存在,程序员必须费相当的力气才能达到应用程序之规格要求,或可能根本无法达到要求。
2 将表现层、业务逻辑、及数据层放在服务器,浏览器仅有使用者接口引擎(User Interface engine);此法又称为瘦客户端(thin client)架构,或中心服务器(server-centric)架构。浏览器的使用者接口引擎仅用于反映服务器的表现层以及传达使用者的输入回到服务器的表现层。由浏览器所触发之事件亦送回服务器处理,根据业务逻辑来更新表现层,然后反映回浏览器。因为所有应用程序完全在服务器执行,数据及表现层皆可直接存取,程序员只需使用服务器端相对较成熟之程序语言(如Java语言)即可,不需再学习JavaScript/DOM/CSS,在开发应用程序时相对容易。缺点在于使用者接口引擎以及表现层通常以标准组件的形式存在,如需要特殊组件(使用者接口)时,往往须待原框架之开发者提供,缓不济急。如开源码 Ajax开发框架ZK目前支持XUL及XHTML组件,尚无XAML之支持。
3. Ajax是以异步的方式向服务器提交需求。对服务器而言,其与传统的提交窗体需求并无不同,而且由于是以异步之方式提交,如果同时有多个 Ajax需求及窗体提交需求,将无法保证哪一个需求先获得服务器的响应。这会造成应用程序典型的多程序(process)或多线程(thread)的竞争(racing)问题。程序员因此必须自行处理或在JavaScript里面动手脚以避免这类竞争问题的发生(如Ajax需求未响应之前,先 disable提交按钮),这又不必要的增加了程序员的负担。目前已知有自动处理此问题之开发框架似乎只有ZK。
分享到:
相关推荐
可以说Ajax是为了解决传统的web应用当中“等待-响应-等待”的弊端而创建的一种技术。 三、Ajax技术的发展历程 Ajax技术的发展历程可以分为以下几个阶段: 1. 动态网页第一阶段:服务器端CGI 2. 动态网页第二...
A用Ajax技术构建浏览器客户端通讯机制.pdf ...Ajax技术可以解决传统的HTML表单提交方式的弊端,实现客户端和服务器端的实时通讯,并提高服务器性能。因此,在Web开发中,Ajax技术是一个非常重要的技术。
本文主要探讨了如何运用AJAX(异步JavaScript和XML)技术来构建更加高效、交互性更强的教学Web应用。AJAX技术允许网页的部分内容在后台与服务器进行数据交换,从而无需重新加载整个页面即可实时更新内容。这一特性...
【jQuery和Ajax在Web2.0中的应用】 Web2.0是互联网发展的一个重要阶段,它带来了更加互动、用户参与度更高的在线体验。在这一背景下,jQuery和Ajax技术扮演了关键角色,极大地提升了网页的响应速度和用户体验。 ...
Ajax技术及实现 Ajax是一种集合了多种技术的集合,包括JavaScript、...Ajax技术可以创建更好的、更快、交互性更强的Web应用程序,但需要注意其弊端,并且需要浏览器支持JavaScript和XMLHttpRequest对象。
AJAX,全称Asynchronous JavaScript and XML,是一种让网页实现异步更新的技术,提升了用户体验,避免了传统网页在数据交互时必须整体刷新的弊端。通过局部更新和后台数据交换,AJAX能够显著提高用户界面的响应速度...
总结来说,Ajax技术在聊天室中的应用,显著提升了网络聊天的实时性、交互性和用户体验。通过异步数据交换,它克服了传统聊天室频繁刷新页面的弊端,减轻了服务器压力,降低了网络带宽消耗,使得聊天室成为了一个更...
我们在实际应用中也用到了 jsonp ,但之前只知道 jsonp 的一个限制,只能发 get 请求,get 请求的弊端是请求长度有限制。今天,发现 jsonp 的另外一个限制(在jquery ajax的场景下) —— 不会触发 $.ajax 的error ...
通过文档介绍的方法,可以有效地在客户端防止Ajax请求的重复提交问题,从而优化用户体验和减轻后端负担。这需要开发者在实现时,正确地封装$.ajax方法,并在前端逻辑中保持代码的简洁和高效。同时,对于后端开发而言...
PowerCommAJAX框架是目前在.NET平台下非常优秀的AJAX框架,其独创的空壳类比技术完美解决了目前.NET平台下AJAX框架应用的弊端,同时也大大降低了AJAX框架部署及二次开发难度,开发人员几乎不用写代码,即可实现AJAX...
本实验演示mvc2项目使用ajax来部分刷新网页内容,其中分别使用了ajax.load和ajax.html方法,其中通过比较可以发现这2种方法会过滤掉目标内容页里的js方法,但是还是可以调用到该方法的,并且该方法不会因为相应页...
文件的下载过程中,总结起来需要文件的三个要素,文件的字节流、文件的MIME类型和文件名。Java Web在处理文件下载时,一般的解决方式是在java的控制层完成三个要素的处理,通过response返回到前端,在js中采用...
如何在php中判断一个网页请求是ajax请求还是...但是如果需要这样的功能,这个方法可能就有弊端,功能需求如下:1.通过ajax请求的网页与普通请求的网页内容是不相同的 2.通过ajax请求的网页是为了方便用户操作,两种方法
Ajax(Asynchronous JavaScript and XML,异步JavaScript 和XML)的应用,可以创建更好、更快、以及交互性更强的 Web 应用程序。利用AjaxPro可以轻松创建Ajax应用。本文主要总结一下AjaxPro的使用步骤,并实现Ajax无...
基于AJAX实现无刷新分页的方法是网络开发中常用的技术手段,该方法可以提升用户体验,因为它避免了传统分页时需要刷新整个页面的弊端。本知识点将详细介绍如何使用AJAX技术实现无刷新分页。 首先,了解传统分页方法...
回归下原生js,网上看到的AJAX封装,遂拿来改改,不知还有何弊端,望指出! var ajaxHelper = { /*1.0 浏览器兼容的方式创建异步对象*/ makeXHR: function () { //声明异步对象变量 var xmlHttp = false; //...
这样的情况是是为AJAX获取时先检查本机缓存,如果本机缓存已有相同内容,则不访问远端服务器。这样的操作倒是可以提高速度和减少服务器压力。但带来的弊端也是显而易见的。 为了解决这个问题。我们必须在获取页加上...
实现这一功能主要依靠JavaScript(JS)和AJAX技术,以及音频播放和动态显示新消息提示框的方法。 知识点一:AJAX技术 AJAX(Asynchronous JavaScript and XML)是一种在无需重新加载整个页面的情况下,能向服务器...
针对目前刺参养殖中存在的管理效率低、劳动强度大等弊端,开发了一个基于Web平台的刺参养殖信息管理系统。系统采用面向对象的软件开发方法,综合应用了HTML、JS、ajax、PHP语言,结合MySQL数据库等技术实现功能模块...
这种方式避免了传统方式下每次操作都要刷新整个页面的弊端,提高了网页的响应速度和用户满意度。 **优化与扩展** 对于SliderShowExtender,还可以进一步优化和扩展。例如,添加控制按钮(如暂停/播放、上一张/下...