关于“重量级”使用Ajax的利与弊问题(希望大家帮忙)
关于Ajax的好处,我想大家都应该很清楚,
这种“交互性”,
这种“用户体验”,
还别说“用户”体验了,我自己做的,我自己感觉都非常好 ^_^。
现在遇到个让人疑惑的问题,自己也不敢轻易的下决定且能力有限.
问题是这样的: 在项目中“重量级”的应用Ajax会带来什么负面影响?
比如说性能啊?还有等等方面(具体多少方面大家得帮忙想想),
所谓“重量级”在我这可以理解为“桌面应用程序”,
举个简单的例子,
一个服务器端的控件:DataGrid,它完全可以用Javascript来控制生成动态的表格,表
格上实现分页,删除等等操作,然后再将其封装,可以说从功能上和DataGrid几乎相同。
究竟这样做会对性能或者哪些方面带来不好的影响呢?
大量的使用这种客户端技术对机器有什么特别的需求?
不知道这种“重量级”的Ajax操作会不会带来“意外”的弊端??
有或者安全性存在隐患?
请大家各抒己见,发表下对此问题的看法,谢谢大家
------解决方案--------------------目前只用轻量级的ajax应该,以前也试着用过像ajaxpro.dll之类的Ajax框架,但是感觉调试错误时不太方便,可能是版本问题吧
------解决方案--------------------不敢用太多Ajax总感觉有很多问题。
------解决方案--------------------用ajaxpro.dll调试是不方便,自己写XMLHttpRequest直接alert(xmlhttp.responseText)可以看到错误信息
------解决方案--------------------任何东西是一个双仞剑,总有利或弊
------解决方案--------------------赞成楼主意见
------解决方案--------------------ajax的缺陷还是有不少的,如果你觉得你能忍受的话就无所谓
1、破坏了浏览器的后退机制,后退按钮是一个标准的web站点的重要功能,但是它没法和js进行很好的合作。这是ajax所带来的一个比较严重的问题,因为用户往往是希望能够通过后退来取消前一次操作的。gmail可以实现后退,它只是采用的一个比较笨但是有效的办法,即用户单击后退按钮访问历史记录时,通过创建或使用一个隐藏的IFRAME来重现页面上的变更。(例如,当用户在Google Maps中单击后退时,它在一个隐藏的IFRAME中进行搜索,然后将搜索结果反映到Ajax元素上,以便将应用程序状态恢复到当时的状态。)
2、安全问题
技术同时也对IT企业带来了新的安全威胁,ajax技术就如同对企业数据建立了一个直接通道。这使得开发者在不经意间会暴露比以前更多的数据和服务器逻辑。ajax的逻辑可以对客户端的安全扫描技术隐藏起来,允许黑客从远端服务器上建立新的攻击。还有ajax也难以避免一些已知的安全弱点,诸如跨站点脚步攻击、SQL注入攻击和基于credentials的安全漏洞等。
3、对搜索引擎的支持比较弱。采用ajax技术的话搜索引擎更难搜索到该页面
4、破坏了程序的异常机制。至少从目前看来,像ajax.dll,ajaxpro.dll这些ajax框架是会破坏程序的异常机制的。关于这个问题,我曾经在开发过程中遇到过,但是查了一下网上几乎没有相关的介绍。后来我自己做了一次试验,分别采用ajax和传统的form提交的模式来删除一条数据……给我们的调试带来了很大的困难。
5、另外,像其他方面的一些问题,比如说违背了url和资源定位的初衷。例如,我给你一个url地址,如果采用了ajax技术,也许你在该url地址下面看到的和我在这个url地址下看到的内容是不同的。这个和资源定位的初衷是相背离的。
.....
详见我blog:http://www.cnblogs.com/ustbwuyi/archive/2007/02/08/645061.aspx
------解决方案--------------------我的系统有问题,字看得不太全。你所谓的重量级ajax是什么呢?
asp.net ajax 以及ajaxpro 我在项目中都层有所使用。当一开始使用asp.net ajax的时候很开心,觉得这下使用ajax方便多了,也不用担心js的浏览器兼容问题了,所以在其中的一个项目中可以说的大量的使用了这个,后台程序发布的时候因为是放在虚拟主机上使用,才感觉出来不太好,觉得最大的问题还是性能下降了不少。所以现在放弃了这个,将asp.net ajax从程序全部移除
我个人喜欢ajaxpro多一些。在局部实现ajax会比较方便,只是需要考虑不同类型的浏览器,在js方面需要下点工夫。不过性能我个人认为比asp.net ajax好一些。
------解决方案--------------------我个人不太建议大量使用ajax,不过在一些局部的,比较消耗时间的地方使用ajax会是一个比较好的选择。比如:在一个页面打开的时候它需要从其他的网站上抓取一个你很需要的东西,如果你直接在后台代码的pagelode中执行这个操作时间可能会比较长,在这个地方使用ajax来实现将会比较使用,等页面其他地方都加载完了,在去抓取这个数据并显示,一般在这类情况下我会使用JS+ajaxpro 或者js+xmlhttp来实现。
------解决方案--------------------ajax还没用熟..
个人倾向于部分页面使用,以前不是某人写过AJAX的七宗罪么
------解决方案--------------------唉,AJAX 不熟,
只是玩玩 AjaxPro,容易驾驭,个人喜欢,特别是 06.10.4 那个版本的 JSON 算法特快,
序列化16k, AjaxPro < 520ms, Altas Release 1.0 近 20s
我看,从纯应用角度选择,
Altas 适合全站单纯网站或者诸如社区型的Web应用程序, 因为它提供了和多 UI 方面的 Controls,并且便于与 ASP.NET WebControls WebPart 进行交互,有效的提高开发效率,
真的自己开发一套,客户端将数据集呈现为 table 的库,并不是一件轻松的事,特别是当你要考虑跨浏览器,这个前提还是你非常熟悉 JS dhtml css,为了能开发出高效的可维护行代码,你还必须精通基于 OO 的 js 设计,否则,一个项目完成之后,看着一陀一陀脚本代码,都是惨不忍睹
而像 AjaxPro AjaxMagic 这样的轻量集框架,适合偏重应用的系统,可以更加灵活的定制开发,
一般的,我是会包装一次某个框架,以适合自己的项目需求
------解决方案--------------------