< 返回博客

在 DotNetBrowser 和 CefSharp 之间进行选择

Anna Dolbina

2022 年 2 月 10 日

在为 WPF 或 WinForms 应用程序选择浏览器组件时,DotNetBrowser 和 CefSharp 是显而易见的选择。

在本文中,我们解释了 DotNetBrowser 和 CefSharp 之间的区别以及如何在它们之间进行选择。

简而言之

在以下情况下选择开源 CefSharp:

  • 你必须使用免费软件。

在以下情况下选择商业 DotNetBrowser:

  • 您需要自定义功能。
  • 您想要获得产品使用方面的帮助。
  • 您想要秘密地报告问题并修复它们。
  • 您需要在 Linux 和 macOS 上运行。
  • 您需要将浏览器嵌入到 Office 应用程序中。
  • 您对软件安全有要求。

支持和更新

CefSharp 是一个开源项目。 如果您发现错误或需要功能,您可以提交报告或做出贡献。 2022 年,该项目有 33 个主要和次要版本。

DotNetBrowser是一款为商业公司设计和创建的商业产品。

我们有一个私人服务台系统,客户的报告将保密。 保证的第一响应时间(SLA)是一个工作日。

技术支持包括:

  • 帮助产品使用。
  • 及时修复错误。
  • 协助解决问题。
  • 考虑功能请求。

您的所有支持请求将由 DotNetBrowser 软件工程师处理。

几乎每个月都会发布新版本的 DotNetBrowser。 我们会在 Chromium 正式发布后 3-4 周内将其升级到最新的稳定版本(带有最新的安全补丁和修复的漏洞)。

Linux 和 macOS

DotNetBrowser 在 Linux 和 macOS(x86-64 和 ARM 平台上)本机运行。

此时,您可以在无头应用程序中使用DotNetBrowser,但DotNetBrowser也将很快支持Avalonia UI。

如果您现在想尝试使用 Avalonia UI 的 DotNetBrowser,请告诉我们。

架构

CefSharp 是 Chromium 嵌入式框架或 CEF 的 .NET 包装器。 包装是通过 C++/CLI 完成的。

DotNetBrowser 在底层不使用 CEF 或 C++/CLI。 相反,它采用了自己的方法来直接与 Chromium 集成。

进程内与进程外

CefSharp 在 .NET 进程内启动 Chromium 引擎。 该库要求引擎在主应用程序线程中启动和关闭,并且在进程生命周期中仅启动和关闭一次。

DotNetBrowser 将 Chromium 引擎作为单独的进程启动。 不需要在主 UI 线程上执行此操作,甚至工作线程也可以执行此操作。 您可以随时启动和关闭 Chromium。 您可以同时使用多个 Chromium 引擎。

DotNetBrowser 架构

CefSharp 架构

稳定安全

CefSharp 模型允许您更快地启动应用程序,但它有主要缺点:

  • CefSharp 不支持内置 Chromium 沙箱。
  • CefSharp 消耗 .NET 进程的内存和 CPU。
  • 如果 CefSharp 崩溃,整个应用程序也会崩溃。
  • .NET 进程容易受到 Chromium 中安全漏洞的影响,因为它们使用相同的地址空间。

在 DotNetBrowser 中,Chromium 内部的错误不会导致 .NET 应用程序崩溃。 相反,您可以适当地检测并处理崩溃:

分发部署

CefSharp 需要在环境中安装 Microsoft Visual C++ Runtime。

DotNetBrowser 附带了所有必需的 Chromium 二进制文件和已打包的 DLL。 您无需预安装 Microsoft Visual C++ Runtime 即可使用 DotNetBrowser。

嵌入 Office

DotNetBrowser 在非默认 AppDomain 中工作,因此可以使用 VSTO 加载项或 Excel-DNA 嵌入到 Office 应用程序中。

CefSharp 仅在默认 AppDomain 中工作。

H.264, AAC

专有代码可以在 DotNetBrowser 中开箱即用。 默认情况下它们是禁用的,但您可以在代码中启用它们:

CefSharp 的分发没有专有编解码器支持。

高DPI

在 CefSharp 中,浏览器子进程的默认 DPI 感知是 Per-Monitor。 这要求整个应用程序能够感知 DPI,这对于旧软件来说可能是一个问题。

DotNetBrowser 自动检测 .NET 进程的 DPI 感知并遵守它。

DOM 访问

在CefSharp中,访问DOM的唯一方法是使用JavaScript。 DotNetBrowser 提供了用于直接在代码中操作 DOM 的 API:

Chrome 扩展程序

支持 Chrome 扩展是 DotNetBrowser 和 CefSharp 用户的普遍要求。

在 DotNetBrowser 中,扩展支持正在积极开发中。 我们已经快完成了:我们完善 C++ 部分并设计 .NET 部分。

如果您想在 DotNetBrowser 中尝试 Chrome 扩展,请告诉我们。

试用

获取许可证并选择我们的入门指南之一。 开始使用DotNetBrowser需要5分钟:

  • WPF 中的 DotNetBrowser
  • WinForms 中的 DotNetBrowser
  • 控制台中的 DotNetBrowser,对于 Windows 服务和服务器应用程序很有用。




   |    备案号:京ICP备09015132号-1044