
对于嵌入式浏览器,业界提供了各种解决方案:免费的和商业的、开源的和专有的。 它们的不同之处主要在于它们的功能性、如何使用它们以及附带的附加服务。 在本文中,我们将帮助您选出最合适您的方案。
在上一篇文章中,我们拿开源的 CefSharp 与 DotNetBrowser 进行了对比,并给出了如何选择的建议。
今天,我们将探索专有的 WebView2,并进一步向您证明 DotNetBrowser 更适合商业用途。 我们先从组织和法律方面开始。 之后,我们会一一介绍它们之间的功能差异。
概括
DotNetBrowser 和 WebView2 是商业公司的成熟解决方案,在这方面具有丰富的经验。 因此,您可以获得一个有效且不依赖于开源社区的软件解决方案。
就以下情况您可以选择 WebView2:
- 您必须使用免费软件。
- 您想使用常青分发的好处。
- 您不介意与 Microsoft 共享终端用户的数据
而在这些情况下您可以选择 DotNetBrowser:
- 您需要一个自定义功能。
- 您想获得产品使用方面的帮助。
- 您想秘密报告问题并让它们得到解决。
- 您想要控制终端用户的数据收集。
- 您需要在没有 UI 的情况下运行应用程序。
- 您需要在 Linux 和 macOS 上运行。
- 您需要以编程方式打印。
方法上的差异
WebView2 是 Microsoft 的一个控件。 它是免费的,但正如人们对 Microsoft 所期望的那样,它也是专有的。 它是基于 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 在专门的 GitHub 存储库中收集公众的反馈。 当您需要报告时,您就在那里创建了一个问题。 如果 Microsoft 开发人员发现您的报告有价值,他们会将其转移到他们的内部系统。 您可以从他们对此类问题使用的 "已跟踪 "标签得知。
Microsoft 开发人员对新报告反应迅速,但他们处理这些报告却要慢得多。 例如,在撰写本文时,几乎 80% 的跟踪问题在经过六个月以上的漫长等待仍未得到解决。
DotNetBrowser 有一个专用服务台系统,客户的报告在此保密。 保证的第一响应时间,或服务级别协议是一个工作日。
技术支持包括:产品使用帮助、协助故障排除、错误修复和考虑功能请求。 您的所有支持请求都将由 DotNetBrowser 软件工程师处理。
终端用户的隐私
本文撰写于 2022 年 10 月,描述了截至到该日期之前的 EULA 版本。
当终端用户在其环境中安装 WebView2 时,安装程序会向他们显示 EULA。 此时您可能会担心这两件事:
- Microsoft 可能会收集您终端用户的信息。
-
您需要提醒他们注意这一点。
EULA 的第 3.a 节规定 WebView2 可能会收集有关您和您终端用户使用该软件的信息。 然后这些信息会被发送到 Microsoft。
Microsoft 收集终端用户信息的事实迫使您出示相应的通知并获得他们的同意(EULA 第 9 节)。
DotNetBrowser 不会收集有关您和您终端用户的信息。 此外,它还可以防止 Google 收集数据。 您可在隐私惯例中了解关于 DotNetBrowser 如何处理数据并使您可以控制隐私的详细说明。
技术差异
从技术角度来看,DotNetBrowser 和 WebView2 并没有什么不同。 两者都具有相似的架构,其中 Chromium 在单独的进程中运行。 两者都有数百个功能,其中大部分都是重叠的。
然而,差异是存在的。 在选择适合您情况的解决方案时,它们可能是必不可少的。 让我们来看看。
分发和部署
您可以将 WebView2 Runtime 与您的应用程序一起使用,也可以使用安装在终端用户的应用程序。 这些是分发模式:分别是固定版本和常青版本。
使用固定版本模式,您可以控制应用程序中 WebView2 的版本,这有利于稳定性。 在常青模式下,您可以让 Microsoft 负责后勤和更新,并缩小软件的大小。
而 DotNetBrowser 则需要与您的应用程序打包在一起。 它是唯一开箱即用的分发模式。
Chrome 扩展
支持 Chrome 扩展是 DotNetBrowser 和 WebView2 客户端中的一个普遍请求。
在 WebView2 存储库中,扩展请求被标记为“已跟踪”,但未报告任何进展。
在 DotNetBrowser 中,扩展支持正在积极开发中。 我们就快完成了:我们完善了 C++ 部分并设计了 .NET 部分。
如果您想在 DotNetBrowser 中试用 Chrome 扩展,请联系我们。
无 UI 运行
对于自动化或生成 PDF 报告等用例,没有必要使用用户界面。相反,无头运行更简单、更高效。
WebView2 不支持在没有 UI 的情况下运行,因为它需要一个应用程序窗口。
在 DotNetBrowser 中,这是开箱即用的。 您可以在控制台应用程序、网页 服务器上使用它,甚至可以将其用作 Windows 服务。 像这样:
using (IEngine engine = EngineFactory.Create())
{
using (IBrowser browser = engine.CreateBrowser())
{
browser.Navigation.LoadUrl("https://teamdev.com/dotnetbrowser").Wait();
}
}
Linux 和 macOS
WebView2 宣布计划支持 macOS ,以后还将支持 Linux 。 但他们尚未透露任何预估信息。
DotNetBrowser 是一个跨平台的库,可以在MacOS和Linux上运行。到目前为止,仅在无头模式下运行。但是 DotNetBrowser 很快就会成为 Avalonia UI 的浏览器控件。
如果您现在想尝试使用带有 Avalonia UI 的 DotNetBrowser,请联系我们。
WPF 和重叠控件
将任何 WPF 控件放在 WebView2 控件之上是不可能的。 这是由于自然的 WPF 限制和 WebView2 的工作方式造成的。
WPF 不支持不同窗口中渲染区域之间的重叠, 因此 WebView2 需要通过将外部窗口嵌入到 WPF 控件中来进行精确地工作。
但对于 DotNetBrowser 来说,这并不是什么问题。 除了可以像 WebView2 一样使用原生窗口,它还可以直接在 WPF 窗口内渲染。
也就是离屏渲染模式。 在此模式下,渲染的像素被复制到 .NET 进程内存并显示在常规 WPF 小部件中。
从 .NET 调用 JavaScript
在这两种解决方案中,您都可以直接从 .NET 代码中执行 JavaScript。 而不同之处在于,当结果从 Chromium 返回到 .NET 世界时会发生些什么。
WebView2 会将结果转换为 JSON:
string result = await coreWebView2.ExecuteScriptAsync(@"'example'");
Debug.Assert(result == "\"example\"");
而 DotNetBrowser 则自动转换成更简单的类型。 它会将复杂类型替换为实际 V8 对象的代理:
string title = await browser.MainFrame.ExecuteJavaScript<string>("document.title");
IJsObject window = await browser.MainFrame.ExecuteJavaScript<IJsObject>("window");
// Or just use dynamic types.
dynamic document = Browser.MainFrame.ExecuteJavaScript("document").Result;
document.write("Hello world!");
从 JavaScript 调用 .NET
这两种解决方案都允许在 JavaScript 中使用 .NET 对象,但有一个问题。
在 WebView2 中,注入的对象应该是可见的 COM 并实现 IDispatch。 此要求限制了您可以注入的范围并增加了样板代码。
而在 DotNetBrowser 中,您可以注入任何对象:标准 .NET 对象、集合,甚至 WPF 控件。 在 JavaScript 中,您将有权访问注入对象的公共成员和索引属性。
拦截流量
WebView2 没有用于拦截、过滤或修改 HTTP 请求的 API。
而 DotNetBrowser 则具有用于管理 HTTP 流量的广泛功能。 有了此功能,您便可以实现以下几点
- 过滤 HTTP 请求。
- 重定向 HTTP 请求。
- 覆盖 HTTP 请求和响应标头。
- 覆盖请求上传的数据。
- 过滤 cookies。
您可以在我们 GitHub 中的 DotNetBrowser 中找到更多网络示例。
打印 API
WebView2 的打印 API 有限。 它可以打印成 PDF 格式并允许您操作一些设置。 但在此过程中确实有诸多限制:
- 您无法选择特定的系统打印机。
- 您无法配置页面范围。
- 您无法控制向用户显示的打印对话框。
而 DotNetBrowser 则提供了对打印过程的完全控制。 您可以:
- 选择打印机。
- 处理由 JavaScript 和 .NET 代码启动的打印。
- 查看打印机的功能以避免使用不受支持的功能。
- 配置打印设置,包括页面范围、纸张大小、边距、页眉、页脚等。
免费试用
获取您的免费许可证并选择我们的入门指南之一。 只需5分钟即可开始使用 DotNetBrowser :DotNetBrowser 在 WPF 中
DotNetBrowser 在控制台中,可用于 Windows 服务和服务器应用程序。
文章比较了专有解决方案WebView2和商业产品DotNetBrowser,指出DotNetBrowser更适合商业用途,提供定制功能、客户支持和隐私控制。WebView2虽然免费,但微软可能收集用户数据,而DotNetBrowser不收集且允许控制数据收集。两者在技术上相似,但DotNetBrowser支持Chrome扩展、无UI运行、跨平台及更好的WPF集成。
923

被折叠的 条评论
为什么被折叠?



