1、本例子需要下载 Microsoft.Web.WebView2 WebView2.Runtime.X64或者WebView2.Runtime.X86 引用库: webview2运行库这样放置 EnsureCoreWebView2Async(await CoreWebView2Environment.CreateAsync(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "WebView2
第二:WebView2目前是没跨平台能力的,也就是说基于WebView2开发的桌面应用仅能在Windows操作系统下运行,无法在Mac或者Linux下运行,即使将来WebView2提供了跨平台能力,那么开发者写的 Chunk转成ArrayBuffer再交给界面的Js,涉及到各种编解码及进程间通信的问题) 第六:WebView2是不开源的,这更加恶化了WebView2的生态;而且对于一些疑难杂症来说,开发者也很难进行源码级别的调试 第七:WebView2的性能提升或资源消耗削减可能并没有那么明显,我们都知道,只要使用Chromium,就难逃多进程架构,WebView2也不例外,它的进程甚至比Electron的进程还要多一个。 但假设用户也没开Edge,也没打开其他WebView2应用呢?这种优势还体现的出来吗? 第八:WebView2是Edge团队的副产物,没错,是个副产物,他们的主要职责是做好Edge,而不是做好WebView2,他们对WebView2的支持力度和支持持久性是值得担忧,尤其是:这个团队刚刚在不久前放弃了自己的浏览器引擎
WebResourceRequested 环境准备 安装 WebView2 Runtime: WebView2 需要运行时支持,用户设备必须安装 WebView2 Runtime。 初始化 WebView2: 创建 WebView2 控件并确保其已正确初始化。 ("WebView2 Runtime 未安装。 WebView2 控件并初始化其核心功能: public static async Task<WebView2> CreateWebView() { if (! await InitializeWebView2()) { return null; } WebView2 webView2 = new WebView2
WebView2 WebView2和CEF相比,在WPF中CEF相当于把渲染的界面生成图片再加载,而WebView2则没有这一步,性能有显著提升。 但是这种方式暂时没有找到支持Flash的方法。 官方教程 https://docs.microsoft.com/zh-cn/microsoft-edge/webview2/get-started/wpf 安装运行时 WebView2 实在诱人,最新的 Windows 11 已经自带 WebView2 ,就连 Office 也会自动部署 WebView2 ,目前 WebView2 已经被部署到 2亿台电脑,并且还在继续增加 …… 未来是属于 WebView2 安装独立的WebView2 Runtime,它可以独立下载和升级。 下载地址: https://developer.microsoft.com/zh-cn/microsoft-edge/webview2/#download-section 项目使用 安装WebView2
webview2 webview2是微软推出的一组控件,它可以让本地应用程序轻松嵌入web技术。WebView2 控件使用Microsoft Edge作为呈现引擎在本机应用程序中显示 Web 内容。 使用 WebView2,您可以将 Web 代码嵌入到本机应用程序的不同部分,或在单个 WebView 实例中构建所有本机应用程序。 Webview2 应用程序允许广泛的覆盖范围。 webview2 由来 之所以称为 WebView2,是因为它取代了 WebView 控件,而后者又取代了 WebBrowser 控件,老派 Win32 开发人员可能还记得。 webview2使用方式 通过安装开发版的Edge (Chromium),可以支持webview2的开发。 WebView2 内容始终被沙盒化. webview2未来 目前的webview2还只是支持windows的各个版本预览,未来,webview将会支持UWP 预览 ,macOS 预览,Xbox 预览,HoloLens
本文来自投稿:蓝创精英团队
WebView2 项目得天独厚,有微软操作系统win10以及win11的加持,最起码,生成的项目文件是很小的,我这边是3.6M,相对于CefSharp项目动辄100M的大小来讲 开发需要的条件
运行时
WebView2 - Microsoft Edge Developer:https://developer.microsoft.com/en-us/microsoft-edge/ webview2/#download-section
通过控制面板,我们也能看到已经安装了这个运行时了。 案例参考: https://github.com/MicrosoftEdge/WebView2Samples
新建项目 (winfrom 作为参考)
如果没有出现WebView2可以重启一下项目就会有了 webView21.CoreWebView2.Navigate("https://www.baidu.com/");
}
///
去年微软做了一个变更,将它们的一个桌面应用从Electron迁移至自己的WebView2,是不是Webview2是更好的选择? 本次,我与大家聊一聊,跨平台桌面开发,究竟是应该选Electron还是WebView2? 这是上篇。 但本系列还是专注于Electron以及WebView2这两个跨平台实现的一些对比。 终结者,WebView2? 而微软在Twitter上发了一条消息,它们把自己的一个产品迁移使用WebView2,替换掉了Electron,这是怎么一回事? 事实上,WebView2,光是从这名字上看,就知道还是没有脱离浏览器。WebView2是基于微软自己的edge内核,但edge内核只是chrome内核的fork版本而已。
在这篇文章中,我暂时会放下Electron与WebView2的一个对比,而聊一聊跨平台这个对于程序员群体来说不陌生的词。 而Electron或WebView2这样的技术,之所以受到极大的关注与使用,一个重要的原因也在于Chrome内核的性能是不断提升的,今天的浏览器的性能及JS解析运行能力已远远优于过去。 四)Electron VS WebView2 其实,无论是Electron,或是WebView2,都是基于浏览器内核+前端技术的跨平台桌面解决方案,这也是为什么要把它们放在一起聊的原因。 Electron是先行者(当然,严格说来,NW.js出现的更早,但今天它的流行度已远远落后于Electron了),而WebView2则是后来者。 那做为后来者的WebView2究竟做了哪些改进?
后来者WebView2是否能取代Electron? 这是这个话题的最终篇,前两篇为: 1.跨平台桌面开发,Electron还是WebView2 (上篇)2.跨平台桌面开发,Electron还是WebView2 (中篇) 接下来,我会分别从这两个技术的相似之处以及不同之处来详细对比说明 WebView2由于机制和Electron非常类似,也可以跨平台。 但这是未来,因为当下的WebView2只支持Windows,但是微软承诺未来会支持MacOS和Linux。 但WebView2则并不是如此。 WebView2这个词可能后端开发人员听起来没有太多感觉,但只要是移动端或前端人员,一听就会知道这是个什么东西。 严格的来说,WebView2是一个组件或叫控件。 Electron还是WebView2 现在你应该非常清楚Electron和WebView2的相同及不同之处了吧。
.NET混合开发解决方案2 WebView2与Edge浏览器的区别 .NET混合开发解决方案3 WebView2的进程模型 .NET混合开发解决方案4 WebView2的线程模型 .NET混合开发解决方案 5 WebView2运行时与分发应用 .NET混合开发解决方案6 检测是否已安装合适的WebView2运行时 .NET混合开发解决方案7 WinForm程序中通过NuGet管理器引用集成WebView2 或WPF窗体 .NET混合开发解决方案13 自定义WebView2中的上下文菜单 .NET混合开发解决方案14 WebView2的基本身份验证 .NET混合开发解决方案15 WebView2控件集成到 调试WebView2应用 使用 WebView2 DevTools 调试应用程序 使用 Visual Studio Code 调试应用程序 使用 Visual Studio 调试WebView2应用 NET混合开发解决方案21 WebView2 应用的开发最佳做法 .NET混合开发解决方案22 开发安全的 WebView2 应用 .NET混合开发解决方案23 将 WebView2 应用分发为单个可执行文件
WebView2 运行时中的进程 WebView2 进程组是 WebView2 运行时进程的集合。 WebView2 进程组包括以下内容: 单个浏览器进程。 一个或多个渲染器(呈现器)进程。 当WebView2应用程序使用WebView2功能时,WebView2进程组中进程的数量和存在可能会发生变化。(但是,WebView2进程组中只有一个特定的浏览器进程。) 在使用同一用户数据文件夹的WebView2实例中呈现的不同断开连接的源的数量。 控制何时创建这些额外进程的逻辑取决于Chromium体系结构,并且超出了 WebView2 运行时的范围。 WebView2 运行时进程和用户数据文件夹 WebView2 运行时进程集合中的所有进程都绑定到浏览器进程,而浏览器进程又与单个用户数据文件夹相关联。 为给定的用户数据文件夹创建第一个WebView2实例时,将启动与该用户数据文件夹关联的WebView2运行时进程集合的浏览器进程。所有其他进程都将在该浏览器进程的生命周期内进行管理。
.NET混合开发解决方案2 WebView2与Edge浏览器的区别 .NET混合开发解决方案3 WebView2的进程模型 .NET混合开发解决方案4 WebView2的线程模型 .NET混合开发解决方案 5 WebView2运行时与分发应用 .NET混合开发解决方案6 检测是否已安装合适的WebView2运行时 .NET混合开发解决方案7 WinForm程序中通过NuGet管理器引用集成WebView2 或WPF窗体 .NET混合开发解决方案13 自定义WebView2中的上下文菜单 .NET混合开发解决方案14 WebView2的基本身份验证 .NET混合开发解决方案15 WebView2控件集成到 每个 WebView2 会话必须具有 UDF。 每个 WebView2 会话只有 1 个活动 UDF。 每个应用 WebView2 会话至少有一个 UDF。 WebView2 控件为每个新用户创建一个新的 UDF。 WebView2 控件为每个会话创建一个 UDF。 如果有多个 WebView2 会话,WebView2 控件将创建多个 UDF。
目前,WebView2 已经被 Outlook 作为微软“One Outlook”项目的组成部分。 为什么选 Webview2 ? 相比之下,WebView2 在发布方面则提供两个选项:可以直接捆绑应用开发时所使用的特定 WebView2 库,也可以使用系统上已经存在的共享运行时版本。 与应用套件类似,使用相同用户数据文件夹的各 WebView2 应用程序之间会共享非渲染器进程,但使用不同数据文件夹的 WebView2 应用程序之间则不共享任何进程。 WebView2 内容则始终保持沙箱化。Electron 还提供关于如何选择安全模式的详尽说明文档,而 WebView2 则提供丰富的安全最佳实践。 WebView2 则始终启用沙箱,所以对于大多数 Electron 及 WebView2 应用程序而言,IPC 确实会影响到整体性能。
但是在Windows 11之前(Win10、Win8.1、Win7等),某些设备可能未预安装WebView2运行时。 对于 WebView2 应用程序,必须至少存在其中一个具有大于 0.0.0.0 的版本并对其进行定义。 检查这些 regkey 以检测是否安装了 WebView2 运行时,并获取 WebView2 运行时的版本。 在以下两个位置找到 pv (REG_SZ) 。 nullptr 指示未安装 WebView2 运行时。 如果将控制面板中将“Microsoft Edge WebView2 Runtime”卸载,然后再运行程序,直接报错 异常信息:找不到兼容的Webview2运行时安装来承载WebViews”。
本系列着重介绍 Microsoft Edge WebView2 组件技术。 WebView2是微软推出的新一代用于桌面端混合开发的解决方案。 WebView2 控件使用 Microsoft Edge 作为呈现引擎在客户端应用程序及App中显示 Web 内容。 使用 WebView2 可以将 Web 代码嵌入到客户端应用程序及App中的不同部分,或在单个 WebView 实例中构建所有本机应用程序。 WebView2由来 之所以称之为 WebView2,是因为它取代了 WebView 控件。而 WebView又取代了老旧的 WebBrowser 控件。 WebView2 使用较新的 Edge 渲染引擎,并支持多种Windows 平台。 WebView2优势 Web 生态系统和技能集。
目前,WebView2 已经被 Outlook 作为微软“One Outlook”项目的组成部分。 为什么选 Webview2 ? 相比之下,WebView2 在发布方面则提供两个选项:可以直接捆绑应用开发时所使用的特定 WebView2 库,也可以使用系统上已经存在的共享运行时版本。 WebView2 内容则始终保持沙箱化。Electron 还提供关于如何选择安全模式的详尽说明文档,而 WebView2 则提供丰富的安全最佳实践。 WebView2 则始终启用沙箱,所以对于大多数 Electron 及 WebView2 应用程序而言,IPC 确实会影响到整体性能。 /webview2
系列目录 【已更新最新开发文章,点击查看详细】 WebView2控件应用详解系列博客 .NET桌面程序集成Web网页开发的十种解决方案 .NET混合开发解决方案1 WebView2简介 .NET混合开发解决方案2 WebView2与Edge浏览器的区别 .NET混合开发解决方案3 WebView2的进程模型 .NET混合开发解决方案4 WebView2的线程模型 .NET混合开发解决方案 5 WebView2运行时与分发应用 .NET混合开发解决方案6 检测是否已安装合适的WebView2运行时 .NET混合开发解决方案7 WinForm程序中通过NuGet管理器引用集成WebView2 控件 .NET混合开发解决方案8 WinForm程序中通过设置固定版本运行时的BrowserExecutableFolder属性集成WebView2控件 .NET混合开发解决方案9 WebView2 控件的导航事件 .NET混合开发解决方案10 WebView2控件调用网页JS方法 .NET混合开发解决方案11 网页JS调用C#方法 在前一篇博客《.NET混合开发解决方案11 网页JS调用C
系列目录 【已更新最新开发文章,点击查看详细】 WebView2控件应用详解系列博客 .NET桌面程序集成Web网页开发的十种解决方案 .NET混合开发解决方案1 WebView2简介 .NET混合开发解决方案2 WebView2与Edge浏览器的区别 .NET混合开发解决方案3 WebView2的进程模型 .NET混合开发解决方案4 WebView2的线程模型 .NET混合开发解决方案 5 WebView2运行时与分发应用 .NET混合开发解决方案6 检测是否已安装合适的WebView2运行时 .NET混合开发解决方案7 WinForm程序中通过NuGet管理器引用集成WebView2 控件 .NET混合开发解决方案8 WinForm程序中通过设置固定版本运行时的BrowserExecutableFolder属性集成WebView2控件 .NET混合开发解决方案9 WebView2 可以使用WebView2的AddHostObjectToScript()将它们投影到JavaScript中。 在开发WebView2应用程序时,需要一个本机对象,它的方法或属性很有用。
线程安全 WebView2必须在使用消息泵的UI线程上创建。所有回调都发生在该线程上,对WebView2的请求必须在该线程上完成。从另一个线程使用WebView2是不安全的。 集合中不存在 WebView2 对象。") 所以首先找到该模型对应的WebView2组件,如34行代码。 第35行,Form窗体程序运行在主线程(UI线程)中,WebView2 是运行在其他线程中的。 如果WebView2应用程序试图在WebView2事件处理程序中同步创建嵌套的消息循环或模式UI,这种方法会导致尝试重新进入。 在此期间,WebView2会等待应用程序代码处理事件。
之后,WebView2运行时会在客户端机器上自动更新。然后,开发者可以从最新的 WebView2 SDK 分发使用最新 WebView2 API 的 WebView2 应用的更新。 客户端系统上的WebView2运行时需要更少的磁盘空间,因为客户端上的所有WebView2应用程序都共享WebView2运行时。 缺点 WebView2应用程序无法指定需要特定版本的WebView2运行时。 WebView2 运行时不会在客户端上自动更新,因此若要使用最新的 WebView2 API,必须定期将应用与更新的 WebView2 运行时一起更新。 发布新的 WebView2 SDK 包时,WebView2 运行时的兼容版本已分发给客户端。 因此,WebView2 应用可以使用最新版本的 WebView2 SDK 中的 API。