美文网首页
Electron 进程之间的IPC通信思考

Electron 进程之间的IPC通信思考

作者: Ella_Eric | 来源:发表于2020-08-22 11:17 被阅读0次

转自:主进程与渲染进程

Electron桌面程序中包含一个main主进程和N个renderer渲染进程

一、主进程和渲染进程

1、主进程Main

回顾以往的web开发,我们的代码,无论是HTML、CSS还是Javascript,都是运行在浏览器的沙盒中的,我们无法越过浏览器的权限访问系统本身的资源,代码的能力被限制在了浏览器中。浏览器之所以这么做,是为了安全的考虑。设想一下,我们在使用浏览器的时候,会打开各式各样不同来源的网站,如果JavaScript代码有能力访问并操作本地操作系统的资源,那将是多么可怕的事情。你在某天不小心打开了一个恶意的网站,可能你存储在硬盘上的文件就被偷走了(都用不着去修电脑)。

但我们要开发的是桌面应用程序,如果无法访问到本地的资源肯定是不行的。Electron将nodejs巧妙的融合了进来,让nodejs作为整个程序的管家。管家拥有较高的权限,可以访问和操作本地资源,使用原本在浏览器中不提供的高级API。同时管家也管理着渲染进程窗口的创建和销毁。所以,我们将这个管家称之为主进程。在使用Electron开发的程序中,会使用main.js作为程序的主入口,该文件内代码执行的内容,就是主进程中执行的内容。

2、渲染进程Renderer

Electron集成了Chromium来展示窗口界面,窗口中所看到的内容使用的都是HTML渲染出来的。 Chromium本身是多进程渲染页面的架构(在默认情况下,Chromium的默认策略是对每一个tab新开一个进程,以确保每个页面是独立且互不影响的。避免一个页面的崩溃导致全部页面无法使用),所以Electron在展示窗口时,也会使用到Chromium的多进程架构。而这种多进程渲染架构在Electron中,就被称之为渲染进程(render process)。

在Electron中,每创建一个新的窗口,都是一个独立的进程。

3、主进程于渲染进程的关系

主进程通过构造BrowserWindow实例来创建页面。每个BrowserWindow实例都在自己的渲染进程里运行页面。当一个BrowserWindow实例被销毁后,相应的渲染进程也会被终止。

主进程管理所有页面和与之对应的渲染进程。每个渲染进程都是相互隔离的,并且只知道运行在该进程里的页面。

在页面里调用本地GUI是不允许的,因为在Web页面里管理本地GUI资源是非常危险而且容易造成资源泄露。如果你想在网页里进行GUI操作,该页面的渲染进程必须与主进程进行通讯,请求主进程进行相关的 GUI 操作。

二、进程之间通信

主进程和渲染进程之间的通信方法:

1. 通过IPCRenderIPCMain, 主进程和渲染进程之间通过IPC 进行通信

2.通过remote模块在renderer进程里调用main主进程的模块:官方文档

三、渲染进程之间的通信

一般的项目中只需要渲染进程和主进程之间进行通信,工作中遇到渲染进程之间需要通信的问题。尝试了以下方法,假设渲染进程A和B需要通信:

1.从渲染进程A中引用渲染进程B中的代码,显然这是不行的,编译虽然没报错,但是运行起来抛出奇怪的异常。

2.渲染进程A和B之间共享一些变量,需要注意同步的问题,项目中由于一些原因不适合采用这种方法。

3.从渲染进程A中直接发IPC消息到渲染进程B,问题是渲染进程A如何获得渲染进程B的窗口或者进程消息?项目中渲染进程的窗口都是通过main创建的,方便管理,因为后面会使用到很多的渲染窗口。获取方法:

    a. 通过全局变量存储B的信息

    b.创建A或者B的时候主进程发送消息给A

    c...其他方法

然后IPC发送消息。这里介绍的不错:Electron 渲染进程之间通信

4.将main主进程作为中转站,A发送消息到main,然后main再把消息转发给B。

相关文章

  • Electron 进程之间的IPC通信思考

    转自:主进程与渲染进程 Electron桌面程序中包含一个main主进程和N个renderer渲染进程 一、主进程...

  • 8-electron 主进程与渲染进程之间的通信(同步通信、异步

    electron 主进程与渲染进程之间的通信(同步通信、异步通信) electron 主进程和渲染进程通信 ele...

  • Electron

    node GUI Electron 进程间通信IPC 主进程与渲染进程 渲染进程与渲染进程 shell dialo...

  • Electron开发: Electron 进程通信详解

    前言 Electron 中的进程,其实就是计算机中的进程,我们先来看看什么是进程通信。 进程间通信(IPC,Int...

  • ssl

    进程之间的通信 同主机之间进程通信ipc shm 不同主机之间进程通信socket 主机port作用 主机上,每一...

  • 进程间通信,线程间通信

    进程间通信 进程间通信又称IPC(Inter-Process Communication),指多个进程之间相互通信...

  • [转]进程通讯方式

    进程间通信(IPC,InterProcess Communication)是指在不同进程之间传播或交换信息。IPC...

  • 进程间通信IPC

    进程间通信(IPC,InterProcess Communication)是指在不同进程之间传播或交换信息。IPC...

  • 进程之间的8种通信方式

    进程间通信(IPC,InterProcess Communication)是指在不同进程之间传播或交换信息。IPC...

  • Android IPC机制

    什么是IPC?IPC是Inter-Process Communication的缩写,含义为进程间通信或者跨进程之间...

网友评论

      本文标题:Electron 进程之间的IPC通信思考

      本文链接:https://www.haomeiwen.com/subject/ctoujktx.html