`

[转载]Web表现层技术竞争替代关系一览

阅读更多

转自:blog.csdn.net/mozilla/archive/2007/04/07/1555684.aspx

很多人对于现有哪些Web表现层技术,它们之间是什么关系搞不清楚,我来简单介绍一下。

现有的Web表现层技术按照事件模型所在的位置可以分成两大类,事件模型位于服务器端的和事件模型位于客户端的。

基于HTML表单交互的传统的Web开发框架,事件模型都位于服务器端,这些框架包括各种Web MVC框架(Struts、WebWork、Spring MVC等等)、JSF、ASP.NET、RoR、以及PHP、Python等语言开发的各种Web开发框架。这样一类框架的主要特点是用户的事件必须要发送到服务器端来处理。如果它们不与Ajax或者某种RIA技术相结合,它们无法提供最佳的响应能力(因为所有的用户事件都需要到服务器端走一趟)。在这些框架中,RoR和ASP.NET对于Ajax的支持是最好的。ASP.NET和JSF这两个事件驱动的Web开发框架的事件模型与服务器端绑的最死,因此Ajax在这两个框架中,受到的限制最大。

Ajax和各种其他的RIA技术,包括M$ WPF、Adobe Apollo、Adobe Flex、Java Web Start、M$ Smart Client、Mozilla XUL等等,事件模型都位于客户端。它们与服务器端构成的一种最理想的整体架构是基于REST的Web服务(RESTful Web Service)。在这种架构中,服务器端不存在事件模型,服务器端只提供数据服务,表现逻辑完全位于客户端。大家去认真读一下定义Ajax技术的那篇著名的文章,就可以清晰地看到,Ajax技术的核心思想是在客户端处理用户的事件,它的事件模型是位于客户端的。如果仅仅把Ajax当作一种不刷新页面的技术(有的时候,使用IFrame也可以做同样的事情),那是没有充分理解Ajax技术的内涵。

CSDN前几天摆了一个场子,把一些Web表现层技术放在一起,希望它们杀个你死我活。不过在我看来,上述两大类Web表现层技术的适用场合的交集其实并不是很大,竞争主要是出现在它们的内部。

JSF的主要竞争者是ASP.NET,Sun搞出来JSF规范最初就是为了与ASP.NET竞争。现在ASP.NET Ajax日渐成熟,因此在对于Ajax的支持方面领先了JSF很多。其实Ajax与JSF是友非敌,善用Ajax,可以有效地改善Web应用的可用性,弥补这样一类框架事件模型完全位于服务器端的不足。不清楚为何袁红岗会将Ajax当作JSF的敌人。

而与JSF、ASP.NET相比,WPF、Apollo在技术上领先了一代。孟岩非常看好WPF的前景,我也很看好,而我更看好的是RIA+REST这样一种新型Web开发架构的前景。Apollo依靠Flash的市场占有率占据了领先的优势,WPF依靠M$对于桌面操作系统的垄断,有望奋起直追。WPF和Apollo在这两三年将是RIA技术领域主要的竞争者,RIA技术也会越来越多地蚕食传统Web开发框架的地盘。很遗憾的是在RIA技术领域Java缺席了,Java Web Start不大可能在这个领域扮演一个主要的角色。

Ajax技术的缺点很明显,主要是在开发效率方面,但是Ajax目前有几个无法替代的优点:
1. Ajax技术的部署是零成本的(Flash的部署还达不到零成本,WPF所基于的技术XAML和.NET的部署成本则要高很多),因此Ajax技术具有最佳的可访问性(accessibility),它只需要有一个现代Web浏览器就足够了。
2. Ajax技术是完全基于Web标准的,基于Web标准的技术对于搜索引擎优化(SEO)是最友好的。
3. 在目前,优秀的Ajax应用的可用性仍然领先于其他技术。可用性并不等于花哨,在很多场合,使用丰富的3D效果(或者其他的花哨效果)并不能有效地改善应用的可用性。

所以对于2/3的Web应用,其实基于Web标准的Ajax技术已经基本上够用了,而其他1/3需要更为丰富表现效果的场合,则是RIA技术的用武之地。
如果可访问性和搜索引擎优化对于你们开展业务至关重要,那么目前的唯一选择就是Ajax。所以我预测今后很多年,基于Web标准的技术仍然会统治互联网,而其他的RIA技术则会在Intranet的企业应用中展开厮杀。

Ajax技术基于真正的Web标准,它是属于100% public domain的技术,因此Ajax技术是上述所有这些技术的朋友,而不是敌人。我将Ajax技术比喻为一种像水一样的东西,上善若水,水善利万物而不争,其他的技术都可以对Ajax技术加以充分利用。RoR已经与Ajax形成了非常理想的合作关系,彼此相得益彰,还从框架的核心设计上对REST提供了支持。我从来没有看到过M$和Adobe的核心开发人员出来抨击Ajax,他们不会也不需要将Ajax当作他们的主要竞争对手,而在WPF和Apollo中也用到了不少JavaScript。这些RIA技术的充分发展并不会严重打击Ajax技术,相反会促进Ajax技术的发展。因为它们从架构上来说是一致的(Ajax+REST或者RIA+REST,其实Ajax也可以被纳入为一种RIA技术),Ajax融合进WPF和Apollo的架构中是比较容易的。而Ajax融合进ASP.NET和JSF的架构则要困难一些,因为它要受到这些架构服务器端事件模型的限制。袁红岗选择了放弃Ajax,也是出于一种实现成本上的现实考虑,他们可能并没有能力开发出类似于ASP.NET Ajax那样的框架来。但是他们没有必要来踩Ajax,虽然Ajax是一个无父无母的孤苦孩子,拉出来殴打一顿,估计也不会有人来寻仇。:)

参考资料:
1.  《Ajax实战》
2.  《Ajax模式与最佳实践》
3.  《Ajax设计模式》
4.   Web Application Solutions: A Designer’s Guide
5.   孟岩的两篇blog:
在Rails中探索资源的世界——7月9日David Heinemeier Hansson演讲的翻译稿(部分)
REST:Rails 1.2的意义,以及一个翻译接力的发起
6.  《Don't Make Me Think中文版》
7.  《面向使用的软件设计》
8.  《软件创新之路——冲破高技术营造的牢笼》
9.  《J2EE without EJB中文版》
10. 《Spring框架高级编程》
11. 《实战Struts》

分享到:
评论

相关推荐

    竞争同业动向一览表.doc

    竞争同业动向一览表 竞争同业动向一览表是一种常见的商业智能工具,旨在帮助企业了解竞争对手的动向和战略,从而制定更明智的商业决策。本文将从竞争同业动向一览表的标题、描述、标签和部分内容出发,剖析该工具的...

    web服务常用技术方式一览.docx

    Web服务是互联网上提供应用程序和服务的主要方式之一,涵盖了多种技术和框架。本文将深入探讨Web服务常用的几种技术方式,包括动态脚本语言、网站框架、数据库系统以及数据库管理和安装。 首先,动态脚本语言在构建...

    竞争同业动向一览表.zip

    5. **合作伙伴与供应链**:了解竞争对手的重要合作伙伴和供应链结构,判断其合作关系的稳定性以及可能带来的优势。 6. **技术创新**:研究竞争对手的技术研发情况,包括新专利申请、技术引进或合作,预测其未来可能...

    竞争同业动向一览表格式.doc

    这包括技术升级、合作伙伴关系、进入新市场等,这些都是企业需要关注的竞争信号,可能影响整个行业的格局。 6. **投入营业比例**:这个数据反映了竞争对手在不同业务板块的投资分布,有助于评估它们的战略重点。...

    竞争同业动向一览表(DOC模板格式).doc

    5. **新开发动向**:这是竞争对手正在投资或计划投资的领域,可能包括技术研发、市场拓展、合作伙伴关系等。跟踪这些动向可以预见市场变化,及时调整自身战略。 6. **投入营业比例**:了解竞争对手在各个业务领域的...

    Excel表格+Word文档各类各行业模板-竞争同业动向一览表.zip

    3. 竞争格局:详细描绘行业内的竞争态势,包括主要公司的战略定位和相互关系。 4. 竞争对手分析:深入剖析每个竞争对手的业务模式、战略目标、市场策略等。 5. 动向解读:基于数据和事实,解析行业动态对各公司的...

    招标货物一览表及技术参数 招标货物一览表.pdf

    招标货物一览表是企业在进行公开招标时提供的详细清单,列出所有待采购的货物及其相关技术参数,以便投标方了解需求并准备相应的报价和技术方案。在给出的文件中,招标货物涉及多个不同类型的设备,包括冷却器、捣固...

    2011届计算机科学与技术专业毕业论文题目一览表.docx

    2011届计算机科学与技术专业毕业论文题目一览表.docx2011届计算机科学与技术专业毕业论文题目一览表.docx2011届计算机科学与技术专业毕业论文题目一览表.docx2011届计算机科学与技术专业毕业论文题目一览表.docx2011...

    web过滤敏感字一览

    关键词 屏蔽 论坛 网站 非法关键词 - web过滤敏感字一览

    web错误Code一览

    ### Web错误代码详解 在日常网络使用中,我们偶尔会遇到一些令人困惑的错误提示,尤其是在尝试访问网站或网络资源时。这些错误信息通常被称为HTTP状态码,它们是由Web服务器返回给客户端(如浏览器)的一系列数字...

    专业技术人员国家职业资格证书一览表-专业技术资格证书一览表定义.pdf

    《专业技术人员国家职业资格证书一览表》是一份详尽列举了各类专业技术资格证书及其与职称对应关系的文档。这份2018年7月12日整理的表格旨在明确各类职业资格证书在专业技术职务中的定位,帮助专业技术人员了解其...

    关系代词及关系副词一览表(新一代)

    1. "That"在某些情况下可以替代关系代词和关系副词,如引导名词性从句时,它可以不作成分,常被省略。 2. "As"和"which"都可以引导非限制性定语从句,但是"As"通常位于句首,而"which"则居于句中。"As"引导的从句中...

    合格供方一览表.pdf

    综上所述,合格供方一览表作为企业管理供应链、采购流程和供应商选择的重要工具,涵盖了供应链管理的基本概念、合格供应商的含义及作用、文档内容和格式要求、OCR技术的应用以及采购流程的规范性等方面的知识。

    汽油添加剂主要竞争产品一览表.doc

    汽油添加剂主要竞争产品一览表.doc

    柴油添加剂主要竞争产品一览表.doc

    柴油添加剂主要竞争产品一览表.doc

    IDL等绘图命令对应关系一览表汇编.pdf

    IDL 等绘图命令对应关系一览表汇编 IDL、NCL、GRADS、MATLAB 等绘图命令对应关系是一览表,这里主要介绍 GRADS 和 NCL 之间的对应关系。 GRADS 和 NCL 对应关系 GRADS 是一个强大的可视化工具,可以读取多种格式...

    SpringBoot技术栈一览.png

    SpringBoot技术栈一览,本图片包括整个SpringBoot相关的技术体系,可以一目了解的看到整个技术栈!

    专业技术人员情况一览表.doc

    文档"专业技术人员情况一览表.doc"是用于记录和评估专业技术人员详细信息的表格,它包含了多个关键领域的数据,这些信息对于理解技术人员的专业背景、工作经历、成就和贡献至关重要。以下是对表格各部分的详细说明:...

    Qt类继承关系以及所属模块关系一览表

    qt5中的各种类关系继承图:一个为全局查看的图片版;一个为分模块的高清pdf帮助文档,支持放大缩小功能。 在学习Qt的时候快速的查询了解类的继承关系对我们的学习会有很大的帮助。 类继承图的作用:在学习Qt源码的...

    iOS开发技术栈一览

    展示iOS开发的技术分布栈,每个技术点都详细划分了下属的小技术点。

Global site tag (gtag.js) - Google Analytics