`

ajax的好处和弊端

阅读更多
以下转自飞翔天空-傅海欧 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。
0
4
分享到:
评论

相关推荐

    jquery ajax中使用jsonp的限制解决方法

    我们在实际应用中也用到了 jsonp ,但之前只知道 jsonp 的一个限制,只能发 get 请求,get 请求的弊端是请求长度有限制。今天,发现 jsonp 的另外一个限制(在jquery ajax的场景下) —— 不会触发 $.ajax 的error ...

    php中如何判断一个网页请求是ajax请求还是普通请求

    如何在php中判断一个网页请求是ajax请求还是...但是如果需要这样的功能,这个方法可能就有弊端,功能需求如下:1.通过ajax请求的网页与普通请求的网页内容是不相同的 2.通过ajax请求的网页是为了方便用户操作,两种方法

    在php中判断一个请求是ajax请求还是普通请求的方法

    /path/to/pkphp.com/script.php?ajax 在php脚本中使用如下...通过ajax请求的网页是为了方便用户操作,两种方法请求打开的网页必须的内容是相同的,只是ajax请求到的网页内容比较简化和使用,去除了网页的大框架模板。

    PowerCommAJAX框架 V2.01

    PowerCommAJAX框架是目前在.NET平台下非常优秀的AJAX框架,其独创的空壳类比技术完美解决了目前.NET平台下AJAX框架应用的弊端,同时也大大降低了AJAX框架部署及二次开发难度,开发人员几乎不用写代码,即可实现AJAX...

    mvc_ajaxloadhtml

    本实验演示mvc2项目使用ajax来部分刷新网页内容,其中分别使用了ajax.load和ajax.html方法,其中通过比较可以发现这2种方法会过滤掉目标内容页里的js方法,但是还是可以调用到该方法的,并且该方法不会因为相应页...

    DownloadFileByAjax_final

    文件的下载过程中,总结起来需要文件的三个要素,文件的字节流、文件的MIME类型和文件名。Java Web在处理文件下载时,一般的解决方式是在java的控制层完成三个要素的处理,通过response返回到前端,在js中采用...

    AjaxPro.dll 7.7.31

    Ajax(Asynchronous JavaScript and XML,异步JavaScript 和XML)的应用,可以创建更好、更快、以及交互性更强的 Web 应用程序。利用AjaxPro可以轻松创建Ajax应用。本文主要总结一下AjaxPro的使用步骤,并实现Ajax无...

    原生AJAX封装的简单实现

    回归下原生js,网上看到的AJAX封装,遂拿来改改,不知还有何弊端,望指出! var ajaxHelper = { /*1.0 浏览器兼容的方式创建异步对象*/ makeXHR: function () { //声明异步对象变量 var xmlHttp = false; //...

    Ajax获取页面被缓存的解决方法

    这样的情况是是为AJAX获取时先检查本机缓存,如果本机缓存已有相同内容,则不访问远端服务器。这样的操作倒是可以提高速度和减少服务器压力。但带来的弊端也是显而易见的。 为了解决这个问题。我们必须在获取页加上...

    刺参养殖信息管理系统的设计与实现(PHP+MySQL).zip

    针对目前刺参养殖中存在的管理效率低、劳动强度大等弊端,开发了一个基于Web平台的刺参养殖信息管理系统。系统采用面向对象的软件开发方法,综合应用了HTML、JS、ajax、PHP语言,结合MySQL数据库等技术实现功能模块...

    ajax验证码异步刷新源码新手java-front-end-face-questions:史上最全前端开发面试问题及答案整理

    ajax验证码 异步刷新源码 新手java front-end-face-questions 史上最全 前端开发面试问题及答案整理 本文旨在加深对前端知识点的理解,资料来源...2.IE7和之后的版本最后可以有50个cookie。 3.Firefox最多50个cookie 4.

    HTML5 webSocket 教程

    它采用了请求/响应模型。通信请求只能由客户端发起,...大多数 Web 应用程序将通过频繁的异步JavaScript和XML(AJAX)请求实现长轮询。轮询的效率低,非常浪费资源(因为必须不停连接,或者 HTTP 连接始终打开)。

    BugFree(Bug跟踪管理系统) v3.0.rar

    人名采用Ajax查询加载,不再使用下拉列表,通过使用 username 和 realname 去查找用户,改善了在大量用户存在的情况下首字母定位较慢的弊端。 模块加载采用 Ajax,加快页面加载速度。 新增查询结果标记功能,可以...

    Concurrent.Thread-full-20090713

    Ajax异步处理已有弊端 ,如何实现同步机制,多线程处理,试试这个文件按,你有意想不到的收获。

    利用github制作在线图床网页程序.zip

    其实很简单,我们就单纯用一个ajax请求就可以了 基本原理就是这样,还有个弊端就是纯html静态页面的形式会暴漏我们的密钥,所以我们可以把上传的部分单独做成一个php接口文件或者nodejs接口,这里就不提了 另外 ...

    tentacle远程桌面是基于Java canvas的跨平台远程桌面实现,.rar

    WebSocket介绍 WebSocket是一种网络通信协议,RFC6455定义了它的通信标准 ...大多数Web应用程序将通过频繁的异步AJAX请求实现长轮询。 轮询的效率低,非常浪费资源(因为必须不停连接,获知HTTP连接始终打开)

    一种Java EE多层架构下的大学物理实验系统

    基于MVC设计思想,通过Maven管理项目,以Struts2、Hibernate、Spring和Ajax为基本框架来构建整个系统。目的在于克服传统测评方式的弊端,提升物理实验教学管理的自动化程度。实践表明,系统具有良好的稳定性和可扩展...

    S2SM框架整合开发部门后台管理系统(spring+struts2+mybatis+easyui)

    主要是到的技术有通过Spring整合mybatis和strust2实现部门员工的CRUD操作。 3.采用spring aop实现对数据的新增,更新简单的记录当时的操作人和操作时间,另外就是在部门删除时,使用spring事务管理,来控制事务。 4....

    JS实时弹出新消息提示框并有提示音响起的实现代码

    代码实现的原理,在页面启用定时执行ajax请求,如果获得数据是最新状态的,要执行语音提示和弹出框提示,这样实现的弊端是频繁的调用数据库,该方法只适合于使用人数较少的系统。 1、加入语音提示 <audio id=...

Global site tag (gtag.js) - Google Analytics