阅读更多

JavaScript库,ICEfaces,Adobe Flash,微软Silverlight,现在还有HTML5,全球性的网络支配地位的竞争已经进入了崭新的时代——一个富网络应用(简称RIA,中文也有叫富互联网应用)的时代。本文目的是界定什么是RIA,解释为何网络已经开始向RIA靠拢,探索今天已经存在的不同RIA框架,对每个框架作出一些优点和缺点的概述,并讨论这些新技术在未来将是怎么样的生存态。


RIA是何物?

所谓RIA,或者说富网络网应用,就是指可以像桌面程序一样操作的网络应用。 在RIA冒出来之前,大多数的网络应用都是静态的页面构建的。


 
Sumo Paint 是一个基于Flash的RIA, 具有像Photoshop一样的图形编辑功能。

跟桌面应用程序不同,任何一个网页的互动往往需要重新加载一个全新的页面。而桌面应用程序,在另一方面,有很多更好的用户交互性,因为所有处理都是在用户的机器本身,所以能给以更加无缝的用户体验。

因此,软件开发商开始问自己,“我们产品应该是一个桌面应用程序还是一个Web应用程序呢?”

这一直是一个公平的问题,因为这两种类型的应用程序都具有各自优点和缺点。

桌面应用程序具有流畅的用户交互性,但软件是售出去的,会遇到发布和更新的问题。

Web应用程序,另一方面,很容易从网上获得,摆脱相关的软件发布和更新的问题,但在用户交互性体验非常差。

因此,怎么样才能两全其美呢?

RIA就是两全其美。 RIA通过网络发布,有非常丰富的用户交互。得益于Ajax的出现,一个无需刷新就可以发送服务器请求的网络应用的方法,新技术出现,加入了RIA的运动。

基于这些技术出现了一些框架,帮助开发人员构建和部署富网络应用程序,如JavaScript库,ICEfaces,Adobe Flash 4(Flex 3前身),微软Silverlight,以及HTML5的。

让我们来一个个探讨RIA的框架。

网络应用的JavaScript库

JavaScript库,例如 jQuery和MooTools 是首批技术之一,可以真正的帮助部署流畅和互动的富网络应用。它们提供通过杠杆客户端脚本来处理前端接口功能的RIA框架。它们是一些基本的 Javascript文件,由一些有用的,经过跨浏览器测试功能的集成。可以使用Ajax,以及处理普通的基于用户驱动事件的交互,如显示和隐藏内容。

目前最流行的有jQuery(尤其是使用jQuery UI),MooTools,YIU(雅虎用户界面库),以及EXTJS。这些库包括RIA组件,如网格,图表和复杂的表单元素,以及处理Ajax的工具。 最引人入胜的是,大部分网络开发的JavaScript库都是开源的。

如果你不想购买一个集成开发环境(IDE),但仍希望在自己的网站绚丽而专业的RIA功能,JavaScript库是一个很不错的选择。

使用JavaScript库的网站有Google,Digg,雅虎,亚马逊,微软,Twitter,以及Best Buy。

ICEfaces

ICEfaces是标准的JavaServer Faces(JSF)的框架的扩展,旨在去除方程中的JavaScript从而简化程序员的工作流程。换句话说,ICEfaces通过Java应用接口为 你处理了所有的JavaScript / Ajax。通过删除这些自定义JavaScript函数的复杂引入,大大简化了创建富网络应用的任务。

如果你的团队主要成员是Java开发人员,或者如果你的网络应用程序不需要其它ICEfaces没有的复杂组件,又或者如果你的网络应用程序是事件驱动 的, 那么使用ICEfaces是很好的选择。如果你的网路应用是事件驱动的,请确定你已经了解ICEfaces不提供真正的“服务器推”技术的, HTML5, Flash Builder 4和Silverlight都支持的。不过,相应地ICEfaces使用长轮询的方法来模拟服务器推技术。

使用ICEfaces的网站有波音,美国航空航天局,联合太平洋公司,T - Mobile,以及美国银行。

Adobe Flash Builder 4
    
Flash已经出现了很长一段时间,但是用使用Flash来构建整个网络应用十分麻烦,直到Flex的引进,这是Flash的一个扩展,提供RIA网络组件。

Adobe Flash Builder 4最令人兴奋的是它的跨平台和跨浏览器特性,允许程序在所有的操作系统和所有的浏览器上以同样的方式运行。相比于JavaScript,浏览器有不同的 JavaScript引擎管理和处理的代码,而Adobe的Flash只有一个引擎,用户通过Adobe Flash浏览器插件来安装(通常的情况是他们有了)。

     

Flash Builder 4 应用之所以能如此,因为它们已经嵌入到HTML页面,这意味着浏览器本身并没有对应用程序的性能有什么影响。这意味着你如果你乐意, 你还可以在IE6上运行最复杂的网络应用程序。(这当然简单,因为Flash插件/引擎经常会更新,因此只是稍微依赖于用户插件的版本)。

这些应用通常是伴随着服务器端处理,比如一个Java后端处理,而且需要Flash Builder 4IDE做开发。

如果你的团队主要是Java开发(因为搭配Java运作良好),或者你的应用程序使用事件驱动的构架,可以选择Adobe Flash Builder 4。

使用Flash作为网络应用程序的网站有Mint.com,Flickr和Hyundai。

Silverlight
             
Silverlight是基本上微软版本的Adobe Flex /的Adobe Flash。现在已获得了一些吸引力,但似乎并没有达到的Adobe Flash的普及程度。

Silverlight应用程序明显约束于.NET的后端,因为它是微软的产品。这意味着,你不得不 Silverlight /.NET 和Adobe Flex / [一些服务器端脚本,如PHP] 之间整合考虑。

 如果你的网络应用需要复杂的图形,或者如果你的团队主要是.NET开发人员,又或者如果你的应用程序使用事件驱动的架构,那你可以选择Silverlight。

使用Silverlight的网站,如Netflix。

HTML5
    
HTML5的是RIA运动中的最新发展。 HTML5,在本质上是HTML4,JavaScript,CSS,Javascript代码库以及Falsh的最优合并,利用API模型成为一个单一规 范。 HTML5的是一个开放的技术,这意味着不会有单一的主管团体如Flash的Adobe或Silverlight的微软。

由于HTML5规范还没有完成,IE9尚未发布,要建立产品级的网络应用,你还需要等待一点点时间。

目前,所有主要浏览器除了IE8都支持HTML5。由于IE8的浏览器市场占据了主要部分,在IE9发布之前,HTML5实在难以成为主流。

一旦HTML5得到广泛支持,如果你不想购买和学习的IDE(像Flex和Silverlight框架所必需的),如果你的应用程序使用事件驱动架构,或 者如果你喜欢使用内置的HTML功能和JavaScript API 功能而不是使用第三方JavaScript库,那么使用HTML是很好的选择。

尽管HTML5中可以很好地处理图形,但是使用Flash和Silverlight来处理复杂图形和动画在目前仍然容易/更快的选择。

RIA 的未来

 
HTML5应用程序是互联网的未来吗?不完全是。只要那些创造性和创新性的网络开发人员还在不断的去创造一些特别的东西,就会总是出现一些新技术可以造出些HTML5或其他任何网络技术无法完成的神奇的东西。

 JavaScript库,ICEfaces,Flash,Silverlight和HTML5的存在首要原因是其创造力和创新性。未来的网络将会由许多共存的技术组成,就像现在。

来源:sixrevisions.com


编译: MazingTech

  • 大小: 18.8 KB
  • 大小: 29.6 KB
  • 大小: 24.7 KB
2
1
评论 共 5 条 请登录后发表评论
5 楼 wei1224hf 2011-03-23 21:37
为啥没有 DOJO 和 HTMLX 这两个 JS RIA
4 楼 s9999 2010-08-18 16:51
这篇文章 是啥时候的?
3 楼 Tracyer 2010-07-28 18:53
mblmh2008 写道
qiaoqinqie 写道
为什么没有java fx

javafx不是针对cs编程的吗?

晕,我再好看看吧.javafx是sun新一代的UI技术,可以构建军CS和BS的UI
2 楼 mblmh2008 2010-07-28 10:35
qiaoqinqie 写道
为什么没有java fx

javafx不是针对cs编程的吗?
1 楼 qiaoqinqie 2010-07-27 22:33
为什么没有java fx

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 使用Custom Control自定义控件

    使用Custom Control自定义控件 使用Custom Control自定义控件 使用Custom Control自定义控件

  • C++ builder 自定义控件

    在我们开发过程因为软件的需要 很多的系统控件满足不了我们的需求,这个时候就需要我们通过自定义的控件来完成任务 一 自定义控件: 1 新建一个包 File->New->Package 2 再包中点击右键 Add New->Other->C++ builder files 选择Component 如下图所示 3 点击ok ,选择继承的类 4 下一步  其中 cl

  • C++ builder XE 关于文件路径的创建源码

    #include <Filectrl.hpp> void __fastcall TForm1::Button1Click(TObject *Sender) { //这个路径是否存在 if (!DirectoryExists("c:\\myfile")) { if (!CreateDir("C:\\myfile")) throw Exception("不能创建文件."); }//如果创建失败 if (!CreateDir("C:\\myf...

  • 找到几篇有关delphi vcl消息机制的文章,收藏先~

    ====================================================== 注:本文源代码点此下载 ====================================================== 由vcl中的代码理解vcl中的消息处理机制 (drawwingmap ) delphi,一个非常优秀的开发工具,拥有强大的可视化开发环境、面向

  • C++ Builder写的工作日志管理软件及源码

    C++ Builder写的工作日志管理软件及源码,使用MSSQL数据库。 还原数据库修改INI配置文件即可运行。

  • C++ 实现简易 log 日志库

    DEBUG(调试):DEBUG级别的日志用于记录应用程序的调试信息,例如变量的值、函数的执行路径等。TRACE(跟踪):这是最详细的日志级别,通常用于记录应用程序中最细微的操作和事件,以帮助调试和追踪问题。FATAL(致命): FATAL级别的日志用于记录严重的错误,通常表示应用程序遇到了无法继续运行的情况,可能会导致应用程序崩溃。WARN(警告):WARNING级别的日志用于记录警告信息,例如潜在的问题或不正常的情况,但不会导致应用程序终止。由此可见log日志在系统中的重要地位和存在的必要性。

  • c++ 多线程写日志的一个很实用的日志类源码(支持 c++ builder)

    1.日志基类 .h文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 //-------------------------------...

  • C++builder 写入日志功能,调试用!

    String ExePath;//路径 ExePath=ExtractFilePath(Application->ExeName);//当前目录 ExePath=ExtractFilePath(ExcludeTrailingPathDelimiter(GetCurrentDir()));//EXE程序的上一级目录地址 WriteLog();//使用 .h void __fastcall Wr

  • C++builder的文件读写操作总结(1)

    在编程的过程中,文件的操作是一个经常用到的问题,在C++Builder中,可以使用多种方法对文件操作,下面我就按以下几个部分对此作详细介绍,就是:   1、基于C的文件操作;   2、基于C++的文件操作;   3、基于WINAPI的文件操作;   4、基于BCB库的文件操作;   5、特殊文件的操作。   1. 基于C的文件操作   在ANSI C中,对

  • visual C++实现动态库运用debugview输出日志1:将调试信息运行时发送至DebugView

    本文讲解**.h,该文件可以将调试信息运行时发送到debugview中, 下面是该文件的源代码: #pragma once // 本类可以将调试信息运行时发送至DebugView // 引用至 https://www.codeproject.com/Articles/1053/Using-an-output-stream-for-debugging // Dxw 2017-04-03 #...

  • C++builder继承TGraphicControl类

    继承TGraphicControl类产生一个新画布,画面可以自绘保持功能。相当于

  • 如何实现Custom Control?如何进行可视化开发?

    这里,我们要回答smithfox在winx论坛上提的第一个问题: 在WINX内,怎么写一个Custom Control,也就是说自己实现Paint的Control。其实,winx不只是可以实现自定义控件,而且允许你将这些控件直接放到对话框中,就如你放置一个Static、Button、Edit等等标准控件一样。winx的tutorials中有专门的demo告诉你如何作到这一点。虽然目前没有专门针

  • C++实现一个简洁而又强大的日志记录类

    代码执行时记录日志是很有必要的,尤其在涉及到多进程、多线程调试或者是调试服务程序时。本分分享一个最近写的简单的日志类,希望有所帮助。不喜欢废话,上代码了: 头文件如下: #pragma once #include <string> using std::string; using std::wstring; class CSimpleLog { public: CSimple...

Global site tag (gtag.js) - Google Analytics