.NET桌面程序集成Web网页开发的多种解决方案( 二 )


文章插图
 
控件1:WebBrowser
微软WinForm开发框架中老牌控件 。

  • 默认基于IE7内核,对H5网页加载支持不完善 。
  • 只支持单线程模式,大部分对其操作必须在创建它的线程中执行,不可以在其它线程中调用其方法或属性 。
  • 性能相对较弱 。
控件2:WebView
WebView 使用原始的 Edge (Trident) 渲染引擎,是 Windows10 唯一的控件,功能、性能不理想 。
控件3:Microsoft Edge WebView2【强烈推荐】
Microsoft Edge WebView2 控件允许在本机应用中嵌入 web 技术(HTML、css 以及 JavaScript) 。WebView2 控件使用 Microsoft Edge(Chromium) 作为绘制引擎,以在本机应用中显示 web 内容 。使用 WebView2,可以在本机应用的不同部分嵌入 Web 代码,或在单个 WebView 实例中生成所有本机应用 。
.NET桌面程序集成Web网页开发的多种解决方案

文章插图
 
下图是在Winform程序中使用WebView2组件加载我的博客园页面的效果
.NET桌面程序集成Web网页开发的多种解决方案

文章插图
 
控件4:CefSharp
CefSharp是一种将功能齐全的符合标准的web浏览器嵌入C#或VB.NET应用程序的简单方法 。CefSharp拥有WinForms和WPF应用程序的浏览器控件,以及自动化项目的OffScreen版本 。CefSharp基于Chromium Embedded Framework,这是Google Chrome的开源版本 。
    • CefSharp中文帮助文档,请点击查看
    • 免费、开源:https://github.com/cefsharp/CefSharp
    • 支持JS、C#、WinForm窗体之间相互通讯与调用 。
    • 兼容性较好,支持H5、CSS5、WebGL等 。
    • 支持获取Cookies较全面 。
    • 通过NeGet安装SDK时,运行时环境会被自动下载到当前项目的bindebug 或者 binRelease目录下 。导致整个项目非常大,大约110M左右 。
    • 以独立进程方式运行,消耗内存较多 。
    • 当控件Dock属性设置为 Fill,客户端电脑的缩放与布局不是100%时,窗体呈现黑边(严重bug),并没有完全填充父容器 。

.NET桌面程序集成Web网页开发的多种解决方案

文章插图
 

.NET桌面程序集成Web网页开发的多种解决方案

文章插图
 
实际项目应用效果如下图(缩放比例为100%):
呈现的模型是三维BIM模型,里面用到了HTML5、CSS3、WebGL等新技术 。
.NET桌面程序集成Web网页开发的多种解决方案

文章插图
 
控件5:Miniblink
Miniblink是一个追求极致小巧的浏览器内核项目,全世界第三大流行的浏览器内核控件 。其基于chromium最新版内核,去除了chromium所有多余的部件,只保留最基本的排版引擎blink 。Miniblink保持了10M左右的极简大小,是所有同类产品最小的体积,同时支持windows xp、npapi 。
.NET桌面程序集成Web网页开发的多种解决方案

文章插图
 
  • 开源地址:https://github.com/weolar/miniblink49/releases
控件6:GeckoFX
GeckoFX是skybound工作室开发的一个开源的用于方便将gecko引擎(最主要的浏览器是firefox)链接到.net 窗体应用的一个组件 。它是用C#写成的,里面有大量的C#的注释,geckofx是最完美的默认的iE核心webbrowse控件的替代控件 。
控件7:DotNetBrowser
DotNetBrowser能嵌入一个基于Chromium的WPF或WinForms组件到你的.NET应用中,用来显示使用HTML5、CSS3、JavaScript、Silverlight等技术构建的现代网页 。
.NET桌面程序集成Web网页开发的多种解决方案

文章插图
 
  • 收费
控件8:EO.WebBrowser
  • 官网:https://www.essentialobjects.com/Products/WebBrowser/Default.aspx
  • 收费

.NET桌面程序集成Web网页开发的多种解决方案

文章插图
 
控件9:Sciter.Forms
Sciter.Forms是基于Sciter桌面引擎的.NET类库,支持.net framework4.x、.NET CORE、.NET5及更高版本,支持Windows及Linux桌面系统 。