AJAXWorld杂志主编 Dion Hinchcliffe 不久前发表了《你需要知道的有关AJAX的七件事情(Seven Things You Need to Know About AJAX)》一文。大意如下,
1。浏览器并不适合AJAX。第一个认真的AJAX项目才开始一周,你会发现Ajax 几乎已把浏览器推向其极限。事实是,没有强有力的第三方开发工具,清晰地设计任何规模的 Javascript 软件都需要训练有素和艰苦努力才成。在多个浏览器里调试Ajax应用麻烦透顶,想要做些认真的后台或多线程更需要你使出浑身解数,特别是你想结合那些用了数目有限的计时器的其他的组件。好消息是,简单的AJAX,(譬如点缀些DHTML),比大规模的AJAX要轻松得多了。但做好准备,一旦你的应用规模加倍,随时扩大开发和测试的努力。
2。你不需要你想象中的那么多 Web 服务。我原以为走Ajax这条路需要开发许多新的Web 服务来提供数据和存储。事实上,我发现许许多多项目满足于HTML scraping或使用老式的HTTP POST。这使得尝试 Ajax 开发容易之极,可以重用任何现有的后端HTTP服务,而不是转向SOAP或REST/WOA等复杂的服务。虽然这大概会导致糟糕的架构级的选择,但这也使逐步转化到Ajax 毫不费力,简直自然之极,虽然因此造成的以后的头痛大概是难以避免的。
3。Ajax比传统Web设计和开发更棘手。HTML用户界面规范的丢失,几乎无限制的隐藏功能的可能性,编程手法创建页面元素,以及Ajax 方式的其他固有的特性把我们所知的Web设计和开发方式都扔出门外去了。 Web 设计师必须深刻理解DOM,Javascript和CSS的能力,对浏览器如何显示图像,如何布局,以及显示各种元素要有深刻理解。开发人员发现测试既困难又枯燥。虽然工具在不断地,全面地改进,但要让整个工业积累出行之有效的最佳实践,模式和实用知识,要花几年时间呢。在此要高度赞扬一下象雅虎的Bill Scott这样的业界人士,赞赏他们通过推动类似雅虎UI设计模式库这样的东西,尝试解决这里提到的许多问题,极大地推进了业界的最高工艺水平。结论是,Ajax开发,起码是目前,与传统的Web开发相比要花更多的时间,同时要求更高的技能。
4。Ajax 工具和组件仍在涌现,现今还没有明显的领先者。虽然Dojo火爆出场,但竞争远未结束。譬如,Dojo框架本身的版本还是0.3 (注:Dojo 0.4已发行)。紧随其后的种种工具,框架和组件库还有很多。虽然OpenAjax 旨在使得众多产品相互合作,大多数的开发人员只会掌握这其中的2-3个,然后就一直用这几个产品了。在目前的情形下,过早定死在某个特定的产品,一般来说不是个好主意。创新,竞争,和市场的领先地位此起彼伏,尚无定数。同时,一定要去看一下script.aculo.us,Prototype,Google Web Toolkit,Yahoo! UI Library, JackBe,Zapatec,Bindows, Nexaweb,General Interface,Backbase,ActiveWidgets,以及 微软的Atlas。还有很多别的产品,我鼓动你去看一下Max Kiesler对50个Ajax 框架的汇总简评。
5。优秀的Ajax 程序员很是难找。Zimbra的Scott Dietzen最近感慨找到好的Ajax人才之难。但参考上述第3点,建造复杂的Ajax 应用要求的计算机技能要远比Web设计技能多得多。我发现有经验的程序员不太喜欢Javascript编程和调试。这种情形不会持久,但也要过几年才行。
6。必须积极地对付浏览器模型对Ajax的限制。虽然最后的结果会非常值得 ,但象任何技术, Ajax远非完美,它也有几个弱点。一个是它会违反现有的Web模型,譬如,加书签,后退按钮等等。幸运的是, 象Brad Neuberg这样的有识之士对此类问题已有方案,只要你愿意花力气,理解恢复此类功能的重要性。Ajax 也缺乏桌面软件的的很多强处,譬如能离线运行,访问本地硬盘存储等,但Flash 的本地存储和即将发行的Apollo平台能应付这类问题。
7。Ajax 只是成功RIA策略的一个因素。我以前也写过,如果你想让你的在线应用实现范围很广的功能,那么你必须将类似Flex,OpenLaszlo, 以及WPF/E等这样的RIA平台放在考虑范围之内,特别是在想支持象音像这样丰富的媒体的情形下,而Ajax对此几乎无能为力。Ajax 会日益对这些平台造成威胁,特别是在后端服务器提供对服务器端push,Web 服务,企业环境等支持的情形下。
打印 | 张贴于 2006-11-01 09:55:00 | Tag:AJAX/ATLAS
留言反馈
1、Ajax能否调用WSE 3.0的Web Services
2、Ajax如何解决数所传输安全性:数据加密与完整性(难道用JS来进行加解密?)
3、Ajax如何解决验证安全性:只有合法用户才有访问认证WebServices
(Asp.net中用Soap,也可以方法中封装LoginID与加密过的pwd)
但如果你的服务是信息服务为主的话,就要考虑生成两个版本的,一个给支持AJAX的浏览器看,一个给不支持AJAX的浏览器看,当然也包括搜索引擎。当然这两个版本最好是自动生成的。
这个需要通过合理的设计而避免
没有像一些人不负责任的鼓吹AJAX。
点出这些,可以让一个被媒体冲昏了头打算专注AJAX的朋友意识到将要面对的困难。
还有一点需要指出:AJAX中的内容很难被搜索引擎抓到。
现在的搜索引擎对javascript支持的也太差了
我是个极端分子,不用AJAX是因为不看好javascript的前景。
完全放弃javascript是因为对以后的服务器性能和网络传输速度有信心。
我觉着对于ajax,javascript还是基础,建议大家看看ECMAScript规范,了解prototype chain。进而了解javascript的面向对象的实现方式。
还有就是了解rpc,如java里的dwr和json-rpc-java,通用的json-rpc。
现在许多站点,都在结合部份Ajax部份Flash的作法。
Google/Yahoo/Microsoft等著名公司的服务网站,都有采用这个方法。
特别是Yahoo地图,更是直接使用 Flash9(Flex2)来开发。
因此,为了Ajax而Ajax是痛苦的。结合各种工具的优势,组合出来的网络应用是最合适的。