小编典典

使用WPF / C#嵌入Chromium而不是IE WebBrowser控件的选项

c#

基于Internet Explorer的WPF
WebBrowser控件遭受一些键盘和焦点问题以及内存泄漏问题的困扰。作为解决这些问题的替代解决方案,我们正在考虑基于HTML编辑的WPF /
C#项目中托管Chromium的可用选项,而不是WebBrowser控件。以前在这里已经过类似的问题。我已经阅读了答案并进行了自己的研究, 但我希望从实际在生产质量项目中使用以下任何选项的人那里获得更多反馈

AwesomiumAwesomium.NET

看起来非常合适,但是我不喜欢该项目不是开源的,并且不容易获得完整的源。同样,这对于我们的项目来说可能是一个过大的杀伤力,因为屏幕外渲染并不是我们真正依赖的东西。

用于CEF的Chromium嵌入式框架(CEF).NET绑定

这可能是当前可用的最佳选择。目前该项目似乎正在运行,并且正在与Chrome
v27同步。CEF3使用Chrome多进程架构。看起来Adobe也在认可它。

Google的Chrome内嵌框架

虽然它的最初目的是成为IE和Firefox的HTML5插件,但实际上它也可以作为独立的ActiveX控件使用,因此我可以将其包装以与WPF一起使用。它提供了足够的API与内部网页(onmessage, addEventListener/removeEventListener, postMessage)进行交互。我知道Google将会停止使用 Chrome
Frame,但是我认为来源仍将保留在Chromium存储库中。我们不难用最新的Chromium代码对其进行更新,并且我们将对此进行完全控制。

WebKit .NET包装器

并非完全基于Chromium,也不使用V8引擎,因此它并不是真正的选择。

还有其他我可能会忽略的选择吗?

如果有人将他/他的经验分享给现实生活中,具有生产质量的WPF项目,我将不胜感激。 您是否有任何集成,许可或部署方面的内容?谢谢。

[编辑]
我也要感谢artlung通过提供慷慨的赏金来推动这个问题的发展。


阅读 571

收藏
2020-05-19

共1个答案

小编典典

您已经列出了嵌入铬的最著名的解决方案(CEF,Chrome Frame,Awesomium)。没有其他项目很重要。

Berkelium项目仍然存在(请参阅Berkelium
Sharp
Berkelium
Managed
),但是它体现了Chromium的旧版本。

CEF是您最好的选择-
它是完全开源的,并且经常更新。这是唯一允许您嵌入最新版本的Chromium的选项。现在Per Lundberg正在积极致力于将CEF
3移植到CefSharp,这是未来的最佳选择。还有Xilium.CefGlue,但是此提供了CEF的低级API,它绑定到CEF的C
API。另一方面,CefSharp绑定到CEF的C ++ API。

Adobe不是唯一使用CEF的主要公司,请参阅CEF维基百科页面上的其他使用CEF的著名应用程序。

更新Chrome Frame的,因为该项目已是毫无意义的退役

2020-05-19