为 2020 年更新,我链接了我的文章,其中比较了在基本 Windows 桌面应用程序中托管 HTML WebView 的不同方法的内存占用:
基于 Internet Explorer 的 WPF WebBrowser 控件存在一些键盘和焦点问题以及内存泄漏问题。作为这些问题的替代解决方案,我们正在考虑在基于 HTML 编辑的 WPF/C# 项目中托管 Chromium 而不是 WebBrowser 控件的可用选项。以前在这里问过类似的问题。我已经阅读了答案并进行了自己的研究,但我希望从在生产质量项目中实际使用以下任何选项的人那里获得更多反馈:
它看起来很合适,但我不喜欢这个项目不是开源的,而且完整的源代码不容易获得。此外,这对我们的项目来说可能有点过头了,因为离屏渲染并不是我们真正依赖的东西。
Chromium Embedded Framework (CEF)和CEF的 .NET 绑定
这可能是目前可用的最佳选择。该项目似乎很活跃,目前与 Chrome v27 同步。CEF3 使用 Chrome 多进程架构。看起来 Adobe 也给了它一些支持。
虽然它最初的目的是成为一个用于 IE 和 Firefox 的 HTML5 插件,但它实际上也可以作为独立的 ActiveX 控件工作,因此我可以将它包装起来与 WPF 一起使用。它公开了足够的 API来与内部网页 ( onmessage, addEventListener/removeEventListener, postMessage
) 进行交互。我知道 Google 将停止使用Chrome Frame,但我认为源代码将保留在 Chromium 存储库中。使用最新的 Chromium 代码更新它应该不难,我们可以完全控制它。
不完全基于 Chromium 并且不使用 V8 引擎,因此它不是一个真正的选择。
还有其他我可能忽略的选择吗?
如果有人分享她/他对现实生活中的生产质量 WPF 项目的上述任何选项的经验,我将不胜感激。您是否有任何集成、许可或部署影响?