BT

你的观点很重要! 快来参与InfoQ调研吧!

探秘小米直达服务背后的故事

| 作者 张晓楠 关注 0 他的粉丝 发布于 2017年9月12日. 估计阅读时间: 11 分钟 | ArchSummit社交架构图谱:Facebook、Snapchat、Tumblr等背后的核心技术

A note to our readers: As per your request we have developed a set of features that allow you to reduce the noise, while not losing sight of anything that is important. Get email and web notifications by choosing the topics you are interested in.

既想像PC时代使用Web一样体验超流畅,又希望它能承载任何服务还让你感觉不到卡顿和延迟,这样的要求在移动互联网时代实现起来真的很难。在小米MIUI系统框架负责人董红光看来,这一判断完全有足够的依据。

从Web到APP:这些体验都不够

在他看来,目前移动端的应用服务分发基本上是两个承载形态,分别是APP和Web。PC时代绝大部分服务都是浏览器承载,在浏览器中打开搜索引擎、从搜索引擎中搜索关键字、然后跳到服务页面,这个过程中间可能还会链接到第三个服务,但是无论如何跳转,整个过程是非常流畅的,中间没有任何断档,不需要安装软件、也不需要跳出。

但是这样的体验放到移动端就不那么容易实现了。首先,移动端所承载的服务远比PC端要复杂得多,比如拍照、定位、蓝牙、传感器,这些功能在网页端没有相应的API可供调用,让网页去承载移动端的这些服务,服务势必不完整;

另外一个问题就是卡顿的问题了,移动端CPU性能要比PC端差,这就会导致计算能力不足,外加移动端有很多复杂的应用、前端写法又过于灵活,加之浏览器背负的历史包袱,导致移动端的Web应用很容易造成卡顿、慢、占内存等情况。以既有APP又有H5的很多应用为例,绝大多数情况下H5远远达不到APP的体验。

此外还有一个问题,就是网页端没法做留存。今天某个用户看到一个好的服务、或者一个好的网页,如果是APP的话很轻松可以把应用保存到桌面图标,但是网页却没有这个技术能力可以实现此功能。

当然或许很多人会说那就用APP啦,董红光认为APP也有很多问题:想想我们每一个人手机上真正下载、安装的APP能有多少?你会轻易下载一个动辄几十兆甚至上百兆的APP吗?这几十兆甚至上百兆的APP没法像网页一样实现一次性分发,要想使用一个APP,必须先把这个APP完整下载下来。

另外很关键的问题在于, APP之间很难做跳转,A应用跳到B应用,一般是打开B应用的H5页面,应用之间的割裂很严重,无法给用户带来顺畅体验;而孤岛问题的另外一个呈现形式,在于无法进行索引服务,在应用间进行搜索目前基本上是无法实现的事情。

小米直达服务:技术催生下的必然而为之

针对以上问题或部分问题,其实多家公司推出了解决方案,比如Google的PWA、Facebook的React Native、腾讯的微信小程序,还包括阿里的蚂蚁应用、百度的轻应用,而小米也推出了直达服务。

小米直达服务开发示意图

对于小米直达服务的推出,在小米开发者生态业务负责人李晓璐看来,这是顺应技术趋势所在的必然而为之:PC时代的应用是软件+网页形式;移动互联网上半场是原生应用+Web应用形式;移动互联网下半场急需解决原生应用以及Web应用的各自短板问题——因此混合框架应运而生。对此小米给其直达服务的定义是:秒开及内容直达。

对此小米比较有信心的地方在于,小米直达服务的核心在于它是一个操作系统,操作系统仍是用户使用手机的第一入口,在入口层贴近用户,用户的体验才会最好。李晓璐透露了一个数据:小米手机上95%的应用下载来自小米的应用商店。这说明小米的应用分发已经是绝大部分用户使用小米手机时的习惯。如果说应用商店的下一代有新的服务分发形态,那么操作系统仍然有很大优势去做新的生态的探索和新的生态的培养。

对此董红光也进行了补充:小米希望真正做到类似于当前PC浏览器的顺畅体验。具体到直达服务技术本身,就不得不提原生渲染技术了。直达服务实际上是运行在一个由直达服务的核心引擎管理的安卓进程上,使用安卓原生渲染,所以从开放能力、性能、内存、权限控制和管理方面的设计理念等同于原生应用。

除了原生渲染引擎之外,小米直达服务也支持在没有原生渲染条件之下,直接渲染到浏览器。在此基础之上,小米提供了封装的大量常用组件,也提供了很多高级语义标签,相当于原生封装,不需要开发者自己单独开发——Native版本一份、 Web版本一份。

此外,小米直达服务还提供了一个桥接模式,把很多API暴露给前端,在此基础上提供了蓝牙、传感器等系统功能;另外还暴露了很多服务能力,比如账号、推送、支付等等。在此基础之上,提供一套JS开发框架,除标签、接口能力逐渐暴露以外,还提供APP开发需要的页面生命周期管理、页面之间路由跳转等功能。整个核心写法是模板+数据绑定的写法,也是目前前端比较流行的一种写法,所谓的MVVM模式,这套框架相当于提供了MVVM框架的实现。这一整套东西就是运行时环境,运行时环境之外,因为要支持多个应用一起跑,要有沙盒的管理,保证应用之间数据、运行层面的安全。

小米直达服务运行时架构图

发力开发者侧:小米要构建更成熟生态

这里依旧呈现一组数据,据李晓璐介绍:小米推送现在做到月活8.4亿,也就是说绝大部分推送都是通过小米进行推送的,而且有3/4体量来自非小米上,比如iOS以及其他安卓机型,开发者也达到1.5万家左右。小米推送是小米开发者生态的最直接体现,以上数字说明小米已经拥有相对比较成熟的开发者服务。而小米直达服务,势必在开发者侧发力,构建更为成熟的开发者生态。

对于开发者来说,Native形态遇到的最大瓶颈就是流量成本获取太高,用户从应用商店下载的APP,激活率只有60%。而小米直达服务这样的新型应用形态,使得一个应用不需要下载,点了之后就是激活,对开发者来说等于是100%激活率。

另外,小米直达服务还兼容了H5形态,传统H5可以跳转到直达服务上,把过去H5无法承载的滑动流畅度、页面切换、添加到购物车等体验,在直达服务上实现提升。对于原先H5开发者来说,可以无缝地将比较弱的H5功能转化成类似于Native体验的全新服务形态,提升用户转化率。

目前小米直达服务还处于1.0版本阶段,邀请开发者进行内测。从目前的反馈来说,开发者提出了很多改进意见。董红光介绍,之前小米直达服务的开发工具相对比较简陋,开发者也提出了一些开发工具层面的需求,这方面小米会进行补足;另外内测毕竟是一个小体量的承载,未来伴随用户的增多,需要在性能优化上下功夫。

小米直达服务平台架构图

对于小米来说,还有一个挑战来自于原生渲染功能,对于开发者来说,相当于在浏览器之外重写一个类似浏览器的东西,为了满足前端开发者的需求,需要在浏览器侧补充几十年沉淀下来功能,这就需要产品的持续迭代。

从内测所呈现的产品稳定性、流畅程度来看,董红光举了一个例子:虽然APP的复杂程度不一样,但是平均来看,60帧是衡量流畅度的重要体现,目前内测上线的应用绝大多数能达到60帧。另外从内存占用来看,通过直达服务直接进行原生体验,只需要几十兆甚至十几兆,内存占用就可以启动整个应用。

面向开发这层,小米直达服务会做很多的技术储备,比如“一次开发多端运行”功能,这件事情对于开发者来说会非常有吸引力,一次开发,就可以在安卓端、直达服务平台端、浏览器端、iOS端都能运行。

做生态而非做产品 机会大挑战更大

如果从公司战略层来看待小米直达服务,可以发现这件事情不仅仅是技术驱动这么简单。小米直达服务做的是生态,既影响小米硬件、互联网、新零售三大业务形态,也影响用户侧、开发者侧、合作伙伴侧整个产业链条。

从公司角度来看,李晓璐表示,小米直达服务牵涉到MIUI的下一步,在将内容提供给用户的方式上,如何在操作系统层面进行重构;而且不仅是在既有互联网生态中探索,更能伴随着语音、图片、智能硬件等新场景的发展,探索下一代应用的交互及服务方式。

而作为一个生态,更需要培养生态链条上各方的美誉度、忠诚度,如何让开发者和用户对小米直达服务满意,这并非把产品功能做好就够了。

结束语

这次的采访,是李晓璐和董红光共同接受InfoQ的访谈,两个人背后是两个团队在小米直达服务上的协作和配合。李晓璐负责的是生态建设、拓展团队,而董红光负责的是执行引擎和框架开发团队,两个团队加起来有40多人,精诚合作、优势互补。这一团队建制也从侧面反映小米直达服务对于小米的重要程度,以及机遇和挑战之大。由小米直达服务,我们看到了小米在生态建设上的野心和决心。

关于受访嘉宾:

李晓璐:小米开发者生态业务负责人

个人介绍:美国医学影像AI背景,在开发者生态圈深耕7年,擅长操盘生态型业务,热爱“从0到1”。原百度商业产品高级产品经理,曾在百度网盟、原生广告团队完成多个新产品孵化,对互联网商业变现模式理解深刻。在小米MIUI,和小米推送一起做到月活8亿,带领团队孵化出小米直达服务,同时负责小米开放平台、小米卡包等多个生态型业务。

董红光:MIUI技术总监

毕业于北京航空航天大学计算机专业,曾就职于IBM中国开发中心,负责服务器端中间件的研发工作,6年多前加入小米,初期负责MIUI系统换肤能力和主题市场的研发工作,后负责MIUI应用开发框架的研发工作,直到现在,目前关注的领域主要是移动客户端和前端的应用开发框架相关技术。

前端之巅

欢迎关注【前端之巅】微信公众号(ID:frontshow),「前端之巅」是 InfoQ 旗下关注前端技术的垂直社群。投稿请发邮件到 editors@cn.infoq.com,注明“前端之巅投稿”。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

架构 by zhao qize

这种架构的参考价值还是有的

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

1 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT