带你读《2022技术人的百宝黑皮书》——跨桌面端Web容器演进(2)

简介: 带你读《2022技术人的百宝黑皮书》——跨桌面端Web容器演进(2)

带你读《2022技术人的百宝黑皮书》——跨桌面端Web容器演进(1)https://developer.aliyun.com/article/1340345?groupCode=taobaotech

Chromium Embedded Framework (CEF)

 

早期AEF已经能很好的满足我们的需求。但随着开源技术的发展。CEF已经涵盖了AEF大部分的功能。同时为了解   决安全漏洞,防止被灰产利用,为了更好跟进前端技术的发展,我们有了升级内核的需求。因为Chromium变化巨大,如果在AEF的基础上升级内核,我们不仅需要基于Chromium重新构建嵌入式框架,而且需要将原有功能重新实现一遍。而CEF是由 Marshall Greenblatt2008 年创立的基于BSD 许可的开源项目,CEF 专注于促进第三应用程序中嵌入浏览器框架,使用户免受底层 ChromiumBlink 代码复杂性的影响。所以如果我们选择CEF, 可以免去一些基本的功能开发,而将更多的关注放在定制功能的开放上,从而提高我们的研发效率。

image.png

CEF模块框架

 

容器框架切换

 

于是,我们决定将Web容器框架从AEF升级到CEF,并且在千牛上做了相应的改造。以其能平滑的迁移到CEF框架之上。Chromium本身是多进程架构的,Chromium为了保护应用程序不受某个页面的影响,将js引擎和渲染部分都独立到了Render进程。而且在新的内核中,网络,本地存储都隔离到Render进程。而Browser则对应应用程序的UI管理进程。在通常的CEF框架应用程序中,应用程序即担负起Browser进程的责任,应用程序整个UI消息泵由CEF托管。这也是合情合理的,因为Browser本身就是UI的管理进程,要响应窗口的创建销毁事件,所以,一开 始,千牛是包含了Chromium的主进程的。但是,正如Chromium架构本身,Render的崩溃会影响应用程序的稳定性,Browser的异常一会影响到千牛的稳定性。为此,我们决定将Browser进程从千牛进程中剥离,从而保证千 牛进程的独立性。在Browser崩溃时,我们还做了守护,保障Browser进程在崩溃后能自行恢复。

 

 

 

 

image.png

千牛的多进程架构

 

Browser进程隔离的前提是操作系统支持父子窗口能够跨进程,千牛中是由webview容器决定窗口的位置,并将句柄告知浏览器进程。并且Windows系统下,父子窗口可以在不同的进程中通信,但MacOS系统限制了这一点。为   此我们需要一种灵活的方式,使得 Windows系统下Browser进程能独立于千牛进程,而MacOS下千牛和Browser 则是一体的。为此,我们借鉴Chromium内核的mojo通信,设计了一套RPC通信框架,用于千牛和Browser之间的通信。又借助组件化编程的思维,设计了远程组件的概念。让工程可以想搭积木式的选择自己的架构。

 

带你读《2022技术人的百宝黑皮书》——跨桌面端Web容器演进(3)https://developer.aliyun.com/article/1340343?groupCode=taobaotech


相关文章
|
3天前
|
前端开发 安全 数据库
Web架构&前后端分离站&Docker容器站&集成软件站&建站分配
Web架构&前后端分离站&Docker容器站&集成软件站&建站分配
|
9天前
|
资源调度 JavaScript 前端开发
IM跨平台技术学习(十一):环信基于Electron打包Web IM桌面端的技术实践
这次借着论证 Web IM端 SDK 是否可以在 Electron 生成的桌面端正常稳定使用,我决定把官方新推出的 webim-vue3-demo,打包到桌面端,并记录了这次验证的过程以及所遇到的问题和解决方法。
20 2
|
11天前
|
SQL 安全 数据库
如何构建一个安全的Web应用:技术与策略的全面指南
【6月更文挑战第12天】构建安全Web应用的全面指南:了解SQL注入、XSS等威胁,采用输入验证、安全编程语言,配置安全服务器和数据库,使用HTTPS,实施会话管理、访问控制,正确处理错误和日志,定期进行安全审计和漏洞扫描。确保用户数据和应用安全。
|
2天前
|
存储 运维 监控
容器化技术在现代运维中的应用与挑战
【6月更文挑战第20天】随着技术的迭代和云计算的普及,容器化技术已经成为现代运维不可或缺的一部分。本文将深入探讨容器化技术的核心优势、面临的主要挑战以及在企业运维中的实际应用案例,旨在为运维人员提供容器化部署和维护的实用指南。
|
3天前
|
存储 安全 Java
在Spring Boot Web应用中,会话技术和会话跟踪
在Spring Boot Web应用中,会话技术和会话跟踪
14 2
|
13天前
|
缓存 前端开发 数据库
构建高性能Web应用的关键技术
本文将介绍构建高性能Web应用所需的关键技术。我们将探讨前端、后端、数据库等多个方面的技术,并提供实用的建议,帮助开发者优化应用性能并提升用户体验。
|
10天前
|
运维 Ubuntu Docker
深入理解容器化技术:Docker的应用与实践
在这个数字化转型迅速推进的时代,容器化技术为软件开发和部署提供了新的路径。本文将深入探讨Docker技术的基本原理、应用场景以及实际操作,旨在帮助读者全面理解并掌握这一关键技术。
68 2
|
11天前
|
监控 虚拟化 Docker
【面试宝藏】容器技术详解其二
了解Docker和容器化技术的关键概念:Docker Image是运行容器的基础,由多个只读Layer组成;虚拟化技术在物理硬件上创建虚拟资源;Docker Swarm是集群管理和编排工具;容器比虚拟机轻量级,启动快;Dockerfile中的ONBUILD用于子镜像构建时执行命令;在非Linux系统上,Docker依赖虚拟化技术运行;容器化利用命名空间和Cgroups提供隔离;容器化启动快、扩展性好,但隔离性较弱;虚拟化安全、隔离性强,但资源开销大。通过多阶段构建、环境变量和卷适应不同环境。Docker Compose快速启动服务,依赖服务通过健康检查自我调整。
26 2
|
11天前
|
运维 Devops 持续交付
【面试宝藏】容器技术详解
DevOps是开发(Development)与运维(Operations)的结合,旨在通过自动化流程和持续交付(CI/CD),实现快速、高效的应用程序开发、测试和发布。DevOps的主要需求和好处包括:
24 2
|
12天前
|
运维 Kubernetes 持续交付
Docker与Kubernetes:容器化技术的黄金搭档
【6月更文挑战第10天】Docker和Kubernetes是容器化技术的黄金组合,Docker提供轻量级、可移植的容器引擎,简化应用部署,而Kubernetes作为容器编排系统,实现自动化部署、扩展和管理,确保高可用性和可扩展性。两者的协作使得容器化应用更高效、可靠,共同推动软件开发和运维的创新。