HTML5的威胁:WebSocket与稳定的标准

作者:Cameron Laird

值得庆贺:这是您开设真正的办事处并且第一笔投资如期而至之后的第一个周五。这将会是一个美好的周末。HTML5 拥有您需要的技术,可让您基于 Web 的大型多玩家游戏的理想变成现实。浏览器中的硬件加速之争确实存在,而您将成为这方面的领路人。

直到周一,您才发现您已经完成的所有测试,以及您准备好的所有演示都已经没有任何意义。您的网站崩溃,游戏卡住,而且您似乎对这一切无能为力。

WebSocket发生了什么变化?

这个故事是真实的。.它已经在依赖于 WebSocket 协议的好几个团队身上发生了。为什么事情会变得如此失常?Web 开发人员可以通过哪些保护措施来防止被这样“灼伤”呢?

一言以蔽之:经常保持警惕。WebSocket 的情况显然比能用只言片语解释清楚的情况要复杂得多,如“他闯了红灯”或“他们没做备份”。与大多数现实世界中的戏剧一样,由很多因素共同造就了 WebSocket 的情况:

  1. 由于缺少测试,有可能存在“跨玩家”的安全漏洞。
  2. 技术如何跨标准组织进行发展的道路尚不明朗。
  3. 浏览器与支持标准的浏览器制造商的角色。

您唯一能确定的事,就是清楚不稳定标准会引起各种变化(并投入时间支持它们)。为了说明不存在轻松修复系统的原因,我们需要弄清楚什么是 HTML5,WebSocket 在 HTML5 中的位置,以及基于标准的开发本身是如何演变的。

HTML5与应用程序开发

HTML5 的潜力比它的前辈们要大得多。过去,“Web 应用程序”涉及到的内容不会比数据输入表单更复杂,例如大学入学考试或退税。以前的 Web 标准形式有好几种名称,包括HTML4;它们让搜索引擎以及 Web 2.0 的其他组件变成现实。

相比之下,HTML5 所包含技术的稳定程度不尽相同。这些技术从可让人感觉 Web 游戏就像本机应用程序一样的硬件加速图形、音频与视频,到使用数据库标准(如 IndexedDB)的普通(但高价值的)方法。

Web 依然是通过相对较低的成本接触到尽可能多的人的出色平台。从广义上说,HTML5 将成为能够在跨各种平台与设备上开发网络应用程序的标准集。您使用的所有设备 —— 电话、游戏手柄、汽车、电视、销售点终端、家用电器等 —— 都可能真正实现一组标准。这对于一组刚刚兴起的技术而言是相当了不起的成就!

它同样不是一种连续的定义或文档,如 HTTP1.1(我们应该认识到,即使是控制相当良好的主题也会以 7 个不同部分发布)。HTML5 至少再过几年才会完全成熟。那么,web 开发人员如何利用成熟度不同的各种技术呢?浏览器在支持开发人员使用 HTML5 标准方面如何发挥作用?

革新速度与规范的稳定性

HTML5 背后的关键因素让它变得“严密”—— 更加连续、集成与内部一致。它将变得更可信赖,完美无缺。这将让开发人员的选择变得更加简单。

这种概念的 HTML5 很可能还需要另一个十年才能变为现实,期间一直无法得到应用。真正的选择并不在高质量与低质量标准之间,而是如何在标准化中的灵活性与可靠性中间取得最佳的平衡。此外,当标准滞后太多时,聪明的开发人员会自己创造技术来解决实际问题,这会让工程局势变得更加混乱。HTML5 发起人做了一件正确的事情,即模块化标准及其处理。HTML5 的有些部分非常容易理解而且毫无争议;只需要对其进行标准化,而且其中有些部分已经在 Web 浏览器中使用了 5 年以上。

其他部分比较困难,包括 WebSocket 协议。要知道,这里所说的“困难”并非在委婉地表达“由行事不真的人编写”或“执行错误的约定”。HTML5 要解决的是要求仔细的设计与工程的难题。有时候,即使出发点是好的而且甚至进行了大量的会议,也还是无法避免犯错。

浏览器的角色

浏览器与浏览器制造商(如 Google、 Microsoft 与 Mozilla)同样在 HTML5 规范的应用中起到了自己的作用。对于如何在快速革新与规范稳定性之间达到平衡,每个人都有着不同的视角。

Google 的 Chrome 与 Mozilla 的 Firefox 已经将稳定的规范与快速变化的规范完美地融合在一起。从Internet Explorer 9 开始,Microsoft 已经开始区分稳定的与不稳定的规范,并避免在浏览器中应用后者。与此相反,很多公司开始试验 www.html5labs.com 上的不稳定规范。

SVG 是一个有趣的例子:2000 年末,实际显示可缩放矢量图形(Scalable Vector Graphics,SVG)的首个浏览器是 Internet Explorer 6,它带有一个来自 Adobe 的 SVG 插件。到 2005 与 2006 年,其他浏览器也支持部分仍然在发展的 SVG 标准。在 2010-2011 期间,SVG 规范已经足够稳定的时候,IE9 引入了对大多数 SVG 的本机支持。尽管 Microsoft 可以更快地支持它,但 IE 确实避免了让 Web 开发人员经历如下痛苦:当规范不断变化时,测试的难度很大,而且有时候还会导致站点严重受损。

那么当浏览器制造商不同意时,开发人员如何决定支持哪些内容呢?在可以预见的将来,考虑“浏览器B是否支持HTML5?”这样的问题没有多大意义,中肯的问题更接近于“B 的一个特定版本对我们实现所需的HTML5特定版本和部分的支持情况如何?”我们应该将这里的“支持”视作浏览器的特征或属性,而非一种特定的功能,如表格中的一个复选框。例如,假设您的应用程序注重调度。新的日期时间输入数据类型对您十分关键。您需要清楚地分析哪些浏览器版本能够提供您需要的输入行为,但同样需要了解浏览器提供商如何决定这些行为,以及当标准继续发展时不同的浏览器可能怎么做。您还需要确定是否愿意增加对某些内容的支持,如果这些内容将不断变化并可能不时削弱您的 web 体验的话。

WebSocket:一个不稳定规范的案例研究

让我们更加深入地探讨 WebSocket 案例。毫无疑问,它的早期原型,以及无论其稳定性如何都立即接受的做法都存在错误。为了了解原因,您需要考虑最初的原始 Web,从 20 世纪 90 年代早期开始。那个时候,它是完全“拉送式”的 —— Web 浏览器发送请求,然后获取页面并显示出来。在最后二十年的大多数时间内,对于更多通用类型网络的需求是显而易见的,而在相应的所有技术修复中,Internet Explorer 5.0 在 1999 年春天首先使用了 AJAX 模型,这在当时代表着最引人注目的进步。

甚至 Ajax 在应用程序的响应度(延迟)与容量(带宽)方面的限制也已经变得不可接受。这些限制依然存在,在很大程度上是因为安全性很难恢复正常。WebSocket 的出现就是为了解决这个问题。

这似乎是一个“足够好的”解决方案,因此2009 年末首先在 Chrome 中得到了支持。该规范不断变化,站点也不得不保持更新实现才不至于崩溃。到了2010 年秋天,已经有好几种浏览器支持WebSocket 功能。与此同时,有个团队发表一篇论文来描述安全漏洞。结果:Firefox 与 Opera 在各自的浏览器中关闭了 WebSocket功能。Internet Explorer 选择不带 WebSocket 功能,因为它太不稳定,不值得在它的技术和原型上进行投入。大家达成共识,WebSocket 将继续变化,尚不稳定。它肯定会变化,而且当它变得足够成功时,将再次扩展功能并进行优化。

如上所述,浏览器生产商已经在是否支持WebSocket 方面出现了分歧。谁的做法是正确的呢? 或许都有自己的道理。尽管有人抨击 Firefox 和 Google 发布有风险的浏览器,也有人批评 Microsoft 过于保守,但做出选择并不容易。工程的全部意义就是权衡,而这种情况下的权衡是微妙的,而且难以准确计算。在不同市场中发展的不同组织,可能会做出不同的选择。当Microsoft 技术推广师 Giorgio Sardo 强调“一定要把它纠正过来”时,他无疑是正确的。Sardo 的意思并不像“始终使用 IE”,或者甚至是“只使用公认的标准”这么简单。他承认“就个人而言,我喜欢WebSocket”——他应该就是如此!HTML5 是正确的方向,因为聪明人都在研究我们理解的边缘,从而最大限度地利用目前存在的 Internet 基础结构。有成千上万个有价值的应用程序正在等待编写,而 HTML5 主要是解决方案的一部分,而不是问题。

找到平衡

WebSocket 的教训并不是逃避和放弃 HTML5 的理由。相反,我们应该采取以下步骤:

1. 清楚地分析HTML5 有哪些稳定的部分值得采用,以及不稳定的规范发展会带来什么风险。
2. 研究浏览器支持特定 HTML5 技术的原因,以及如果您为最终用户开发的话,它对于最终用户的体验意味着什么。
3. 计划在新技术发展与站点稳定性之间取得平衡,准备好衡量支持不断变化的标准的代价。
4. 而且当然,在最新的规范讨论中保持活跃与对趋势的把握。

通过像HTML5 Labs 或 WebSocket.org 这样的网站找到或变成一位 HTML5 专家,可让评估一门新技术变得更加轻松。您是否正在寻找一个简单的选择,例如采用HTML5 并从此以后快乐无忧?这不太现实。实际情况是,只要在正确的技术社区中投入一点努力,您和您的队友就可以随时了解最好的 Internet 编程实践。如果您足够优秀,甚至可以参与他们创造最佳实践的过程。

关于作者

Cameron Laird 是一位经验丰富的开发人员,他写了几百篇关于编程技术的 文章 他对于HTML5特别热心。您可以通过 Twitter 与他保持联系

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值