《架构师》2019年6月
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

W3C Web技术总负责人:拓展Web核心能力,W3C关注哪些技术?

作者 徐川

5月6日,InfoQ主办的QCon 2019全球软件开发大会在北京举行。W3C Web技术总负责人Philippe Le Hégaret在大会上做了《Now and the Future: An Overview of the Web in 2019》的分享,介绍了Web技术当前关注的技术方向。

Web技术在过去的标准制订方面进展比较缓慢,因此在移动互联网时代受到一些质疑,不过这一情况已经在HTML5和ES6等新标准的推出下有所好转。

我们根据演讲整理如下。

声明:本文为整理而成,非直接引用部分不代表Philippe先生的观点,文章不代表W3C官方说法。

万维网联盟W3C于1994年由Tim Berners-Lee创立,迄今已出台400多份Web标准,W3C的宗旨是中立、世界范围的技术协调、为未来技术发展奠定基础,它在全球有4个总部,包括位于北京航空航天大学的W3C中国。

近年来,W3C着力拓展新的领域,其中最重要的一项是汽车互联网。

BYTON's next generation IVI system

W3C希望顺应机器应用生态的需求,减少独家商业方案带来的碎片化,打造适用于车联网的Web技术方案,因此成立了W3C Auto工作组,目前重点关注汽车数据W3C VISS (Vehicle Information Service Specification汽车信息服务标准)、消息推送、多媒体、地理数据服务/导航、支付等方面。

在拓展Web核心能力方面,W3C当前的关注重点包括:

●WebRTC:Web上原生的视频通话能力;

●Web Assembly:极大提升性能,以及将其它语言生态引入Web;

●WebPerf:Web应用的性能管理框架;

●Web Payments:原生的Web支付API标准;

●Immersive Web:让Web原生支持VR和AR;

●WebAuthn:Web原生验证;

●Service Workers:通过后台任务来支持离线以及提升性能;

●Web Components:自定义可重用的Web组件;

●MSE:多媒体子系统和API;

●Extensive Web:允许开发者扩展浏览器功能。

下面对其中一些重点分别介绍。

Web图形处理能力

在利用GPU能力处理复杂和3D图形时,过去的Web标准是WebGL,但这个标准面对快速发展的软硬件来说还不够,因此W3C又推出了WebGPU和WHLSL,前者可进行幕前渲染与幕后图像绘制,以及多任务计算,后者是平台中立的Shading语言,可以独立于Direct3D, Metal, or Vulkan之上实现,InfoQ之前做过介绍:

Webkit推出新的着色语言whlsl

Web Assembly

Web Assembly一经问世就引起了广泛的注意,它基于栈的二进制指令结构虚拟机,目标是为高层语言,如C/C++/Rust提供编译,为高性能的页面脚本设计。

Web Assembly的一个重要应用场景是游戏,之前已经有厂商演示将C++编写而成的大型3D游戏迁移到浏览器上。

W3C也在考虑更多的为游戏提供支持,包括对输入设备如手柄的支持以及多线程操作的支持。

WebXR

WebXR Device API旨在为开发者提供用于开发沉浸式应用程序的接口,让他们可以通过这些接口开发出基于Web的、舒适的、有吸引力的沉浸式应用程序。

开发者可以通过WebXR API来创建XR体验。XR包括了增强现实(AR)、虚拟现实(VR)和最近出现的沉浸式技术。前不久W3C刚发布WebXR的标准草案,我们也对其进行了介绍:

W3C发布WebXR规范草案,用于开发沉浸式Web应用程序。

WebRTC和MSE

WebRTC让语音/视频通话能力为所有的Web App所用,它已经被大多数浏览器支持,计划本年末成为浏览器默认能力。

WebRTC只是Web视频体验其中的一部分,从视频的前端的生产/采集,到传输/编解码,更完整的图示如下:

MSE媒体源扩展主要作用在视频流处理这一块,其中一项重要的技术是自适应比特率流ABR,而ABR具体的实现包括MPEG-DASH,近几年它已经逐渐引起重视,前段时间我们介绍过bilibili在这方面的实践:

MPEG-DASH在bilibili的应用与实践

Web字体(Web Fonts)

Web字体是扩展Web UI展现能力的重要一环,它已经在英文互联网得到了广泛的实践,但由于字符集的问题——中文字体的字符集超过20000个字体,动态加载Web字体对中文来说不太现实。

但这一情形也即将改善,根据统计发现,网页上使用的中文常用字符少于2400个,基于这个事实催生了子字库提案,它可以动态分割字体并通过流的形式仅传输需要的字符的字体。这一提案可能在2020年成为现实。

渲染加强

W3C在渲染加强方面主要包括两项技术:Worklets和CSS Houdini,前者是针对渲染线程的独立运行脚本,可以认为是一个简化版本的Web Workers,让开发者能操作渲染管线中的底层部分,后者通过Javascript拓展CSS能力,通过paint API/Layout API,提供比之前的Canvas/Grid/Flexbox更强大的表现能力。

Web与机器学习

AI是近年来的热门领域,公司和社区都有不少开发者试图将Web与AI联系起来,从而提供更好的体验。W3C也成立了机器学习的社区组,并策划2019年的全球研讨会。

W3C也试图提供原生的Web神经网络API,这是为神经网络理论硬件加速设计的底层接口,用例包括:人物识别,语义诊断,情绪分析,图像自动分类等等,目标是可以直接使用预训练的深度神经网络模型。来自Intel的Ningxin Hu对此已经做出了一份提案。

Web和网络

5G, QUIC,边缘计算等正在革新网络拓扑服务。这些新的机遇对Web提出了新的技术需求,W3C举办了Web5G研讨会,探讨新的网络形式带来的可能趋势。

Web性能

Web性能方面的研究旨在提升Web开发体验以及优化Web应用性能,包括监控/优化和报告方面的提升,监控包括Performance Timeline、server, resources、tasks, element, paint;优化包括scheduling background tasks、resource loading、visibility;报告包括beacon, network error等。

Web应用安全与WebAuthn

Web应用安全方面通过浏览器与后端相互协作的安全策略来保证浏览器安全,已经实现和推进中的技术包括域名策略CORS, CSP, Secure Context,对混合内容如HTTP和HTTPS混用等也提升了安全等级,另外还有新的FeaturePolicy API和Permission API来防止特性的滥用。

WebAuthn是为线上快速身份验证FIDO 2.0设计的Web API,它利用如今越来越流行的生物特征识别机制(如指纹/面容识别),为每个网页提供了与其域名绑定的独一无二的加密和验证机制。它可以实现本地化的验证数据,如生物识别等,不会离开设备。2019年3月第一版标准正式通过实现。

无障碍访问(Accessibility/a11y)

世界上有超过十亿的残障人士,我们需要确保他们无障碍地在线进行教育,电商,工作,娱乐活动。Web无障碍访问技术保证残障人士也可以流畅使用Web,包括听觉,视觉,操作,认知等多个层面。中国正参考W3C相关提案简体中文版本进行国家标准的更新。

W3C十分重视无障碍访问技术,为其提供了多种开发者资源和工具,可访问官方页面获取。

Web中文兴趣组与小程序研讨会

在本地社区方面,W3C正在尝试使用熟识的本地语言(中文)讨论技术想法和独特的Web需求,目前中文兴趣组策划的小程序/快应用研讨会将于近日举行,其主题包括:

●小程序和快应用解决了哪些Web还没有解决的问题,如何解决的;

●小程序和快应用存在的问题,包括开发中遇到的问题和使用中遇到的问题;

●不同小程序/快应用API之间的差异、跨平台开发框架以及下一代移动Web应用的标准化方向;

●新场景的API (AR and AI)。