在 DotNetBrowser 和 WebView2 之间进行选择

Vladyslav Lubenskyi · Follow

发表于 TeamDev Engineering · 阅读 7 分钟 · 2022 年 12 月 1 日

最初发布于 DotNetBrowser 博客。

在 .NET 中,当您需要浏览器控制时,您无需再选择引擎。 嵌入式 Gecko 和 Trident 不幸退役,您只剩下 Chromium。 幸运的是,基于 Chromium 的解决方案的多样性弥补了浏览器引擎选择的缺乏。 我们的目标是帮助您选择更适合您的产品。

在上一篇文章中,我们比较了开源的 CefSharp 和 DotNetBrowser。

今天,我们探索专有的 WebView2 并认为 DotNetBrowser 更适合商业用途。 我们从组织和法律方面开始。 之后,我们将介绍功能差异。

TLDR

DotNetBrowser和WebView2是来自在该领域拥有丰富经验的商业公司的成熟解决方案。 因此,您将获得一个有效且不依赖于开源社区的软件解决方案。

在以下情况下选择 WebView2:

  • 你必须使用免费软件。
  • 您想利用常青发行版的优势。
  • 您不介意与 Microsoft 共享最终用户的数据。

在以下情况下选择 DotNetBrowser:

  • 您想要获得产品使用方面的帮助。
  • 您想要秘密地报告问题并修复它们。
  • 您需要自定义功能。
  • 您希望控制最终用户的数据收集。
  • 您需要在没有 UI 的情况下运行应用程序。
  • 您需要以编程方式打印。

介绍

WebView2是微软的一个控件。正如人们对微软的期望一样,它也是专有的。 它是基于 Trident 的 WebView 的替代品,并使用 Edge。

WebView2 是一个控件:Visual Studio 工具箱中的一项,来自 Microsoft.Web.WebView2.Core.dll 文件的类。 但它不是像 Office 或 PowerBI 这样的 Microsoft 产品。 因此,不包括客户服务、技术支持或帮助。

DotNetBrowser是由TeamDev(一家专门从事浏览器嵌入的公司)创建和开发的产品。 我们从 2004 年开始使用 Internet Explorer,后来继续使用 Safari 和 WebKit,最终在 2013 年选择了 Chromium。

2015 年,我们推出了 DotNetBrowser。 它是一种为商业用途而设计的商业产品。 除了软件和文档之外,该服务还包括专门的客户服务专家、技术支持和优质服务。

修复、功能和帮助

没有软件是完美的。 世界上任何一个图书馆,你都会发现它缺少你需要的功能。 之后,您会发现一个阻止您发布的错误。 为了解决这个错误,您将需要使用文档没有很好地涵盖的功能。

在这种不愉快但常见的情况下,您如何获得帮助? 让我们看一下 WebView2 和 DotNetBrowser 提供的功能。

WebView2 在专用的 GitHub 存储库中收集公众的反馈。 当您有问题或需要报告的内容时,您可以在那里创建问题。 如果 Microsoft 的开发人员认为您的报告有价值,他们会将其转移到他们的内部系统。 您可以通过此类问题的“跟踪”标签来了解。

微软开发人员对新报告反应迅速,但这与他们解决问题的速度无关。 例如,在撰写本文时,几乎 80% 的跟踪问题在六个月以上的时间内仍未得到解决。

DotNetBrowser 拥有一个私人帮助台系统,客户的报告将保密。 保证的第一响应时间或 SLA 是一个工作日。

技术支持包括产品使用帮助、故障排除帮助、错误修复以及考虑功能请求。 您的所有支持请求将由 DotNetBrowser 软件工程师处理。

最终用户的隐私

本文撰写于 2022 年 11 月,描述了截至该日期的 EULA 版本。

当最终用户在其环境中安装 WebView2 时,安装程序会向他们显示 EULA。 您可能担心两件事:

  1. Microsoft 可能会收集有关您的最终用户的信息。
  2. 您需要警告他们。

EULA 第 3.a 节规定,WebView2 可能会收集有关您和最终用户使用该软件的信息。 然后可以将此信息发送给 Microsoft。

由于 Microsoft 收集最终用户的信息,您有义务出示相应的通知并获得他们的同意(EULA 第 9 条)。

DotNetBrowser 不会收集有关您和您的最终用户的信息。 此外,它还阻止谷歌收集数据。 在隐私实践中详细了解 DotNetBrowser 如何处理数据并让您控制隐私。

.    .    .

从技术角度来看,DotNetBrowser 和 WebView2 并没有那么不同。 两者都有相似的架构,其中 Chromium 在单独的进程中运行。 两者都有数百个功能,其中大部分是重叠的。

然而,差异是存在的。 在选择适合您的情况的解决方案时,它们可能是必不可少的。 那么,让我们来看看。

分发部署

您可以在应用程序中附带 WebView2 运行时,也可以使用最终用户安装的运行时。 这些是分发模式:分别是固定版本和常绿版本。

使用固定版本模式,您可以控制应用程序中WebView2的版本,这有利于稳定性。 在常青模式下,您可以让 Microsoft 负责后勤和更新并减少软件的大小。 官方文档很好地解释了所有优点和缺点。

DotNetBrowser 需要与您的应用程序打包在一起。 这是唯一开箱即用的分发模式。

Chrome 扩展程序

支持 Chrome 扩展是 DotNetBrowser 客户端中的一个普遍请求。 WebView2 用户也想要它。

DotNetBrowser 支持 Chrome 扩展,目前处于公共预览版。 查看我们解释如何使用它的博客文章。

在 WebView2 存储库中,扩展请求被标记为已跟踪。 2021 年,微软开发人员提到正在开发此功能,并向社区询问了一些后续问题。 从那以后,就没有更新了。

不带 UI 运行

对于自动化或生成 PDF 报告等用例,不需要用户界面。 相反,无头运行更简单、更高效。

WebView2 不支持在没有 UI 的情况下运行,因为它需要应用程序窗口。

在 DotNetBrowser 中,这是开箱即用的。 您可以在控制台应用程序、Web 服务器上使用它,甚至可以将其作为 Windows 服务使用。 像这样:

Linux 和 macOS 支持

根据路线图,WebView2 计划支持 macOS,然后再支持 Linux。 虽然他们没有透露对 Linux 的估计,但 macOS 支持似乎将在 2023 年准备就绪。

DotNetBrowser 是一个跨平台库,可在 Windows、macOS 和 Linux 上运行。 将其与 Avalonia UI 或服务器应用程序一起使用。

macOS 上使用 DotNetBrowser 的控制台应用程序

WPF 和重叠控件

将任何 WPF 控件放在 WebView2 控件之上是不可能的。 这是由 WPF 的自然限制和 WebView2 的工作方式造成的。

WPF 不支持不同窗口中呈现的区域之间的重叠,而 WebView2 通过将外部窗口嵌入到 WPF 控件中来精确地工作。

对于DotNetBrowser来说,这不是问题。 除了使用 WebView2 等本机窗口之外,它还可以直接在 WPF 窗口中渲染。

这称为离屏渲染模式。 在此模式下,渲染的像素将复制到 .NET 进程内存并显示在常规 WPF 小部件中。

从 .NET 调用 JavaScript

在这两种解决方案中,您都可以直接从 .NET 代码执行 JavaScript。 不同之处在于当结果从 Chromium 返回到 .NET 世界时会发生什么。

WebView2 将结果转换为 JSON:

DotNetBrowser 自动转换简单类型。 它用实际 V8 对象的代理替换了复杂类型:

从 JavaScript 调用 .NET

这两种解决方案都允许在 JavaScript 中使用 .NET 对象,但有一个问题。

在WebView2中,注入的对象应该是COM可见的并实现IDispatch。 此要求限制了您可以注入的范围并增加了样板代码。

在 DotNetBrowser 中,您可以注入任何内容:标准 .NET 对象、集合,甚至 WPF 控件。 在 JavaScript 中,您将可以访问注入对象的公共成员和索引属性。

拦截流量

WebView2 没有用于拦截、过滤或修改 HTTP 请求的 API。

另一方面,DotNetBrowser 具有管理 HTTP 流量的广泛功能。 通过此功能,您可以实现以下功能:

  • 过滤掉请求并将其重定向到自定义网址。
  • 覆盖 HTTP 请求和响应标头。
  • 覆盖请求上传数据。
  • 拦截响应数据,包括 AJAX 请求。
  • 过滤掉应为客户端设置或发送到服务器的 Cookie。

打印API

WebView2 的打印 API 有限。 它可以打印为 PDF 并允许您操作一些设置。 唉,它非常有限:

  • 您无法选择特定的系统打印机。
  • 您无法配置页面范围。
  • 您无法控制向用户显示的打印对话框。

DotNetBrowser 提供对打印过程的完全控制。 你可以:

  • 选择打印机。
  • 处理由 JavaScript 和 .NET 代码启动的打印。
  • 查看打印机的功能以避免使用不受支持的功能。
  • 配置打印设置,包括页面范围、纸张尺寸、边距、页眉、页脚等。

请在 30 天的试用期内试用 DotNetBrowser。 如果您对使用图书馆有任何疑问,请随时与我们联系。 我们将很乐意提供帮助!

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