本文首发于 vivo互联网技术 微信公众号 
链接:https://mp.weixin.qq.com/s/ovOS0l9U5svlUMfZoYFU9Q

vivo web service是开发团队围绕奇点内核打造出的基于vivo手机平台的web服务引擎,该服务引擎从浏览器产品线中经过多年迭代而出。除了提供可靠的基础Web服务,服务引擎还集成了非常强大的扩展功能。本文从架构方面对该服务引擎进行一次简单剖析,帮助读者对vivo web service有一个整体了解。

1. 奇点内核

在多年的浏览器开发工作中,开发团队逐渐迭代出一款有竞争力的内核产品–奇点内核。从架构上讲奇点内核已经不是一款单纯的系统 WebView 替代产品,它集成了丰富的扩展功能,同时具备高性能、稳定性强的特点。

奇点内核架构示意图

这么丰富的功能如果仅提供给浏览器使用,无疑是大材小用了。

我们举几个例子:

  • 深色模式。这是最近非常火热的功能。然而,从Android Q开始系统WebView才逐渐支持深色模式。这对于在无法升级到Q版本的Android平台的开发者来说,仅使用系统WebView来实现类似的效果,无疑是巨大的挑战。幸运的是,使用奇点内核可以轻松的获取比系统WebView更好的深色模式效果,同时支持按需调整样式,这应该是应用开发者的巨大福音了。

  • 稳定性。系统WebView的崩溃率数据约为0.4%左右,奇点内核在更加复杂的浏览器环境中运行,崩溃率基本保持在0.05%以下,这对长期苦于系统WebView稳定性差问题的应用有很大吸引力。

  • 兼容性。奇点内核提供全平台的兼容能力,使用同样的API应用可以做到全平台上返回同样的执行结果,而不需要考虑Android版本的兼容性问题,节省接入方的开发和维护的工作量。

  • 安全性。基于快速迭代的能力,开发团队能够在第一时间修复WebView暴露的各种风险和漏洞,同时通过数据加密、防劫持等手段提高了Web访问的安全性,这是系统WebView做不到的。

2.vivo web service

以上优势,对于关注相关点的应用已经有足够的吸引力了。更进一步,在奇点内核的基础上我们将浏览器和部门的其他技术资源整合起来,构建了一个围绕奇点内核的服务平台,我们称为vivo web service。

web service apk架构示意图

其中:

  • 奇点内核以WebView的形式提供出来, API与系统WebView保持一致。

  • 作为奇点内核的后备,Web服务平台提供动态切换奇点WebView到系统WebView的能力。

  • 通过奇点内核,还可以有条件的使用到云端代理(省流加速、内容转码等)、HTTP DNS防劫持能力。

  • web service可以提供JSBridge、J2V8等扩展能力。

  • web service可以提供强大的奇点Player,这款自主研发的播放器在播放速度和稳定性方面远超系统提供的MediaPlayer。

我们将以上资源整合后,以奇点内核为核心提供出一套web service sdk出来供接入方使用。由于使用插件化技术,接入方仅需接入200多K的sdk,就可以使用到上述这些功能。

3.vivo web service架构

在vivo手机平台上,各个应用使用web service的架构示意图,图中展示了各应用通过sdk可以获取到的web service的各种服务。

注意,这个图仅表示应用间的依赖关系,并非类似于Android平台的层次架构图。web service目前并不是系统framework的一部分,它与其他应用没有区别,就是普通的app而已。

web service架构示意图

4.vivo web service技术原理

前面提到,web service的实现方式是插件化,由sdk和apk两部分构成。接入方通过sdk动态加载web service apk,每个应用在自己的进程空间中使用独自的web service,互不干扰。

应用动态加载web service apk示意图

其中:

  • web service apk提前被安装到系统中,或者由应用按需下载安装。

  • 应用在使用web service之前使用sdk接口将apk中的类实现动态加载到自己的进程中,就可以使用服务。

  • 应用可以通过API开启或者关闭某些服务,也可以通过服务器配置,每个应用的配置互不干扰。

  • apk可以通过应用商店进行更新,更新后应用下次启动立刻可以使用到apk的最新特性。

  • apk支持自升级,可以通过服务器配置是否强制升级为最新版本,作为紧急问题修复的兜底方案。

5.vivo web service未来演进

随着web service的迭代,未来的功能会更加丰富。目前来看,web service可能向以下的几个方向演进。

  • 提供更强大的Web能力。Web能力的提供者是内核,未来我们会通过定期的升级内核,并持续的进行性能和稳定性优化来强化内核能力。

  • 提供更多的扩展功能。未来web service会开发和引入更多、更强大的组件或服务,这些组件或服务依托于Web服务,为接入方提供更多的可选择性。

  • 提供更简洁的接入方式。未来web service中的奇点内核会成为系统的默认webview。第三方应用甚至不需要修改代码,就能使用上web service服务。依托于vivo强大的手机平台优势,web service会有更大的想象空间。

平台应用使用vivo web service示意图

更多内容敬请关注 vivo 互联网技术 微信公众号

注:转载文章请先与微信号:labs2020 联系。

vivo web service:亿万级规模web服务引擎架构的更多相关文章

  1. 使用Web Service进行网络编程-----Web Service简介

    Android应用通常都是运行在手机平台上,手机系统的硬件资源是有限的,不管是存储能力还是计算能力都是有限的,在Android系统上开发.运行一些单用户.小型应用是可能的,但对于需要进行大量的数据处理 ...

  2. Web Service学习-CXF开发Web Service实例demo(一)

    Web Service是什么? Web Service不是框架.更甚至不是一种技术. 而是一种跨平台,跨语言的规范 Web Service解决什么问题: 为了解决不同平台,不同语言所编写的应用之间怎样 ...

  3. Web Service学习之一:Web Service原理

    一.定义 Web Service 不是框架也不是技术 而是解决远程调用.跨平台调用.跨语言调用问题的一种规范. 二.应用1.同一个公司新.旧系统的整合:比如CRM系统与OA.客服系统相互调用2.不同公 ...

  4. web service, wcf, wcf rest, web api之间的区别

    在.NET Framework中,有很多种技术可以创建基于http协议的服务,譬如说web service, wcf,wcf rest和web api等等.网上有很多的文章教我们如何开发.使用这几种技 ...

  5. Web Service学习-CXF开发Web Service的权限控制(二)

    Web Service怎样进行权限控制? 解决思路:server端要求input消息总是携带实username.password信息,假设没实username和password信息.直接拒绝调用 解决 ...

  6. web service 项目 和 普通 web项目 的 区别

    web service 面向的是开发者(需要再次开发) 普通web 面向的是用户(直接使用)

  7. java web service 写入图片到web/img/

    获取本类service路径,然后字符串截取和拼接 String classpath= this.getClass().getResource("/").getPath(); Str ...

  8. 【转】简述什么是Web服务(Web Service)技术?

          Web Service 是在 Internet 上进行分布式计算的基本构造块,是组件对象技术在 Internet 中的延伸,是一种部署在Web 上的组件.它融合了以组件为基础的开发模式和 ...

  9. http服务 WCF、Web API、Web service、WCF REST之间的区别

      http服务 WCF.Web API.Web service.WCF REST之间的区别 在.net平台下,有大量的技术让你创建一个HTTP服务,像Web Service,WCF,现在又出了Web ...

随机推荐

  1. DBCP2的使用例子和源码详解(不包括JNDI和JTA支持的使用)

    目录 简介 使用例子 需求 工程环境 主要步骤 创建项目 引入依赖 编写jdbc.prperties 获取连接池和获取连接 编写测试类 配置文件详解 数据库连接参数 连接池数据基本参数 连接检查参数 ...

  2. WebGPU学习(四):Alpha To Coverage

    大家好,本文学习与MSAA相关的Alpha To Coverage以及在WebGPU中的实现. 上一篇博文 WebGPU学习(三):MSAA 学习Alpha To Coverage 前置知识 WebG ...

  3. shell脚本sed awk

    删除第一行 sed '1d' test.txt 假装执行 sed -i '1d' test.txt 执行 从第二行删除到行尾 sed '2,$d' test.txt sed -i '2,$d' tes ...

  4. 小熊派IoT开发板系列教程正式发布——免费学习

    [摘要] 小熊派开源社区针对小熊派IoT开发板首次规划了小熊派未来的系列教程.从基础到进阶的设计,可适应具有不同基础的开发者,通过该系列教程的学习,开发者能够轻松掌握IoT产品的开发.该系列教程包括单 ...

  5. Plugin execution not covered by lifecycle configuration: org.codehaus.mojo:build-helper-maven-plugin:1.8:add-test-source (execution: add-functional-source, phase: generate-sources)

    在maven项目中使用add-source时,pom.xml报如下错误: Plugin execution not covered by lifecycle configuration: org.co ...

  6. go proxy athens 部署到k8s

    目录 go proxy athens 部署到k8s 一.athens简介 二.部署 1.创建 PersistentVolume 2.创建service 3.创建deployment 4.ci/cd中使 ...

  7. pandas学习(四)--数据的归一化

    欢迎加入python学习交流群 667279387 Pandas学习(一)–数据的导入 pandas学习(二)–双色球数据分析 pandas学习(三)–NAB球员薪资分析 pandas学习(四)–数据 ...

  8. linux命令之head、tail命令详解

    head 语法 例子 tail 语法 例子 head和tail组合用法举例 head 语法 head [-n -k ]... [FILE]... 例子 默认是显示开头前10行. head /etc/p ...

  9. hdu-4638

    There are n men ,every man has an ID(1..n).their ID is unique. Whose ID is i and i-1 are friends, Wh ...

  10. 【VMware】The VMX process exited permaturely

    问题现象: 开启虚拟机时出现如图问题:虚拟机退出过早 解决方法: 以管理员身份运行cmd,输入netsh winsock reset ,回车然后重启