65.9K
CodeProject 正在变化。 阅读更多。
Home

企业 RIA 开发:比较 Flex/Flash、Silverlight、HTML5/CSS3、jQuery/JavaScript

starIconstarIconstarIconstarIconemptyStarIcon

4.00/5 (7投票s)

2011年5月19日

CPOL

12分钟阅读

viewsIcon

74805

一篇比较 Flex/Flash、Silverlight、HTML5/CSS3、jQuery/JavaScript 在企业 RIA 开发中的应用的博文。

摘要

如今,富互联网应用 (RIA) 的技术生态系统比以往任何时候都更加丰富。可用技术已经成熟,并且有许多在各项技术上构建的优质企业应用的实例。了解每个平台的优缺点有助于确定哪种技术最适合您组织的某个项目。由于移动空间的出现,这一决策变得日益复杂。企业不再仅仅需要为其基于浏览器的应用程序确定方向,还需要考虑这一决策如何影响其跨多个平台的移动策略。凭借新增的移动支持以及企业级工具和服务器连接性,Flash 平台被证明是企业的有力选择。

文章

企业 RIA 开发:比较 Flex/Flash、Silverlight、HTML5/CSS3、jQuery/JavaScript

David Tucker
技术架构师,Universal Mind

富互联网应用 (RIA) 的技术生态系统极其广泛,为其提供支持的解决方案已经日趋成熟。此外,企业应用已经从简单的图表和数据网格扩展开来。鉴于企业每天都在努力确定满足其需求的技术平台,因此分析这四个主要竞争者并确定哪个最适合作为真正的企业 RIA 平台是很有意义的。

企业需求

在进行平台分析之前,重要的是停下来考虑在企业中真正重要的因素。大型企业组织与初创公司、代理机构和小企业截然不同。它们关心的问题包括:

  • 可测试性——是否存在工具可以帮助开发人员和质量保证团队对平台执行单元测试、功能测试和集成测试?
  • 可聘用性——市场上是否有足够多的开发人员来满足当前和未来产品在该平台上的需求?
  • 支持——是否有组织(及其相关工具)为平台提供企业级支持?
  • 集成——该平台是否易于与组织现有的后端架构集成?
  • 成本——该平台的总拥有成本 (TCO) 是多少?
  • 覆盖范围——我的客户可以在哪里获得此解决方案?

平台生态系统分析

在了解了企业需求之后,我们就可以开始分析当今可用的 RIA 平台了。在此次分析中,出现了四个主要竞争者:Adobe 的Flash 平台(Flash 和 Flex)、Microsoft Silverlight、HTML5/CSS3 以及传统的 Ajax 应用程序。这四种解决方案支撑着当今绝大多数 RIA。

Flash 平台 (Flash/Flex)

Flash 平台包含多种开发工具和运行时。内容可以通过 Adobe Flash Professional 或 Adobe Flash Builder 进行开发。创建内容后,它可以在浏览器中使用 Adobe Flash Player 查看,或使用 Adobe AIR 作为桌面应用程序进行部署。还有许多选项可以将 Flash 内容部署到移动设备(本文稍后将对此进行更详细的介绍)。Flash 平台拥有许多流行的 RIA,包括 Hulu、SlideRocket、Aviary 和 Creately。

优点

使用 Flash 平台的一个主要好处是其覆盖范围。Flash Player 目前安装在世界上几乎所有计算机上。根据 Adobe Flash Player 普及率统计,在成熟市场中,99% 的计算机安装了 Flash Player 10 或更高版本。此外,通过 Flash Builder 4.5,Flex 开发人员的工具得到了极大的改进。生产力增强和移动功能使该工具与大多数开发环境相媲美。此外,Flash 平台开发人员的数量也在持续增长。

Flash 平台最近通过展示 SDK 新版本支持以接近原生性能的 Flex 应用程序部署到 iOS 设备,平息了许多批评。在这篇文章中,Adobe evangelist Christophe Coenraets 展示了一个部署到 iPad、iPod Touch 和基于 Android 的三星 Galaxy Tab 上的 Flex 应用程序。该应用程序还使用了 Adobe 的 LiveCycle Collaboration Service。这说明了 Flash 平台在移动设备上的另一个优势。开发人员可以利用现有的库和服务来构建他们的应用程序。

  Android 浏览器 Android 应用 iOS 浏览器 iOS 应用 Playbook 浏览器 Playbook 应用 WP 7 浏览器 WP 7 应用
HTML5 check.png check.png check.png check.png check.png check.png plus.png plus.png
传统 Ajax check.png check.png check.png check.png check.png check.png plus.png plus.png
Flash 平台 check.png check.png x.png check.png check.png check.png x.png x.png
Silverlight x.png x.png x.png x.png x.png x.png plus.png check.png
图 1 - 移动兼容性

缺点

尽管 Flash 平台覆盖了大部分移动领域,但如图 1 所示,Flash 平台存在两个主要空白。首先,iOS 上的浏览器完全不支持 Flash。其次,Windows Phone 7 上的浏览器和应用程序均不支持 Flash。

Flash 平台的优势正在不断增长,但去年曾出现一些困难——主要是认知问题。2010 年 4 月,史蒂夫·乔布斯发布了他的《关于 Flash 的思考》,这给整个企业 Flash 平台开发社区带来了巨大冲击。此时,许多开发人员开始散布“Flash 已死”的言论,行业中的许多人也加入了这个行列。这导致许多组织转向 HTML5 寻求未来的解决方案。此外,许多开发人员强调了一些高级功能,如多线程,而 Flash Player 却明显缺乏这些功能。不过,值得指出的是,这些并非固有的技术缺陷,而是认知问题,其中许多是由苹果不愿意在其移动设备上提供原生 Flash 支持所致。

Silverlight

Microsoft Silverlight 是另一种基于插件的解决方案(类似于 Flash Player),它基于 .NET 框架的一个子集。Silverlight 应用程序可以在安装了 Silverlight 插件的 Mac 和 PC 桌面上的浏览器中查看。Silverlight 还可以将这些浏览器应用程序安装为沙盒桌面应用程序。虽然 Silverlight 拥有 Flash Player 的许多功能,但在媒体应用程序方面却找到了一个“甜点”。Silverlight 目前支持在线 Netflix 播放器和许多在线直播活动的流媒体播放。

优点

对于那些已投资于 .NET 平台的组织来说,Silverlight 是一个自然的选择。Silverlight 是 Windows Presentation Foundation (WPF) 的一个子集,因此许多使用 WPF 开发过桌面应用程序的开发人员在 Silverlight 中会感到很自在。此外,自版本 2 起,Silverlight 就包含了一个实现通用语言运行时 (CLR) 的 .NET 框架版本。这使得开发人员除了使用 XAML(定义用户界面的声明性标记语言)之外,还可以使用他们最熟悉的任何 .NET 语言来编写 Silverlight 应用程序。此外,开发人员还可以使用 Microsoft 成熟的工具集,包括 Visual Studio 和 Expression Suite 应用程序,其中包含集成的测试工具。

Silverlight 自问世以来已经成熟,现在提供了 Flash Player 的大多数功能。一项超越 Flash Player 的功能是其原始 AV 管道,它允许开发人员使用自己的自定义编解码器处理 Silverlight。这使得 Silverlight 成为 Netflix 等公司的首选播放器。

缺点

目前 Silverlight 面临的最大威胁是微软。在微软 2010 年的专业开发人员会议 (PDC) 上,服务器和工具业务总裁 Bob Muglia 表示,微软对 Silverlight 的关注点已经转移,它将主要用于 Windows Phone 7 开发。许多人听完这些评论后认为,微软将把更多精力放在 HTML5 用于基于浏览器的解决方案上,而 Silverlight 对于 Web 来说正在衰退。当微软在 Mix 2011 的开幕主题演讲中没有突出 Silverlight,而是选择关注 IE10 和 HTML5 时,这些担忧被重新点燃。

从移动角度来看,Silverlight 的功能非常有限,如图 1 所示。当微软宣布 Silverlight 将成为开发 Windows Phone 7 应用程序的平台时,Silverlight 得到了巨大的推动。然而,Silverlight 的移动支持仅限于此。此外,目前 Windows 7 浏览器甚至不支持完整的 Silverlight。

传统 Ajax (jQuery)

在很多方面,传统的 Ajax[1] 应用程序引发了 RIA 革命。早期,微软的在线版 Outlook(本质上是使用 Ajax 构建的 RIA)具有革命性和进化性。该解决方案绕过了用户所习惯的页面刷新模式。这种技术最初被称为 DHTML,但最终被普遍称为 Ajax。Gmail、Google Docs 和 Apple 的 Me.com 等应用程序都是传统的 Ajax 应用程序。

优点

虽然构建、测试和部署传统的 Ajax 应用程序可能很复杂,但它确实有其优点。首先,不需要插件。只要用户的 JavaScript 已启用,他就可以与应用程序进行交互。此外,强大的框架已经成熟,有助于管理跨浏览器实现的复杂性。其中最著名的框架是 jQuery,它拥有一个蓬勃发展的开发社区。

HTML4/CSS/JavaScript 开发人员数量众多。对于大多数组织来说,为 Ajax 项目配备人员会比较容易。此外,多年来,开发和测试工具也已成熟,并且存在许多开源和商业选项。虽然没有一个组织支持这个平台,但有一些组织可以为企业提供支持。许多商业 JavaScript 框架都提供了此选项。

缺点

传统的 HTML4/CSS/JavaScript 应用程序可能会给企业带来许多麻烦。不同浏览器之间的实现和功能差异很大。这可能导致在应用程序发布前进行正确测试所需的时间爆炸式增长。组织必须选择他们将支持哪些浏览器,然后在每个浏览器和操作系统组合上测试应用程序。

此外,传统的 Ajax 应用程序可能令开发人员头疼。在许多情况下,需要进行“hack”才能使应用程序在多个浏览器上显示一致。

HTML5/CSS3

HTML5 和 CSS3 是 Web 标准进程的产品,该进程正在努力定义一套功能,在未来几年内将在所有浏览器中统一。HTML5 提供了许多以前只有插件解决方案才能实现的功能,例如视频/音频播放、本地存储、拖放功能和地理定位。CSS3 是下一代 CSS 的标准,包括动画、高级布局支持和新型选择器等功能。与 HTML5 类似,CSS3 可以细分为功能模块,这些模块可以在整个规范完成之前提供给浏览器。HTML5/CSS3 支持 LucidChart、SketchPad 以及 [2] 等 RIA。

优点

如图 2 所示,移动领域的前景更加光明。当我们查看 HTML5 和 CSS3 的一些核心功能时,除了一个案例之外,移动浏览器上的用户访问百分比远高于桌面浏览器。此外,Sencha Touch 等强大框架的可用性专门针对移动领域。当与 PhoneGap(一个用于使用 JavaScript、HTML 和 CSS 构建移动应用程序的开发框架)等解决方案结合使用时,开发人员可以创建浏览器和应用程序解决方案。简而言之,HTML5 是具有最广泛移动支持的平台。几乎所有平台都支持许多 HTML5 功能(Windows Phone 7 已计划很快支持 HTML5)。

通过采用 HTML5,组织有可能降低其总拥有成本。虽然会有针对特定平台的实现,但很大一部分代码可以从浏览器实现与不同移动实现的代码重用。此外,开发人员可以使用他们一直用于 HTML4/JavaScript 开发的相同工具。

image001.png

图 2 - HTML5 桌面与移动端[3]

 

缺点

HTML5/CSS3 的主要致命弱点在于用户浏览器中的功能可用性。HTML5 标准中记录的许多功能在大多数桌面浏览器中尚未实现。即使在已实现的地方,其实现方式也尚未统一。说实话,要实现某个功能的一致性,Apple、Google、Microsoft 和 Mozilla 都必须达成一致。这导致了许多争论,包括关于视频编解码器的激烈辩论,至今仍未有定论。

对于企业来说,还有其他顾虑。虽然熟练掌握 HTML5/CSS3 的开发人员数量在增长,但大多数开发人员仍然不熟悉该平台。一些传统的测试工具尚未能够测试利用 Canvas 等新的 HTML5 功能的应用程序。最后,企业必须应对较新的 HTML5 功能的缓慢推出,同时等待 Web 标准进程和浏览器供应商实现其流程。

结论

虽然每个企业和每个项目都有自己的需求,但任何企业了解选择 RIA 平台的影响都非常重要。了解项目的需求和可用的平台选项绝对至关重要,尤其是在近期存在大量错误信息的情况下。

在考察了每个平台的优缺点以及企业需求之后,一个解决方案似乎脱颖而出。让我们来分析一下重点。

  • Silverlight 在移动领域的覆盖范围非常有限。虽然它可能拥有所有平台中最出色的工具,但其不确定的未来使其成为企业的风险,特别是考虑到企业应用程序的生命周期要比其他应用程序长得多。
  • Ajax 应用程序在跨浏览器兼容性和测试方面会带来大量问题。
  • HTML5 必将成为未来的重要组成部分。目前,由于浏览器实现的不一致性,它无法成为桌面浏览器应用程序的严肃竞争者。如果桌面浏览器赶上移动浏览器,任何平台都很难与 HTML5 竞争。
  • Flash 平台因其在桌面和移动领域的覆盖范围而成为企业的最佳选择。此外,还有各种各样的服务、服务器和库可以与大多数现有企业架构良好集成。

[1] Ajax 最初指“Asynchronous JavaScript and XML”,但后来该术语扩展到指任何允许页面与外部资源通信而无需页面刷新的 JavaScript 实现。
[2] Netflix iOS 应用程序不使用 HTML5 视频支持。相反,他们使用自己的自定义播放/DRM 解决方案。
[3] 此数据来自 SiteCatalyst Net Averages,现属 Adobe 所有。

© . All rights reserved.