eka*_*hev 12 chromium-embedded cefsharp webview2
我正在考虑将项目从 cef (CefSharp) 迁移到 WebView2 WPF。我的初步测试表明 WebView2 API 具有我需要的该端口的接口。我担心我会错过一些可能阻止我切换到 WebView2 的东西,我会在过渡的后期阶段解决这个问题。如果有人经历过这个过程,请分享我是否需要了解可能成为此过渡的障碍的事情。WebView2 中是否缺少来自 cef 的重要 API?
Vla*_*kiy 10
WebView2 的 Github 中的这个问题部分回答了你的问题。我想补充一下我的看法。
总结:
这个答案是基于我的个人经验,并不是详尽的比较。
Chromium进程模型有主进程和许多辅助进程。当然,这是一种赤裸裸的简化,但它可以做到。
CefSharp 和 WebView2 都遵循这一过程模型,但有一个非常显着的区别。CefSharp 在应用程序的进程中启动 Chromium,而 WebView2 将其作为单独的进程启动。
进程内模型对于所有基于 CEF 的浏览器都是通用的。优点:浏览器启动速度更快。缺点:
进程外模型在专有浏览器中很流行。不仅 WebView2 以这种方式工作,DotNetBrowser和EO.WebBrowser也以这种方式工作。优点:
WebView2 的分数。
有两种呈现嵌入式 Web 内容的方法。一种是摆脱实际 Chromium 窗口的花哨功能,并将其嵌入到应用程序中。我们称之为“窗口”或“重量级”模式。另一种方法是在内存中渲染网页内容并将其绘制在任意表面上。这称为“离屏渲染”。
WebView2 仅支持窗口渲染。这种模式有两个显着的缺点:它需要一个窗口才能运行,并且浏览器始终保持在顶部(也称为空域问题)。
CefSharp 还具有离屏渲染功能。它允许应用程序在控制台中运行、将网页内容与其他控件叠加、在 Unity3D 中渲染网页内容等。
CefSharp 的得分。
自动化的基础是模拟用户输入。CefSharp 有一个 API,用于将“真实”鼠标和键盘事件分派到浏览器。浏览器将这些事件作为用户手势来处理,而 JavaScript 无法区分它们和真实的人类输入。查看IBrowserHostSendMouse*中的和SendKey*方法。
WebView2中没有这样的API,只有基于Win API的解决方法。
CefSharp 的得分。
默认情况下,所有 Chromium 进程都是沙盒的。这让他们更加安全。Chromium 团队在这里详细解释了沙箱。
WebView2 和其他进程外库也被沙箱化。
CefSharp 不支持沙箱,而且似乎永远不会支持(#697)。
WebView2 的分数。
| 归档时间: |
|
| 查看次数: |
6391 次 |
| 最近记录: |