55

在为 .Net 提供体面的 Chromium Embedded Framework (CEF) 实现的领域中,两个主要选项似乎是 CefSharp 和 CefGlue。它们的方法不同(CefGlue 使用 P/Invoke 调用 CEF 非托管代码,CefSharp 使用 CEF 库周围的混合模式 C++/CLI 包装器)。

混合模式程序集是否比 P/Invoke 调用更好?在所有其他条件相同的情况下,似乎 CefGlue(P/Invoke 库)为 CEF 项目提供了一个“更薄”的包装器,这意味着响应上游库中的更新可能会更快。

有没有人有这两个图书馆的经验可以分享差异化因素是什么?

4

4 回答 4

21

从某种意义上说,它们大致相同,无论您选择哪种方式,您都应该能够在 2014 年摆脱困境。我们前段时间有过这个问题,这里我们想出了什么:

头孢夏普

优点:

  1. WinForms 是一个非常古老和成熟的项目。如果您要使用 WinForms,这可能是要走的路;
  2. 它有一个 NuGet 包,因此易于使用和更新;
  3. 支持更新版本的 WPF (.NET 4+);

缺点:

  1. 正如@Uwe Keim 所提到的,他们最近才开始支持 WPF,所以它不如 Xillium.CefGlue 成熟;
  2. 社区不能接受你的需求;
  3. 不支持单声道。

头孢胶

优点:

  1. 它对 .NET 2.0 很友好。您的代码将能够在其上运行。(这对我们至关重要)
  2. 一个反应迅速的社区,可以帮助您完成/修复您需要做的事情;
  3. 更成熟的WPF支持;
  4. 单声道支持。

缺点:

  1. 据我所知,没有 NuGet 包,您需要自己添加库并更新它们
于 2014-03-19T16:46:30.360 回答
20

现在是 2018 年。项目的命运发生了很大变化。CefSharp 非常活跃,几乎每天都会在 GitHub 存储库中更新。问题正在得到解决,目前只有 57 个未解决的问题和 1787 个已关闭。CefGlue 似乎效果不佳。邮件列表濒临死亡,最近没有更新。GitHub 上有两个分支解决了最后发布的 CefGlue 版本之外的问题。

否则基本面没有改变。CefSharp 依赖于 C++/CLI 代码,这原本是实现 .NET-to-C++ 互操作的简单方法。但这只能在 Windows 机器上和针对 .NET Framework 的完整桌面版本的项目中工作。

但不是 Mono,不是 .NET Core(与 Xamarin 和 UWP 应用程序相关),或任何旨在可移植到另一个操作系统的库或项目。在这种情况下,C++/CLI 不是一个选项,pinvoke 必须是后备。所以头孢胶。

于 2018-07-14T18:12:42.080 回答
15

现在是 2018 年末,老实说,它看起来很严峻。

CefSharp 虽然正在积极开发中并且有一些不错的文档,但仍然不支持 .NET Core 或 Mono,使其无法用于任何与 .NET Core、.NET Standard 或 Mono 相关的东西(我们专门将 Linux 用于生产服务器,所以这是一个很难不,可悲的是)。

相比之下,根据其他海报,CefGlue 显然确实支持 .NET Core/Mono。然而,这很重要,该项目转移到 GitLab 并且没有附加任何许可证。该网站也无法访问(至少是我找到的那个)并且文档不存在。

这里有一个叉子,但它似乎再次处于非活动状态。这里还有一个非官方的 .NET Core 端口,但这似乎对 Avalonia 有很强的依赖性。

但是,有Chromely,它似乎支持跨平台并且基于 CefSharp 和 CefGlue(以及这些的非官方端口)。不过,这似乎是一个成熟的浏览器,而不是用于在应用程序中嵌入某些内容的库。

由于我最初是在寻找一种简单的方法来在我的应用程序中嵌入无头浏览器以进行爬取(消除安装 Chrome 的需要),因此我还研究了 Awesomium,但他们似乎已经转移到一个名为“Ultralight”的新项目中",它不支持 C#,目前没有绑定。

作为最后的努力,似乎有Optimus,它似乎支持 .NET Standard,并且是 .NET 中 WebBrowser 的完整实现,减去 GUI。我会尝试一下,如果它有效(或无效),可能会编辑这个答案。

于 2018-10-27T12:47:07.180 回答
5

为了完成Artem 的回答CefSharp仅提供与 C# 的基本 javascript 集成,而CefGlue通过公开 CEF 提供的所有 javascript 绑定提供了一个非常完整的集成解决方案。

关于 Nugets 包,我刚刚为针对 3.2272.2035 CEF 版本的 .Net 4.5创建了CEFGlue nuget 包: Unofficial.CefGlue.WPFUnofficial.CefGlue.WindowsForm

于 2015-06-30T01:23:52.203 回答