Web2.0技术的发展趋势(Ajax还是Flex)

来源:互联网 发布:人工智能硬件产业链 编辑:程序博客网 时间:2024/05/20 09:26

Web2.0技术的发展趋势(Ajax还是Flex)
本文力求从多个角度,多个方面比较Ajax与Flex在Web发展历程中所在的优势与劣势。因为在写这篇文章的时候也同步发表在了我的博客之中,为使文章利于广大网友的阅读,因此行文之间比较随意,还请谅解!
Web的发展历程:
最近在实习,老板的意思是让我们先做一个课题。他总共给出了四个课题,我从中选择了“Web2.0技术的发展趋势(Ajax还是Flex)”。因此最近阅读了大量的关于Web方面的书籍和资料。也对Web的发展历程有了一个比较清晰的认识。下面就来总结一下我的所得。
我属于80后,具体的说是85后,说来惭愧,直到高中的时候我才可以说是正式的接触到网络这个东西(也就是2004年左右),在此之前,电脑对 我而言只是一个比较强大的计算器而已。我接触到网络的那个时候也已经是Web2.0蓬勃发展的时候,我错过了Web1.0的时代,没有经历Web1.0到 Web2.0的变革。因此对于我来说直到不久以前我对Web1.0和Web2.0所指何物还是不甚明了!
但是通过最近几天的了解,还是有很大的收获。首先Web1.0在Web2.0的大浪冲刷中并没有淘汰出去,网络中随处还是可以看到Web1.0 的身影,我经常去看新闻的地方 腾讯主页 新浪主页。这些都是Web1.0的代表之作。Web1.0的时代我们作为互联网的使用者只能被动的去接受网上的信息,这时候的网络更多的是一种单向的信息 传送,90年代末的时候的网页仅仅都是一些静态网页,那个时候在Web方面可以应用的也就是HTML而已。做个比方,那个时候的互联网和以前我们的黑板 报,报纸并没有本质上的区别,也仅仅就是更加方面用户快速阅读而已。直到Web2.0的横空出世,Ajax技术的逐渐成熟对Web2.0的推动起到了巨大 的作用,在以前我们仅仅通过动态图片的方式来体现网页的生动这种方式之外,我们发现Web2.0的时代我们也可以作为信息的制造者来参与到互联网这个庞杂 的东西之中。Google这个业界的领头者算是把Ajax用到了极致。Google Maps也是因此声名大噪。博客,维基百科,直到现在非常火热的微博,这些也都是Web2.0的经典之作。我们发现这个时候我们既是互联网的使用者同时也 是互联网信息的发布者了。最典型的维基百科我们也可以作为作者去修改其中的任何一个词条。以前作为纸质出版的时代我们很难体验到作为一个作者发表自己思想 所带来的成就,但是现在Web2.0很轻松的实现了我们这个梦想。总的来说,Web2.0就是一种互联网和用户双方的互动过程,在Web2.0中互动的概 念是非常重要的。也正是因为有了互动这一特性,Web2.0才能和Web1.0明显的区别开来。
现在Web2.0可以说已经发展到了极致,因此有人扬言Web2.0将在以后的几年之中走下坡路甚至到最后的消亡,我认为Web2.0的消亡是 不可能的,就像我们现在依然可以看到Web1.0的各种应用一样!现在人们更是眼光放足于长远,很多人开始畅想于Web3.0是个什么东西。李开复也提到 Google已经开始了Web3.0概念的提出,李开复自己本人也对Web3.0提出了概念,这个网上随处可以找到,这里不再多说!至于Web3.0网上 的说法是五花八门,难得统一,至于各种观点大家都可以在网上找到,我在这里也不再多说。至于Web3.0到底是什么样子,现在还很难具体揣测出来,也许是 等到某种技术的诞生也就自然而然的将我们带到了Web3.0的时代,到了那个时候我们也许就会恍然大悟,“原来Web3.0就是这样啊!!”
前面这些文字,我大概的介绍了我对Web1.0-2.0-3.0的理解,还并没有说到我的这篇文章的重点所在!也就相当于先给大家介绍一下背景知识而已。更多精彩在后面,敬请期待!
 
 
Ajax与Flex简介:
首先来介绍一下Web2.0。Web2.0 是相对Web1.0 的新的一类互联网应用的统称。较Web1.0的那种用户仅仅通过浏览互联网来获取信息的方式,Web2.0则更注重用户的交互作用,用户既是网站内容的浏览者,也是网站内容的制造者。举个例子,目前网络之中的各大门户网站就是典型的Web1.0的应用,用户仅仅是通过浏览网页来获取我们所需要的资源及信息。而Web2.0的典型应用则有目前相当流行的博客,维基百科,百度百科等,用户在浏览信息的同时也可以作为信息的发布者,因此Web2.0更强调互联网与用户之间的交互。
而在Web2.0的各种应用诞生的同时也产生了各种Web2.0的语言,在Web2.0技术的发展趋势中追求的是一个前所未有的人机界面创新时代。其中Ajax和Flex就是其中的两种为满足这种人机交互效果的语言。根据Web2.0的发展需要我们对比这两种技术以反观这两种技术对于Web2.0技术未来发展趋势的满足情况。
Ajax:
首先Ajax并不是一门单独的编程语言,它是多种语言,多种技术的复合体。 Ajax应用到了以下各种技术HTML,JavaScript,DHTML,DOM,XML。Ajax所追求的目的就是尝试建立桌面应用程序的功能和交互性,与不断更新的 Web 应用程序之间的桥梁。可以使用像桌面应用程序中常见的动态用户界面和漂亮的控件,不过是在 Web 应用程序中,以消除Web 页面中出现的等待服务器响应,等待屏幕刷新,等待请求返回和生成新的页面这种类似的延时,以达到桌面程序的那种快速响应的效果。
目前Ajax已经成为了Web应用的主流开发技术,大量的业界巨头已经采纳并且在大力推动这个技术的发展。在这其中Google的Google  Maps应该算是一个典型的应用。同时IBM、Oracle、Yahoo!、BEA、Novell等业界领先的公司启动了Open Ajax项目。致力于为Ajax开发建造先进强大的开发工具。这一系列的举动都为Ajax的发展提供了足够的动力。
但是Ajax也有很多与生俱来的缺点:由于是多项技术的合成,比较复杂;在Ajax中使用非常广泛的XMLHttpRequest Object的标准目前仍然没有建立统一;同时由于大量应用了Javascript带来了调试困单,源代码难以保护的缺点。
总之,目前来说,Ajax是Web标准和Web应用的可用性理论的集大成者。它极大地改善了Web应用的可用性和用户的交互体验,最终得到了用户和市场的广泛认可。
Flex:
Flex 是一个针对企业级富互联网应用的表示层解决方案,由 Adobe提供,基于 XML 的语法来布置和创建用户界面。运行时需要基础设施。对于需要与服务器交换数据的客户机,Flex 需要一个 Flex Data Services Server,它与 Flash Player 插件中运行的客户机进行通信。在本质上,这个服务器为客户机和应用程序的服务器组件之间的所有通信和数据交换提供中介。由于Flex要为 Flex Data Services Server 的许可证付费,但是某些公司不愿意承受费用和插件限制。这一点限制了Flex的发展。由于绝大部分的用户都安装了浏览器的Flash Player插件。再加上目前Flex最新版本已经将SDK公开,这样将会加快Flex的发展。
依赖Flex的出身,所以Flex同时也具有很多的优点:使用矢量图形的表达,效果很好;同时有着丰富的组件库;另外对多媒体有着非常广泛的支持。与Ajax相比, flex 的开发效率显然要比Javascript快一些,能更好的面向对象开发。
除了上面说到的许可证限制Flex之外,由于Flex需要编译成swf文件之后通过下载才能运行,文件相对比较大,比较浪费网络资源。
总的来说两者都是Web2.0技术中佼佼者,从某一些角度来看,两者并不能完全划等号。但是两种技术都为Web2.0所追求的人机交互方面做出了卓越的贡献。两者之中Ajax目前使用的非常广泛,Flex作为后来者也有着很不错的表现。目前Ajax也通过各种渠道来弥补自己的缺点:近来组成了一个开放的行业协会 OpenAjax,它的目的是解决 Ajax 的不兼容性问题,以及解决其他 Ajax 相关问题。同时Ajax也开始建立自己的工具包,相信不久将会给Ajax的开发者带来更好的编程感受。从个人感觉来说,在Web2.0发展的过程之中 Ajax依然会大放光彩,而Flex也将会有自己的一席之地。
 
 
Ajax与Flex的运行机制:
在这一部分我们先来介绍几种技术在Web中所扮演的角色。HTTP,HTML,Ajax,Flex……当然把重点放在Ajax与Flex的通信机制上面。
HTTP:
Http 协议在Web应用程序的通信中起到了非常重要的作用,HTTP协议是一种推拉协议,用来实现客户端和服务器之间的请求和应答。其建立在TCP协议之上完成通信。在我们访问网页的时候,首先浏览器和服务器之间通过三个握手建立连接,之后浏览器向服务器发送请求命令,并发送请求头信息,继而服务器发出应答附带应答信息。最后关闭连接或者保留。
HTML:
HTML名超文本标记语言,是一种标记语言,它在Web程序的主要是负责浏览器内容的显示。是构成网页文档的主要语言。HTML文本是由HTML命令组成的描述性文本,HTML命令可以说明文字、图形、动画、 声音、表格、链接等。HTML的结构包括头部(Head)、主体(Body)两大部分,其中头部描述浏览器所需的信息,而主体则包含所要说明的具体内容。 Html页面通过框架设计,标签编程等方式来进行界面的统一视图处理,这给页面上的数据元素带来了很大的不确定性,同时也降低了数据的可维护性。(顺便对比下Flex的现实模式)Flex的视图模式则对应用程序界面的视图控制进行了单独的定义----视图模式。具体来说,视图模式定义了界面中的一部分数据条目的现实方式,如我们可以对Windows系统中的文件夹进行平铺查看或是列表查看,这就是典型的视图模式,在Flex中,我们经常需要对数据组建进行更为复杂的视图转换操作,如定制化地增减组建等。
XML:
XML是一种可扩展标记语言,与HTML一样。但是XML的用途更为广泛,其扩展性比HXML更强,语法也比HTML严格。除了用了作为数据的显示功能外,更有数据储存,利用网络传送等特性。
传统Web应用程序通信机制:
              
图注:传统的Web应用程序通信机制
 
 
在传统的Web应用程序的交互方式中,由用户触发一个HTTP请求到服务器(同时客户端与服务器之间的数据交互主要是通过表单的传递来完成的),服务器对其进行处理 后再返回一个新的HTHL页到客户端,每当服务器处理客户端提交的请求时,客户都只能空闲等待,并且哪怕只是一次很小的交互、只需从服务器端得到很简单的一个数据,都要返回一个完整的HTML页,而用户每次都要浪费时间和带宽去重新读取整个页面。
 
Ajax 是传统WEB应用程序的一个转变。以前是服务器每次生成HTML页面并返回给客户端(浏览器)。在大多数网站中,很多页面中至少90%都是一样的,比如: 结构、格式、页头、页尾、广告等,所不同的只是一小部分的内容,但每次服务器都会生成所有的页面再返回给客户端,这无形之中是一种浪费,不管是对于用户的 时间、带宽、CPU耗用,还是对于ISP的高价租用的带宽和空间来说。如果按一页来算,只能几K或是几十K可能并不起眼,但像SINA每天要生成几百万个 页面的大ISP来说,可以说是损失巨大的。而AJAX可以所为客户端和服务器的中间层,来处理客户端的请求,并根据需要向服务器端发送请求,用什么就取什么、用多少就取多少,就不会有数据的冗余和浪费,减少了数据下载总量,而且更新页面时不用重载全部内容,只更新需要更新的那部分即可,相对于纯后台处理并 重载的方式缩短了用户等待时间,也把对资源的浪费降到最低,基于标准化的并被广泛支持和技术,并且不需要插件或下载小程序,所以Ajax对于用户和ISP 来说是双盈的。
下面两图阐述了Ajax的通信机制:
                  

                        图注:Ajax的通信机制

图注:Javascript and Dom interaction
而Flex与Ajax有着异曲同工之妙,两者都摒弃了传统Web的那种超负荷的通信机制,而使用了一种更加轻捷的通信方法,所不同的是使用的载体不同,Ajax使用了Javascript而Flex使用了Actionscript。
下面图说明了Flex的通信机制:


图注:From Flex source to player


图注:Flex通信的详细机制


图注:Flex是如何通信的
综上所述我们可以发现Ajax与Flex之间的异同,Ajax与Flex都可以解决传统Web应用中需反复刷新页面的问题,因为两者都应用了异步式连接的方式,都是可以通过XML来进行数据的发送等。在第一次请求页面的时候Ajax技术不仅得到了需要的网页也得到了很多Javascript文件,这在整个会话提供了应用逻辑,同样的Flex在第一次请求时下载了相关的SWF文件,这样在会话中仅仅需要一些数据的支持,而不需要反复刷新页面。可以说两种技术实现访问网页的时候得到的不仅仅是一个网页,更是一个应用。而两者的不同就在于两者在编程中使用的语言上是不一样的,语言的差别在后面进行分析!
面向对象思想的优势:
起初,“面向对象”是专指在程序设计中采用封装、继承、抽象等设计方法。可是,这个定义显然不能再适合现在情况。面向对象的思想已经涉及到软件开发的各个方面。如,面向对象的分析(OOA,Object Oriented Analysis),面向对象的设计(OOD,Object Oriented Design)、以及我们经常说的面向对象的编程实现(OOP,Object Oriented Programming)。
面向对象的分析和设计中最典型的是UML的分析设计方法了, 同时在面向对象的编程实现中也有了很多的面向对象语言,比如Java以及现在的很多新诞生的语言。可以说面向对象的思想现在已经是深入人心了!
面向对象的思想中,植入了类和对象的概念,这些作为面向对象思想的最基本的组成构成了面向对象的总体架构。面向对象思想认为任何东西都是可以划归成类,任何一个具体的东西都是某个类的对象,同时每个类都有自己的状态和行为,来对现实中的事物进行描述和操作。同时面向对象思想中又有着继承,多态以及封装的思想。总的来说面向对象的思想带来了软件设计的独立性,通用性和灵活性。
在介绍面向对象思想的同时,我们还希望大家能对传统的设计方法能有所了解。传统的结构化设计思想强调开发方法的结构合理性和所开发软件的结构合理性的软件开发方法,其本质是功能的分解,从系统功能开始逐层向下分解下去,直到仅仅剩下若干可以实现的字处理为止。由于软件开发思想的逐渐成熟,传统的结构化思想已经逐渐淘汰,在发展的历程中,证明了传统的开发思想有着很多的不足之处,首先,结构化方法基于功能处理来构造系统的,这种方法造成了系统的结构是不稳定的,其次,结构化的方法构造的系统边界模糊,难于把系统扩展到新的边界,最后,结构化开发思想工作的繁琐重复,导致系统冗余以及可重用性的降低。
我们都知道在软件设计方法经历的过程中,有着传统的设计方法以及现在广泛使用的面向对象的设计方法,当然还包括现在正在逐渐升温的敏捷开发方法,当然在后两种的开发方法中,面向对象的思想是最基本的。
对比以上的几种思想,我们可以发现面向对象思想有着很大的优势,在分析设计层,面向对象提供了更高级的抽象能力以及更多的方法和工具,在实现维护层,面向对象的设计使得代码的重用更加容易,也有着很好的可扩展性。所以说一种面向对象的语言比起一种结构化的语言来说更容易让程序员结构,也更容易实现各种功能思想等,也有着更加广泛的用途。
Actionscript与Javascript:
两种语言方面的对比来说,最大的区别在于 Actionscript是一种面向对象语言,在这一点来说,它比Javascript有很大的优势,关于面向对象语言的优势可以参看上一个主题。而且 Actionscript是跟随着Flash的发展而来的,其语言的设计初衷便与Flash紧密结合。而Javascript诞生已久,在Ajax中的应用也只是直接拿来而已。从两种语言的设计初衷上面来说。Flex应该是更胜一筹的。而且在上个主题中充分说明了面向对象语言与面向过程语言以及基于对象语言之间的差别以及优劣对比。综合来说,Flex中应用的Actionscript更利于学习使用。
 
总结:
上面从多个方面下手,了解了Ajax与Flex的种种差异。综合各方面的因素以及本人最近一段时间的学习来说,Flex更加适合于应用学习。其一面向对象的语言,其二Web2.0发展起来的富应用。以上两点应该是Flex较Ajax出色的最关键两点。
参考资料:
很多资料来自网上,WIKI百科,百度百科
Ajax技术与传统Web应用的比较     作者 孙启良
Flex3 A  beginner’s Guide            作者  Michele E.Davis  Jon A.Phillips
Ajax实战      网友作品    以及众多网友的技术博客