HTML 5 or Silverlight?

2011 年 9 月 26 日

阿尔伯特•爱因斯坦在处于罕见的消沉时期时曾经说过,手段的完善和目标的混乱似乎刻画了这个时代。有人可能认为此话出自软件开发者之口,而非物理学家之口。

开发平台持续演变和改进,这常常导致我们只见树木不见森林。从正在进行的关于 Microsoft Silverlight 和 HTML5 的争论中就能够看到这种困惑。

有人认为由于 HTML5 持续增长的势头,微软将会放弃 Silverlight。但这似乎不太可能。尽管微软对于 Silverlight 的战略已经转变,不再吹捧将 Silverlight 作为提供跨平台运行时的承载工具,但是微软在继续推动 Silverlight 成为 Windows Phone 以及一些媒体和业务线(line-of-business)应用程序的开发平台。Silverlight 并未消失。事实上,最终形式的 Silverlight 5 将于今年推出,而且那些用于维持微软传奇的工具也将证实这个观点。

虽然 HTML5 标准仍处于草案阶段,但是它在将来肯定会成为主导的跨平台解决方案,甚至连微软也承认,称HTML 是“唯一适用于所有应用的、真正的跨平台解决方案。”

基本上,Silverlight 和HTML5 都有各自的位置和用途,我们可以对两种工具之间的相似性和差异进行仔细观察,这样就会找到答案。

表面的相似性

乍看上去,在许多方面HTML5 和Silverlight 都很相似。此类相似性与易于部署、丰富的用户界面、以及交互模型等联系在一起。

桌面程序担忧的问题之一是部署,特别是那些工作在Windows 环境下的Windows 开发者尤为关注。部署对于那些工作在中大型企业的人们来说也是一个问题。桌面应用程序的部署足迹对于他们而言是相当麻烦的,因为他们必须确保某个确定版本的运行库可以正常工作,而且他们必须将更新安装到每台机器上。因此部署对于功能丰富的桌面应用程序而言已成为痛点。

在某些情况下,因为业务原因,企业还将坚持使用桌面应用程序,它们具有更好的性能,并且能够更好地利用本地硬件——只是以更加简单、无缝的方式来做事。此外,对于桌面程序平台的开发场景而言,有着杰出程序员的知识积累。这些原因能够胜过对于简单部署的需求。

对于那些将部署置于核心优先级位置上的客户而言,完全的Web 解决方案可能更可取,尽管所交付的丰富功能相对于在桌面应用程序中等同的功能而言还不能让所有客户感到满意。虽然我们正在寻找替代解决方案,但是必须平衡此类问题。

一般情况下,Adobe Air 和Silverlight 都是不错的解决方案。在微软的工具库中,Silverlight 是_ 非常_ 好的解决方案,因为尽管存在运行库,但是在构造之初就考虑到无缝部署,而且便于用户更新。基本上,微软很注重更新体验。你不必为将应用程序下载到最终用户的机器上而担心。

HTML5 提供了类似的部署方案;然而由于它依赖浏览器,因此存在一些隐藏的陷阱。使用 HTML5 解决方案的团队必须可以相当肯定,他们的客户可以访问并安装最新版本的浏览器。此外,HTML5 有着广泛的浏览器支持:IE9、Chrome 以及 Firefox;在IE10 上HTML 5 会更有效地工作。未来所有的移动客户端都会支持HTML5,尽管现在它们还不支持。

简而言之,虽然Silverlight 和HTML5 之间存在细微的部署差异,但是二者的部署模型基本上是无缝的。

就用户界面(UI)的丰富程度而言,Silverlight 则具备一些优势。如果是为了更快地完成丰富的用户界面,那么Silverlight 可能是更好的解决方案。不过,HTML5 在这方面正迎头赶上Silverlight。用不了不久,HTML5 就将拥有更多预先封装的内容,从而使我们可以更便捷地构建丰富的用户界面环境。

这两款工具在交互模型方面也是类似的。二者都不要求用户等待页面刷新,而且二者的使用方式都与桌面应用程序类似。

更仔细地研究

更仔细地研究一下,我们就会发现,HTML5 和Silverlight 之间强烈的功能相似性正在趋于消退。首先,与真正基于Web 的部署比较而言,Silverlight 更适合于拥有部署环境相对控制权的企业内部网应用程序。

如果你更深入地了解Silverlight 的部署方案,那么你会发现Silverlight 还不是真正的最终用户解决方案。因此,如果开发者的目的是让应用程序的用户下载Silverlight 并在用户的机器上运行Silverlight 的话,那么开发者需要知道对于客户的清晰描述。客户是否将拥有可以运行Silverlight 的系统?某些操作是否被允许?

例如,如果用户访问Amazon.com 的时候,弹出了下载Silverlight 客户端程序的提示,这可能并不是良好的体验。对于网站使用者而言,无缝体验越多越好。

然而,对于企业内部网解决方案的情况——开发者对于机器拥有更多控制权,并且知道都是装有Windows 操作系统的机器——尽管开发者可能并不需要对桌面应用程序拥有相当程度的控制权,但是他们知道那些机器有能力运行Silverlight。这就为开发者提供了极大的灵活性。

现在我们可以选择追随Silverlight;当与HTML5 比较时,Silverlight 无疑是一种更富生产力的开发体验。

微软有些能够让创建和部署Silverlight 应用程序更轻松的优秀工具。虽然Silverlight 更有条理——相关工具位于他们自己的分类之下,而HTML5 还需要多做一些工作。如果你确信你对自己的部署环境比较熟悉的话,或许你可以对那些关系亲密的客户这样说,“这些是最低要求。”;那么Silverlight 则更适合。而且将进一步得到高质量Silverlight 工具的支持,那些工具使开发者能以一种快速拖拽的方式来创建Silverlight 应用程序。通过使用内建的控制抽象模型以及微软已经提供的本地控件,Silverlight 还使用户界面开发和大多数其他开发具有更高的生产力。

HTML5 另一方面需要得到你当前使用的 Web 应用程序开发工具的支持。如果你正在 ASP.NET 环境下开发,那么工具就是 Visual Studio .NET,而 VS 并未提供任何对 HTML5 的工具支持,目前许多开发平台可能也存在着类似情况。

选择 _ 通用语言 _ 还是尽力理解?

编程语言是另一个考虑因素。C#(Silverlight)比 JavaScript(HTML5)更易于使用和调试。回归到工具和语言的本质。JavaScript 使用起来真的是很不一样;即便是经验丰富的 JavaScript 程序员也知道,由于 JavaScript 生来就是过程式的、类型不安全的语言,因此 JavaScript 理解起来确实有点儿困难,然而 C#则是一种面向对象、类型安全的语言。这基本上是说,与 JavaScript 相比,使用 C#可以更好地编写和维护大量代码。

Silverlight 的局限性和其他考虑因素

如果需要移动部署,那么 Silverlight 是有限制的。目前,只有 Windows Phone 支持 Silverlight。其他平台未来可能支持 Silverlight,但是这还不一定。而且在短期内不可能发生任何改变。目前,要想开发移动客户端可使用的 Silverlight 应用程序,那么相应 Windows Phone 设备必须先获得授权才行。

如果开发者无法控制移动客户端,而又希望支持那些设备,那么 HTML5 就是个切实可行的选择。由于 iOS、Android 3 已经支持 HTML5,并且 Windows 承诺在 IE10 下支持 HTML5 ,因此 HTML5 现已成为明确之选。

然而,Silverlight 可以提供比 HTML5 更好的性能。在过去的几个月里,微软实现了针对 Silverlight 5 的硬件解决方案,因此在一些新型号的机器上 Silverlight 5 相对 HTML5 具有轻微的性能优势。但是 HTML5 肯定会在将来赶上来。例如,IE9 对于 HTML5 做了许多改进,因此这个性能差异只是暂时性的,而非决定性的。这算不上多大的差别。

很显然,HTML5 是一种基于标准的环境,这是一些开发者极为关注的事情,而其他人却不大关注。如果是使用微软工具库的开发者,那么他就会理解并欣赏那些标准;然而,通过理解微软将在一段时间后也会遵循这一标准,这种态度会有所缓解,因此他们并不是不愿采用微软的专利技术。

在许多情况下都存在遵循标准的推动力,所以如果情况发生改变,那么迁移路径也很容易。HTML5 是基于标准的,并且随着 HTML5 的到来,它正在被传播到全世界。使用 HTML5 的前途是很光明的——使用 Silverlight 却并非如此。

相对于 HTML5,Silverlight 有一个相当大的优势,即 Silverlight 程序中 90%至 95%的代码可以与桌面应用程序共享。如果你拥有一款成熟的桌面应用程序以及相应的 Web 移植解决方案,那么使用 Silverlight 模型则会更容易实现。

使用 HTML5,开发者可以保持用户界面的独立,并且拥有一个业务层;然而,必须在两个平台上编写大量的用户界面代码,这么做会付出更多精力而且几乎无法共享任何代码。

想个有根据的目的

最后,在选择工具时心中必须有着明确的目的,从而避免爱因斯坦所发现的混乱。选择正确道路是基于人们希望尽可能减小发生重大错误的可能性。例如,开发者可能熟悉 WPF 和 Silverlight,并因此选择了这条道路。但是在对想做的应用程序进行探索后,他们发现可能希望在六个月到一年内推出某种移动客户端。更重要的是,他们想让人们能通过多种设备进行访问。

此时,只要他们准备最终转到 HTML5 或者为每个移动平台编写本地应用程序,即使之前选定了 Silverlight 解决方案也没有关系。如果并非如此,那么这将是一个非常昂贵的选择。

从另一方面来说:由于每个人都在说,“这是未来的趋势。”,那么这可能成为一种追随 HTML5 的推动力;因此,即使客户的所有开发者都拥有 Visual Studio,而且被授权可使用那些最新和最好的微软工具,只要做出了决定,就要坚持朝着确定的方向走下去。

如果他们可以很好地控制部署环境,并且在接来下的六个月内他们将不引入任何 Linux 或 Mac 设备,那么他们也许正在犯下昂贵的错误。当然他们可以追随 Silverlight,这将使他们能够更快地进入市场,也可以更有效地利用他们当前的技能和工具集。

归根结底:只要开发者能做出明智的选择,无论 Silverlight 还是 HTML5 都不错。

应用最佳选择

既然微软必须强烈支持 HTML5,那么现在微软已经无法控制移动市场。他们不再发号施令,而值得怀疑的是如果他们能做到的话,是否会那么做呢。微软的策略是尽可能地应用最好的工具和平台,无论它是否是专有的。

根据微软的声明,“在网络上,Silverlight 的用途从来都不是要替代HTML;它做的是一些HTML(以及其他技术)不能以方便开发者的方式去深入了解的事情。微软仍然致力于使用Silverlight 通过使HTML 尚未涉及的解决方案成为可能来扩展Web。从HTML 页面中简单丰富的数据孤岛,到浏览器中完全类似于桌面程序的应用程序,甚至更强大,Silverlight 使得应用程序可以提供各种用户所需的丰富体验。”

显而易见,在可预见的未来Silverlight 和HTML5 将共同繁荣。

关于作者

Daniel Jebaraj Syncfusion 公司领导产品开发,对于在每个微软平台上的开发者而言,Syncfusion 是一家企业级技术合作伙伴,提供贯穿整个应用程序生命周期,与面向服务方式相结合的最广泛的.NET 组件和控件。

他监督整体产品开发,并为特定版本发布制定计划。通过积极地与客户接洽,Daniel 确保新产品中的每一处改进都基于客户反馈。此前,Daniel 作为开发副总裁,专注于推动 Syncfusion 的产品开发。
在 2001 年加入 Syncfusion 以前,Daniel 在 Rogue Wave 软件公司管理开发团队。

Daniel 拥有克莱姆森大学的工业工程硕士学位。

查看英文原文: HTML 5 or Silverlight?


感谢侯伯薇对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家加入到 InfoQ 中文站用户讨论组中与我们的编辑和其他读者朋友交流。

2011 年 9 月 26 日 00:008797
用户头像

发布了 55 篇内容, 共 15.9 次阅读, 收获喜欢 0 次。

关注

评论

发布
暂无评论
  • 操作系统进场

    从商业价值说,操作系统是刚性需求,核心的流量入口,兵家必争之地。所以,围绕它的核心能力,操作系统必然会不断演化出新形态。

    2019 年 5 月 3 日

  • Silverlight 作为 Web 应用程序技术的角色引发争论

    开发者平台产品管理部经理,Brad Becker博文中表示微软对Silverlight在HTML5的前景持乐观态度。尽管有人不把Silverlight看做真正的Web应用程序工具,而把它当做服务于Web开发市场某一领域的技术。

  • Silverlight 5 的安全性:为局域网而设计

    人们最初认为Silverlight是Flash杀手,但是Flash本身已经被HTML 5所取代。人们还认为它是一种交付跨平台应用程序的方式,但是iOS让这个希望也破灭了。让人奇怪的是,它在人们认为应该是WPF的领域——企业内部业务应用程序——中繁荣起来,而且Silverlight 5中改进的安全性模型也反映了这一点。

  • Silverlight 之重

    上期笔者刚提出<a href="http://www.infoq.com/cn/articles/wl-silverlight-light">Silverlight之轻</a>,本期就要讨论silverlight之重?请大家不要觉得奇怪,架构的轻与重永远都是相对而言,虽然Silverlight相对于传统C/S架构有更加轻型的运行时环境,但相较于Html+JavaScript等传统B/S架构确实具有更加庞大的基础类库支持。Silverlight依靠.Net平台,使用C#高级语言代替JavaScript脚本语言,实现了强大的客户端计算能力、支持多线程,继承了WPF丰富的样式、控件、特效与动画,更可控的浏览器适应性,更安全的沙箱模式,客户端嵌入式数据库等,这就是本期要给大家介绍的重点—Silverlight之重。

  • 重塑“类型思维”

    2019 年 7 月 17 日

  • WordPerfect:字处理软件的新秀

    WordPerfect通过独特的推广和服务方式,成功战胜了Word和WordStar,一举坐上字处理市场的头把交椅。

    2018 年 1 月 19 日

  • 利用 Silverlight、WCF 和 AJAX 开发全新的企业应用

    如果以前Flash是实现浏览器富客户端应用的固定解,那么随着Silverlight的诞生我们有了更多选择,作为一个更纯粹面向XML时代和互联网环境的新平台,Silverlight依托后端.NET和Visual Studio的开发支持,它将会促进开发人员用更对象化的方式实现全新一代的企业应用。

  • WebAssembly 和 Blazor:解决了一个存在十年的老问题

    Blazor可以使用C#构建客户端代码,还允许开发人员在没有插件的情况下在浏览器中运行现有的.NET标准DLL。

  • 微软发布支持.NET 及 Silverligh4 的 Async 包

    微软发布了Microsoft.Bcl.Async的最终版本。该包允许开发者在.NET 4、Silverlight 4和Windows Phone 7.5中使用C# 5和VB 11的异步特性。

  • Silverlight 5 RC 版发布:随着许多新功能的出现微软进一步兑现其承诺

    在BUILD开发者大会即将召开之际,微软发布了Silverlight 5 RC版,这无疑印证了他们对于钟爱的浏览器插件技术所作的承诺。Silverlight 5拥有许多新功能,包括:通过GPU渲染二维和三维图形、远程视频控制、P/Invoke支持、浏览器内的信任应用、更好的性能和工具。

  • 深入 Silverlight XAP 文件内部,把文件改小

    在Silverlight中,用户在部署的时候一不小心就会多部署上去很多代码,ComponentOne公司的XapOptimizer可以方便地解决这一问题。

  • 微软设计产品市场总监 Forest Key 谈 Silverlight

    在加入微软之前,Forest Key是Macromedia公司Flash的产品经理,对用户交互技术有着宗教般的狂热。也是因为对交互技术的喜爱,使他来到了微软。在这次他来中国推广Silverlight的时候,InfoQ中文站的记者有机会就Silverlight的性能、与其他平台的比较、客户为什么要采用 Silverlight技术、开发Silverlight所用的工具和Silverlight在微软产品线中所扮演的角色等问题进行了探讨。

  • 微软的沉默令.NET 开发者担忧

    ​本月早些时候,微软发布了一套新的基于Windows 8的触控中心界面。依照演讲稿及相关的新闻稿所示,构建该界面仅需在Windows 8上通过HTML5和JavaScript的技术即可实现,同时,HTML5和JavaScript可以使用PC的全部功能。这对于打算在Windows 平台上做更多事情的Web开发人员来说绝对是个好消息,但是对于未提及的话题却引来热烈的讨论。

  • 无敌寂寞的微软之为创新而创新

    微软终于成了办公软件的霸主,却创新疲软,创收成了问题。微软为创新而创新,利用其垄断地位强推了一套全新UI:Ribbon。

    2018 年 1 月 29 日

  • 如何使用 Microsoft 技术栈

    Microsoft技术栈最近有大量的变迁,这使得开发人员和领导者都想知道他们到底应该关注哪些技术。Microsoft自己并不想从官方层面上反对Silverlight这样的技术,相对而言他们更喜欢让这种技术慢慢淡出人们的视线,否则局面可能会更加混乱。

  • 文章:微软设计产品市场总监 Forest Key 谈 Silverlight

    在加入微软之前,Forest Key是Macromedia公司Flash的产品经理,对用户交互技术有着宗教般的狂热。也是因为对交互技术的喜爱,使他来到了微软。在这次他来中国推广Silverlight的时候,InfoQ中文站的记者有机会就Silverlight的性能、与其他平台的比较、客户为什么要采用 Silverlight技术、开发Silverlight所用的工具和Silverlight在微软产品线中所扮演的角色等问题进行了探讨。

  • 桌面开发的未来

    桌面开发的未来是什么?从终局的视角来看,桌面开发的终极目标,是让儿童可以轻松编写出生产级的应用。

    2019 年 7 月 16 日

  • Expression Blend 4 SP1 现在可以支持 Flash UI 组件

    Expression Blend 4 SP1可以读取Adobe FXG文件,使得Expression开发者能够在他们的应用程序里使用Flash UI组件。

  • 开篇词 | 从今天起,重新理解前端

    对于工作之后的前端开发者来说,没有系统学习的问题仍然存在,常常有一些具有多年从业经验的工程师,仍然会在看到一些用法时惊呼:“还可以这样!”

    2019 年 1 月 14 日

发现更多内容

如何搭建一个Hadoop集群

Rayjun

大数据 hadoop

如何让你的大脑更健康

兆熊

Github仓库如何选择开源许可证

早睡蟒

GitHub 开源许可证 GitHub license

mysql字符匹配批量修改

毛佳伟🐳

MySQL

在以后的高校招生中,应用区块链技术,可以防、治冒名顶替吗?

CECBC区块链专委会

区块链技术 高考 信息防篡改

ARTS - Week 4

Khirye

ARTS 打卡计划 arts

软件架构语录

hiqian

学写PEP,参与Python语言的设计

早睡蟒

Python Python PEP PEP

神器工具:新一代多系统启动 U 盘装机解决方案

JackTian

工具软件 U盘启动盘 安装操作系统 ventoy ISO 镜像文件

架构师训练营 - 第 3 周命题作业

红了哟

JDBC 批量插入:MyBatis、PostgreSQL

羊八井

postgresql mybatis JDBC

ARTS 第五周 6.21-6.28

我笔盒呢

架构师训练营第四周作业

hiqian

揭秘!中国人一定要知道的北斗卫星系统

程序那些事

北斗卫星 北斗系统 卫星定位 卫星授时 黑科技

计算机操作系统基础(三)---进程管理之五状态模型

书旅

php laravel 多线程 操作系统 进程

疫情常态下区块链构建分布式数字身份

CECBC区块链专委会

疫情 区块链技术 分布式数字身份

[深入理解Redis]读取RDB文件

老胡爱分享

redis 源码阅读

Tapd 自定义字段+需求视图+报表,轻松研发管理

飞哥

极客时间,项目管理 项目管理

Week2:作业一

车小勺的男神

架构师训练营:第四周第一节,互联网架构系统架构的演化

zcj

极客大学架构师训练营

游戏夜读 | 这是一款情绪游戏

game1night

serverless之一:入门

毛佳伟🐳

Serverless

Week2:作业二

车小勺的男神

ARTS 第四周 6.15-6.21

我笔盒呢

计算机操作系统基础(四)---进程管理之进程同步

书旅

php laravel 多线程 操作系统 进程

限频/限流的一些思考

i风语

Java redis 微服务 sentinel ratelimiter

ARTS打卡-04

Geek_yansheng25

架构师训练营第四周总结

hiqian

架构师训练营 - 第 3 周学习总结

红了哟

区块链≠分布式账本,别再傻傻分不清

CECBC区块链专委会

区块链技术 高考 信息防篡改

计算机操作系统基础(二)---进程管理之进程实体

书旅

php laravel 多线程 操作系统 进程

HTML 5 or Silverlight?-InfoQ