本文首发于 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. Date、Calendar和GregorianCalendar的使用

    java.util 包提供了 Date 类来封装当前的日期和时间. Date 类提供两个构造函数来实例化 Date 对象. 第一个构造函数使用当前日期和时间来初始化对象. Date public st ...

  2. Android组合Windows环境下Frida的安装步骤

    Frida是什么     我觉得官网已经说得很清楚了.简单的说就是一款动态代码检测工具,可用于各种系统,这里的主要用途是动态检测Android代码,配合Windows系统环境使用.     Frida ...

  3. 华为云MySQL金融版正式商用,高可靠的金融级数据库来了

    摘要:全新三节点架构,基于深度优化的MGR组复制技术,提供金融级的数据一致性. 日前,华为云数据库MySQL 金融版正式商业化发布,MySQL金融版采用MGR技术,基于Paxos协议,采用一主两备三节 ...

  4. 关于Block内部要不要使用weakSelf的几种情况

    本文转载自http://www.jianshu.com/p/c6ca540861d9 关于Block内部要不要使用weakSelf的几种情况 我们知道当对block使用不当时会造成循环引用导致内存泄露 ...

  5. openlayers5-webpack 入门开发系列一初探篇(附源码下载)

    前言 openlayers5-webpack 入门开发系列环境知识点了解: node 安装包下载webpack 打包管理工具需要依赖 node 环境,所以 node 安装包必须安装,上面链接是官网下载 ...

  6. Local Model Poisoning Attacks to Byzantine-Robust Federated Learning

    In federated learning, multiple client devices jointly learn a machine learning model: each client d ...

  7. Spring Boot 外部化配置(一)- Environment、ConfigFileApplicationListener

    目录 前言 1.起源 2.外部化配置的资源类型 3.外部化配置的核心 3.1 Environment 3.1.1.ConfigFileApplicationListener 3.1.2.关联 Spri ...

  8. isensor app kit 之 CF5642V2 OV5642 测试总结

    . 总结; 使用官哥的cf5642c-v2时,需要将isensor app kit 上的iic上拉电阻去掉,否则可能导致寄存器初始化不成功,去掉即可,使用柴草电子的模组则不需要.

  9. 【HTTP】HTTP 的15个常见知识点复习

    前言 自从入职新公司到现在,我们前端团队内部一直在做 ?每周一练 的知识复习计划,我之前整理了一个 每周一练 之 数据结构与算法 学习内容,大家也快去看看~~ 最近三周,主要复习 网络基础 相关的知识 ...

  10. 【Html JS】使用问题记录

    [Html JS]使用问题记录 ================================================================ 1.td 文字换行 2.正则表达式 = ...