更新了2020年的,我在linked my article中比较了在基本Windows桌面应用程序中托管HTML的不同方法的内存占用:
基于Internet Explorer的WPF WebBrowser控件存在一些keyboard and focus issues和memory leak issues问题。作为这些问题的替代解决方案,我们正在考虑在基于HTML编辑的WPF/C#项目中托管Chromium而不是WebBrowser控件的可用选项。类似的问题以前也曾在asked上出现过。我已经阅读了答案并做了自己的研究,但我希望从那些在production-quality projects中实际使用过以下任一选项的人那里获得更多反馈
它看起来非常合适,但我不喜欢这个项目不是开源的,而且完整的源代码也不容易获得。而且,这对我们的项目来说可能是一种过度的杀伤力,因为屏幕外渲染并不是我们真正依赖的。
Chromium Embedded Framework (CEF)和.NET bindings for CEF
这可能是目前可用的最佳选择。该项目似乎很活跃,目前正在与Chrome v27同步。CEF3使用Chrome多进程架构。看起来奥多比也给它提供了some endorsement。
虽然它最初的目的是作为IE和火狐的HTML5插件,但实际上它也可以作为独立的ActiveX控件使用,所以我可以将它包装为与WPF一起使用。它公开了一个与内部网页(onmessage, addEventListener/removeEventListener, postMessage
)交互的sufficient API。我知道谷歌是discontinue Chrome Frame,但我认为源代码将保留在Chromium库中。使用最新的Chromium代码更新它应该不难,我们将完全控制这一点。
不完全是基于铬的,也不使用V8引擎,所以它不是一个真正的选择。
有没有其他我可能忽略的选择?
如果有人将她/他的经验分享给现实生活中的生产质量的WPF项目,我将非常感激。您是否有任何集成、许可或部署方面的影响?谢谢你,
编辑我也要感谢artlung提供了一个慷慨的提议,给了这个问题一个提振。
发布于 2013-08-22 20:25:53
您已经列出了最值得注意的嵌入Chromium的解决方案(CEF、Chrome Frame、Awesomium)。没有更多的项目是重要的。
仍然有Berkelium项目(见Berkelium Sharp和Berkelium Managed),但它埋藏了一个旧版本的铬。
CEF是你最好的选择--它是完全开源的,并且经常更新。这是唯一允许你嵌入最新版本的Chromium的选项。现在Per Lundberg正在积极地将CEF3移植到CefSharp上,这是未来的最佳选择。也有Xilium.CefGlue,但它为CEF提供了一个低级的API,它绑定到CEF的C API。另一方面,CefSharp绑定到CEF的C++。
Adobe并不是唯一使用CEF的主要玩家,请参阅其他在CEF wikipedia page上使用CEF的著名应用程序。
因为项目已经retired了,所以更新Chrome Frame是没有意义的。
发布于 2013-08-19 16:37:42
前段时间我们遇到了完全相同的挑战。我们希望使用基于WPF并支持.NET 3.5的CEF3开源库。
首先,CEF的作者自己列出了不同语言here的绑定。
其次,我们继续开发了名为Xilium.CefGlue的开源.NET CEF3绑定,并取得了良好的成功。在某些情况下,有些东西不能像您期望的那样工作,作者通常对内置bitbucket tracker中打开的问题非常敏感
到目前为止,它为我们提供了很好的服务。作者更新了他的库,以支持最新的CEF3版本并定期修复错误。
发布于 2014-01-07 02:52:54
这是另一个:
http://www.essentialobjects.com/Products/WebBrowser/Default.aspx
这也是基于最新的Chrome引擎,但它比CEF更容易使用。它是一个单独的.NET dll,您可以简单地引用和使用它。
https://stackoverflow.com/questions/18119125
复制相似问题