阿尔伯特•爱因斯坦在处于罕见的消沉时期时曾经说过,手段的完善和目标的混乱似乎刻画了这个时代。有人可能认为此话出自软件开发者之口,而非物理学家之口。
开发平台持续演变和改进,这常常导致我们只见树木不见森林。从正在进行的关于 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 中文站用户讨论组中与我们的编辑和其他读者朋友交流。
评论