.NET桌面程序应用WebView2组件集成网页开发3 WebView2的进程模型

虚幻大学 xuhss 444℃ 0评论

? 优质资源分享 ?

学习路线指引(点击解锁) 知识定位 人群定位
? Python实战微信订餐小程序 ? 进阶级 本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。
?Python量化交易实战? 入门级 手把手带你打造一个易扩展、更安全、效率更高的量化交易系统

系列目录 【已更新最新开发文章,点击查看详细】
  WebView2 运行时使用与 Microsoft Edge 浏览器相同的进程模型。

WebView2 运行时中的进程
  WebView2 进程组是 WebView2 运行时进程的集合。 WebView2 进程组包括以下内容:

  • 单个浏览器进程。
  • 一个或多个渲染器(呈现器)进程。
  • 其他帮助程序进程,例如 GPU 进程和音频服务进程。

58b06e9fc2fbd0db77638cf8fcccbb52 - .NET桌面程序应用WebView2组件集成网页开发3 WebView2的进程模型

当WebView2应用程序使用WebView2功能时,WebView2进程组中进程的数量和存在可能会发生变化。(但是,WebView2进程组中只有一个特定的浏览器进程。)例如,从同一个 CoreWebView2Environment 市里创建新的WebView2实例,但在源属性中使用不同的域,通常会启动一个新的渲染器进程。

渲染器进程的数量可能会根据以下情况而变化:

  • 在WebView2运行时中使用站点隔离功能。请参见每帧渲染器进程-站点隔离
  • 在使用同一用户数据文件夹的WebView2实例中呈现的不同断开连接的源的数量。

控制何时创建这些额外进程的逻辑取决于Chromium体系结构,并且超出了 WebView2 运行时的范围。

下面是在真实项目中测试的结果

(1)电脑关机,重新开机,未运行Edge浏览器,且未运行与WebView2相关的宿主应用程序。

d713d99456c8ef1ce149332904cc71ba - .NET桌面程序应用WebView2组件集成网页开发3 WebView2的进程模型

后台进程中有5个默认Edge进程在运行

37fe281ade0fc0696c7a00cc48b85b6d - .NET桌面程序应用WebView2组件集成网页开发3 WebView2的进程模型

(2)运行“建筑工程施工图AI审查系统”,其中红色框内是使用WebView2组件加载的网页应用

ec395b13aa90ffb4933f06a51669ddbd - .NET桌面程序应用WebView2组件集成网页开发3 WebView2的进程模型

任务管理器中,进程“Zjgsgts.Sczj”下启动了7个WebView2的子进程

a41caf110b764ae0d6bc24db243536b8 - .NET桌面程序应用WebView2组件集成网页开发3 WebView2的进程模型

其中某个第1个、第2个进程是渲染器进程,因为三维模型的渲染过程消耗的内存较多。第3、4、5、6、7是GPU进程或者其他帮助类程序进程。

而浏览器进程依然为5个,说明其中一个是 WebView2 进程组中的浏览器进程。

b5186ad14a1bf5d13aedd0da6c95533c - .NET桌面程序应用WebView2组件集成网页开发3 WebView2的进程模型

在宿主程序的根目录下多了两个文件夹
**65b87fb8b2d2b7c0f51d9b7d4c488a1f - .NET桌面程序应用WebView2组件集成网页开发3 WebView2的进程模型**

  • runtimes 目录
    • 结构如下图,包含一个WebView2运行时加载器组件 WebView2Loader.dll 。

3e28254e6cad033876e7efbf91bd6d64 - .NET桌面程序应用WebView2组件集成网页开发3 WebView2的进程模型

  • Zjgsgtsc.Sczj.exe.WebView2 目录
    • 结构图下图,里面包含运行过程中其他的辅助配置信息以及缓存等信息

7ff6355351039fe1892dacc3c9ea347d - .NET桌面程序应用WebView2组件集成网页开发3 WebView2的进程模型
关于该目录信息,在后续的博客中会详解介绍。
WebView2 运行时进程和用户数据文件夹
  WebView2 运行时进程集合中的所有进程都绑定到浏览器进程,而浏览器进程又与单个用户数据文件夹相关联。 如果应用程序使用多个用户数据文件夹,将为每个用户数据文件夹创建 WebView2 运行时进程的集合。

665e5f558f0524ac13d96f220cdf30ae - .NET桌面程序应用WebView2组件集成网页开发3 WebView2的进程模型

  用户数据文件夹可由多个应用程序共享,但请务必考虑对性能和管理的影响,如“管理用户数据”文件夹中所述。

  若要使用多个用户数据文件夹,WebView2 应用程序需要创建不同的 CoreWebView2Environment 对象。 WebView2通过配置的对象为给定用户数据文件夹创建CoreWebView2Environment实例。 每个 CoreWebView2Environment 对象都需要使用不同的用户数据文件夹值进行配置。

  为给定的用户数据文件夹创建第一个WebView2实例时,将启动与该用户数据文件夹关联的WebView2运行时进程集合的浏览器进程。所有其他进程都将在该浏览器进程的生命周期内进行管理。

  CoreWebView2Environment代表一个用户数据文件夹及其相关进程的集合。给定的渲染器进程与单个CoreWebView2实例不关联,因为渲染器进程可以为使用同一用户数据文件夹的多个CoreWebView2实例中的帧提供服务,具体取决于网站隔离。请参见每帧渲染器进程-站点隔离

处理进程事件和生命周期
若要对浏览器和渲染器进程中的崩溃和挂起做出反应,请使用 CoreWebView2 的 ProcessFailed 事件。

若要安全地关闭相关的浏览器和渲染器进程,请使用 CoreWebView2Controller 的 Close 方法。

若要打开浏览器任务管理器,请调用 OpenTaskManagerWindows 方法。

其他事件,请参考 WebView2 API

系列目录 【已更新最新开发文章,点击查看详细】

转载请注明:xuhss » .NET桌面程序应用WebView2组件集成网页开发3 WebView2的进程模型

喜欢 (0)

您必须 登录 才能发表评论!