.NET笔记5:正在崛起的、前途光明的RIA

来源:互联网 发布:煤矿系统故障模拟软件 编辑:程序博客网 时间:2024/05/07 19:18

 

什么是RIA?

RIA(Rich Internet Applications)富互联网应用 AAs,具有高度互动性、丰富用户体验以及功能强大的客户端。

    “丰富型互联网应用程序系统”一词源于Macromedia公司在2002年3月发表的一份白皮书,尽管如此,该词在更早的年代中就已包含以下含义:

  • 远程脚本(由微软于1998年左右提出)
  • X Internet(由Forrester Research于2000年10月提出)
  • 富(网页)客户端
  • 富网络应用

    传统的网络应用程序将所有交互应用都集中在基于“瘦”客户端的B/S架构上。在这样的系统中,所有处理操作均在服务器端执行,客户端仅仅是用于显示静态的信息内容(如HTML)。这种系统最大的缺陷是所有的交互操作都必须经由服务器端进行,首先客户端要将请求数据上传至服务器端,然后服务器端作出响应并传回结果,最后客户端在重载响应信息。而通过使用在客户端执行指令的客户端技术,RIA可以有效的避免延时,实现程序与用户操作的同步。这种差异有点类似于“终端与主机”或C/S结构与“胖”应用系统的差异。

    随着时间的迁移,互联网标准正在逐渐地改变着,从而以适应这种新技术,所以也就很难为丰富型互联网应用程序划定出一个明确的概念范围。但是,所有的丰富型互联网应用程序都有一个相同的特征:它们在客户端与服务器端之间引入了通常被叫做“客户端引擎”的中间代码层。这种客户端引擎通常作为应用初始化的一部分被下载,也可能随着应用的运行在后续代码中作为补丁被下载并补充进来。客户端引擎充当浏览器的一个扩展,而且通常还会接管呈现用户界面和与服务器端进行通信的职责。

    丰富型互联网应用程序的功能可能会受客户端操作系统性能的限制。但是,在大多数情况下,客户端引擎会按设计者的意愿执行某些编辑好的功能,从而提升用户界面某些方面或在一定程度上改进用户界面的运算速率。而且增加一个客户端引擎也不会导致任何应用脱离原有浏览器与服务器端之间的同步交互模式,其实大多数丰富型互联网应用程序中,客户端引擎在原基础上与服务器端进行的是异步通信。

RIA的优势

RIA 具有的桌面应用程序的特点包括:在消息确认和格式编排方面提供互动用户界面;在无刷新页面之下提供快捷的界面响应时间;提供通用的用户界面特性如拖放式(drag and drop)以及在线和离线操作能力。RIA具有的Web应用程序的特点包括如:立即部署、跨平台、采用逐步下载来检索内容和数据以及可以充分利用被广泛采纳的互联网标准。RIA具有通信的特点则包括实时互动的声音和图像。

客户机在RIA中的作用不仅是展示页面,它可以在幕后与用户请求异步地进行计算、传送和检索数据、显示集成的用户界面和综合使用声音和图像,这一切都可以在不依靠客户机连接的服务器或后端的情况下进行。

对于企业来说,部署RIA的好处在于:

1)RIA可以继续使用现有的应用程序模型(包括J2EE和.NET),因而无需大规模替换现有的Web应用程序。通过Rich Client技术,可以轻松构建更为直观、易于使用、反应更迅速并且可以脱机使用的应用程序。

2)RIA可以帮助企业提供多元化的重要业务效益,包括提高销量、提高品牌忠诚度、延长网站逗留时间、较频繁的重复访问、减少带宽成本、减少支持求助以及增强客户关系等。

 

发展态势

在过去的两到三年中,Web开发人员一直是想构建一种比传统HTML更丰富的客户端:这是一个用户接口,它比用HTML能实现的接口更加健壮、反应更加灵敏和更具有令人感兴趣的可视化特性。RIA技术的出现允许我们在因特网上以一种像使用Web一样简单的方式来部署富客户端程序。无论将来RIA是否能够如人们所猜测的那样完全代替HTML应用系统,对于那些采用C/S架构的胖客户端技术运行复杂应用系统的机构和采用基于B/S架构的瘦客户端技术部署Web应用系统地机构来说,RIA确实提供了一种廉价的选择。下面介绍一下目前出现的几种比较有实力或者有特点的RIA客户端开发技术:

1) Macromedia Flash/Flex

Flash 从6.0开始Flash就逐步具备建立窗体风格的应用程序的功能。据Macromedia称已经有98%以上的桌面系统的浏览器都安装了 Macromedia Flash Player。这使得以Macromedia Flash Player为客户端的RIA可以支持种类广泛的平台和设备。

Flex是为满足希望开发 RIA的企业级程序员的需求而推出的表示服务器和应用程序框架,它可以运行于J2EE和.NET平台。Flex表示服务器提供基于标准的、声明性的编程方法和流程,并提供运行时服务,用于开发和部署丰富客户端应用程序的表示层。Flex开发者使用直观的基于XML的MXML来定义丰富的用户界面。该语言由 Flex服务器翻译成SWF格式的客户端应用程序,在Flash Player中运行。

2) Laszlo

Laszlo 是一个开源的RIA开发环境。使用Laszlo平台时,开发者只需编写名为LZX的描述语言(其中整合了XML和Javascript),运行在J2EE 应用服务器上的Laszlo平台会将其编译成SWF格式的文件并传输给客户端展示。从这点上来说,Laszlo的本质和Flex是一样的。Flash是任何浏览器都支持的展示形式,从而一举解决了浏览器之间的移植问题。而且,在未来的计划中,Laszlo还可以将LZX编译成Java或.NET本地代码,从而大大提高运行效率。

3) Avalon

    Microsoft的Avalon是下一版本的 Windows(代号"Longhorn")的一部分,是一个图形和展示引擎,主要由新加到.NET框架中的一组类集合而成。Avalon定义了一个在 Longhorn中使用的新标记语言,其代号为"XAML"(可扩展应用程序标记语言)。可以使用XAML来定义文本、图像和控件的布局,程序代码可以直接嵌入到XAML中,也可以将它保留在一个单独的文件内。这与Flex中的MXML或者Laszlo中的LZX非常相似。不同的是:基于 Avalon的应用程序必须运行在Longhorn环境中,而Flex和Laszlo是不依赖于平台的,仅仅需要装有Flash播放器的浏览器即可。

4) Java SWT

Java 已经出现几年了,并且完全支持创建基于窗体的用户界面。除了Java基础类(JFC/Swing)中的用户界面组件之外,开发人员还可以使用来自于 Eclipse Project的SWT工具箱和许多第三方工具箱进行开发。对于图形来说,可以采用Java 2D API:一个非常完整且非常复杂的图形API。你可以通过一个Web浏览器使用Java插件软件,或使用Java运行时环境中较新的Java Web Start技术来部署应用程序。使用Java建立Rich Client的主要缺陷是它的复杂性(即使对简单的窗体和图形也要求编写非常烦琐的代码)和Java浏览器插件的低市场占有率。

5) XUL

XUL (念作"zool")是一种基于XML的用户界面语言,它来自于Mozilla的开放源码项目。它可用于建立窗体应用程序,这些应用程序不但可以在 Mozilla浏览器上运行,而且也可以运行在其他描述引擎上,如Zulu(一个Flash MX组件)和Thinleys(一个Java实现)。XUL描述引擎都非常小(100K以下),它可以使用XML数据也可以生成XML数据。XUL的一个主要缺点在于它目前还没有获得一个主要商业实体的支持。XUL最大的优点在于它与Gecko引擎的集成(打开了通向大量Web标准的大门),以及与大多数其它XML用户界面描述语言相比它是一种非常具有表达力和简洁的语言。

6) Bindows

Bindow 是用Javascript和DHTML开发的Web窗体框架。Javascript用于客户端界面的显示和处理,XML HTTP用于客户端与服务器的信息传输。Javascript在客户端的表现力不容置疑,利用Javascript几乎可以实现Windows应用程序所能干的大部分事情,XMLHTTP 一直以来常被用于实现"无刷新"的Web页面,它和 Javascript配合,可以完成数据从服务器和客户端的传输。Bindows的一个主要的缺点是它采用一次全部载入的方式来实现脚本库,在窗口的加载期,需要一个漫长的等待过程,甚至浏览器的进程会产生无响应的情况。这点Bindows根本没有遵循"用多少去多少"的准则。另外,内部大量利用了IE6 的技术,没有考虑到非IE的浏览器,限制了Bindows的流行。

7)JavaFX

2008年12月05日 Sun微系统公司今天正式发布了基于Java语言的平台JavaFX 1。0,这个平台建立在其广泛应用的Java编程语言的基础上,旨在建立大量可在电脑和手机上运行的网络程序。 Java一直以来就是编程语言,但是随着JavaFX的发布,Sun公司开始允许将编程内容创新这一任务转移到以设计艺术为重点而非编程科学为重点的设计人员身上。

“我们的目标群体是叫做创造者的人群”,Sun公司Java平台组的高级副主任 OctavianTanase对 InternetNews.com说,“随着1.0版的发布,我们将目标锁定在网页开发人员,这群可能拓展Java界面体验的人。到2011年,主要的目标是大量使用诸如Adobe系统等设计工具的设计人员”。

当然,通向这个以设计为导向的工具还需要一些时间。Sun公司最后打算提供自己的程序给设计人员来建立RIAS,但是直到如今,这些设计人员还得使用程序员所使用的Netbeans或Eclipse集成开发环境(IDE)。新工具将在来年夏天面市。

8)Curl

Curl诞生于1995年的美国,Curl是由美国国防部高级研究项目代理资助,马萨诸塞州科技学院的David A. Kranz开发的Web开发语言, HTML语言的创建者Tim Berners-Lee也参与其中,并扮演了重要的角色。

该语言的目标是用一种统一的面向对象的语言代替HTML、Cascading Style Sheets、JavaScript等;仅使用Curl便可开发出Web应用的各种软件;Curl程序在浏览器中运行,并且因为它以类似JRE的形式提供了客户端运行环境Surge RTE,能够轻松开发出日益流行的Rich Client应用程序。

Curl是为了实现富客户端(rich client)应运而生的Web开发语言, 仅仅从其外观的丰富性上就能体现其富客户端理念。

为了实现真正有益的富客户端,它能有效地实现各种复杂处理,具备提供高信赖、高扩展性、高维护性的应用程序所应拥有的各种编码能力。其拥有在Web环境上便利的分配、管理以及低廉的维护费以及在C/S环境上的用户便利性、迅速的应答,华丽的图像显示等重多优点于一身。

Curl语言于2002年在美国正式开始商业化,在美国和日本拥有重多的客户和合作伙伴,现已进军北美及韩国市场,发展势头迅猛。

9)SilverLight

微软在Mix07上发布一些重大通告,其中最值得关注的就是SilverLight的发布,SilverLight的前身就是WPF/E技术。

这是一种新的Web 呈现技术的名称,创建该技术的目的是使其能够在各种平台上运行。该技术支持创建丰富的、具有绚丽视觉效果的交互式体验,并且可以随处实现:无论是在浏览器内、在多个设备上还是在桌面操作系统(如 Apple Macintosh)中。可扩展应用程序标记语言 (XAML) 遵循 Windows 演示基础 (WPF),前者是”WPF/E”呈现功能的基础。XAML 是 Microsoft .NET Framework 3.0(Windows 编程基础结构)中的呈现技术。

参考地址

  • Adobe Flex
  • Adobe AIR
  • Ajax - Programming
  • Ajax Frameworks
  • Appcelerator
  • Backbase Enterprise Ajax
  • Bindows Ajax Framework
  • Canoo UltraLightClient
  • Comet or server push
  • Curl
  • Dojo Toolkit
  • Echo
  • Ext JS
  • Google Gears
  • Google Web Toolkit
  • IBM Blue Spruce
  • ICEfaces
  • IT Mill Toolkit
  • Java
  • JavaFX
  • jZeno
  • Lobo RIA Platform
  • Microsoft Silverlight
  • Morfik
  • Moonlight
  • Nexaweb
  • Omnis
  • OpenLaszlo
  • REBOL
  • Remote XUL
  • Remote Scripting
  • Seaside for Smalltalk
  • Single Page Application
  • User Interface Description Language (UIDL)
  • Web Application Framework
  • Web desktop
  • Windows Presentation Foundation
  • Xoetrope XUI
  • ZK Framework

外部链接

  • The W3C Rich Web Clients Activity
  • Macromedia March 2002 requirements for Rich Internet Applications:(500K PDF or HTML abstract)
  • October 2000 Forrester Opinion Piece on what they then called the "X Internet".
  • Diploma Thesis: RIA - A Convergence of User Interface Paradigms of Web and Desktop, 2008(Diploma Thesis as PDF)
  • RIA Knowledge Center,sponsored by Curl, Inc.,provides some resources including a free Forrester report
  • Kenshin's RIA Blog

不管我们今天称之为的RIA今后会不会成为主流应用程序,人们对开发具有高度互动性、丰富用户体验以及功能强大的客户端的追求是不变的。有理由相信,拥有成熟技术和极高市场占有率的Flash客户端将会在RIA道路上越走越远。Microsoft能否后来者居上让我们拭目以待。