码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • .NET混合开发解决方案3 WebView2的进程模型


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

    WebView2控件应用详解系列博客

    .NET桌面程序集成Web网页开发的十种解决方案 

    .NET混合开发解决方案1 WebView2简介

    .NET混合开发解决方案2 WebView2与Edge浏览器的区别

      WebView2 运行时使用与 Microsoft Edge 浏览器相同的进程模型。

    WebView2 运行时中的进程

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

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

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

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

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

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

     

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

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

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

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

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

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

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

    在宿主程序的根目录下多了两个文件夹
    • runtimes 目录
      • 结构如下图,包含一个WebView2运行时加载器组件  WebView2Loader.dll 。

    •  Zjgsgtsc.Sczj.exe.WebView2 目录
      • 结构图下图,里面包含运行过程中其他的辅助配置信息以及缓存等信息
    关于该目录信息,在后续的博客中会详解介绍。
    WebView2 运行时进程和用户数据文件夹

      WebView2 运行时进程集合中的所有进程都绑定到浏览器进程,而浏览器进程又与单个用户数据文件夹相关联。 如果应用程序使用多个用户数据文件夹,将为每个用户数据文件夹创建 WebView2 运行时进程的集合。

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

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

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

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

    处理进程事件和生命周期

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

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

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

    其他事件,请参考 WebView2 API。

     

    系列目录     【已更新最新开发文章,点击查看详细】
  • 相关阅读:
    02.01 nginx简介、选择理由、安装和使用
    系统架构设计:12 论软件维护方法及其应用
    Python面向对象 —— 类属性「二」(属性获取机制和陷阱、代码示例、执行流程分析)
    Spring框架系列(6) - Spring IOC实现原理详解之IOC体系结构设计
    D-Star 寻路算法
    llama-factory SFT 系列教程 (四),lora sft 微调后,使用vllm加速推理
    Vue3中vite.config.js文件相关配置和mock数据配置
    SpringBoot SpringBoot 原理篇 2 自定义starter 2.5 使用属性配置设置功能参数【2】
    Android watchdog
    软件工程在20世纪80年代以来获得的主要成果有CASE Computer-Aided Software Engineering产品,软件工程的概念?
  • 原文地址:https://www.cnblogs.com/SavionZhang/p/16195384.html
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号