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

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

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

远程组件

 

组件,大家都知道,它是模块化编程的一种方式,有着高内聚低耦合的特点。利用它可以实现搭积木式的编程。我们的组件也是学习Microsoft的COM技术来实现的。那么远程组件是什么概念呢?远程组件也是组件,但它不提供真正的服务,一般情况下需要通过RPC连接到真正的组件上,通过RPC调用进而提供服务。使用者不关心自己  调用的组件是远程组件还是真正提供服务的组件。而工程化时只需要通过搭积木的拼接部署,就可以实现产品的架构调整。我们这里在千牛中,就是通过这种方式实现的。

 

 

 

 

image.png

 

远程组件的实现方式

 

 

 

熟悉COM的人都知道,组件中有一个ClassID的概念,可以叫他类ID,意思一套组件化接口可以有多种实现。我们 这里WebViewRemote和WebViewLocal实际上都是WebView,只是一个ClassID是Remote,另一个是Local。Remote即远程组件,而Local则是真正提供服务的组件。后续加入我们能提供多种进程间通信方式的话, 我们的ClassID还可以根据通信方式来扩展,比如zmq,mojo等。目前我们只实现了一套基于Chromium IPC的进程间通信方式,在IPC通信的基础上,我们加上了rapid_json的序列化方式。封装到了RPCFramework中,为我   们的远程组件提供通信支撑。

 

全新JS注入方式

 

不管是AEF和CEF,JS的注入和本地C++的通信都是业务的一个重要基点。但从结构中我们看到js的注入和c++的交互代码通常会封装在一个dll插入Render进程中,而业务通常在Aliworkbench千牛进程中。中间需要Browser进 程进行事件的转发作为通信的桥梁。为此增加一个js注入节点需要3个不同地方实现相应代码,开发十分不方便。在    新的WebView内部,我们提供了一个灵活的接口,在接口内,通过远程组件对通信进行了封装,并且自动创建的js 节点注入的代码。使调用者更多的关注业务的本身,而无需关心内部注入流程、js和c++交互流程和序列化相关等这些繁琐的步骤。

 

 

 

image.png

 

新的接口不再需要通过dll注入js节点

 

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

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