NanUI

概述

欢迎使用 WinFormium 界面框架,WinFormium 是一个基于 WinForm 和 Chromium 嵌入式框架的桌面客户端应用的 UI 框架,它可以帮助您快速开发出一个具备现代用户界面且功能强大的桌面客户端应用。

简介

WinFormium 采用 Chromium 浏览器框架渲染用户界面,因此您可以使用 HTML5、CSS3、JavaScript 等前端技术来开发体验丰富的用户界面,同时又可以保留使用 C# 语言编写强大的后端业务逻辑的能力。

您可以基于传统的 .NET Framework 1 开发 WinFormium 应用,也可以基于新一代 .NET Core2 开发 WinFormium 应用。

本文档将帮助您快速入门 WinFormium 框架,了解 WinFormium 框架的基本概念和使用方法.原则上没有特别指出的情况下,本文档中的示例代码均基于 .NET 6.0 开发,并且开发环境为 Visual Studio 2022 版本。对于 .NET Framework 版本的开发者,您可以参考本文档中的示例代码或通过搜索引擎获取更多信息。

要了解如何创建 WinFormium 应用程序,请参阅《创建应用》

CEF 多进程架构

WinFormium 基于 CEF 的 .NET 实现 CefGlue 项目进行拓展,因此也遵循 CEF 的多进程架构模型。

处理窗口创建、UI 和网络访问的主要进程称为“浏览器”进程(也成为主进程)。这通常是与主应用程序相同的进程,并且大部分应用程序逻辑将在浏览器进程中运行。

页面渲染和 JavaScript 执行发生在单独的“渲染”进程中。一些应用程序逻辑,例如 JavaScript 绑定和 DOM 访问等操作在渲染进程中运行。默认进程模型将为每个唯一的来源(方案+域,即 URL)生成一个新的渲染进程。其他进程将根据需要产生,例如处理加速合成的 GPU 进程。

默认情况下,主应用程序的可执行文件将被多次执行作为上述几种种类的进程。如果主应用程序可执行文件很大且逻辑很多的情况下,加载时间将很长,并且多次启动该可执行文件作为子进程还会占用过多内存,在这种情况下可以使用单独的可执行文件作为其子进程以加快应用程序的启动时间并减少内存的占用。有关详细信息,请参阅《使用子进程》部分。

CEF 生成的独立进程之间使用 IPC 进行通信。在浏览器和渲染进程中实现的应用程序逻辑可以通过来回发送异步消息进行通信。渲染进程中的 JavaScriptIntegration 可以调用位于浏览器进程中的异步 API。 WinFormium 已经对进程间通信的过程进行了封装,原则上您不要手动处理进程间通信的过程。如果您需要在浏览器进程和渲染进程之间进行通信,请自行搜索 CEF 进程间通信的相关内容。

关于 CEF 版本

WinFormium 内置了 CEF 核心,因此与其相关的 CEF 版本是固定的。如果使用 Nuget 安装 WinFormium 包,用户无法自主选择 CEF 版本。如果您需要使用特定版本的 CEF 版本,您可以手动替换 WinFormium 项目源码中 CefGlue 的相关文件并编译 WinFormium 框架。

关于社区版与商业版

由于项目的持续开发需要投入大量的时间和精力,因此我不得不推出了 WinFormium 商业版,商业版的收费用于项目的持续开发和维护。不过您不必担心,商业版的功能与社区版之间差异非常小。在保留 NanUI 基础功能的同时,商业版提供了更多的功能和更好的支持。

社区版请从 NuGet.org 安装 NetDimension.NanUI 以及 NetDimension.NanUI.Runtime 包。

商业版您也可以从 NuGet.org 安装 WinFormiumNetDimension.NanUI.Runtime 包,只是您需要在项目中添加商业版的授权文件。WinFormium 还提供了一个单独的商业版 SDK 安装包,此包中包含了额外的部署工具、支持 H264 编码的 CEF 运行时包 WinFormium.Runtime 包以及商业版 WinFormium 的源代码。

如果您需要使用 WinFormium 商业版,请联系我获取商业版的授权以及 SDK 安装包。

关于文档版本

由于 WinFormium 的前身 NanUI 一直处于测试状态,因此每个发布版本都会有较大的 API 调整,因此每个版本的文档都会有较大的差异。如果您使用的是较早的版本,那么您需要自行对应框架版本和文档版本,以免出现 API 不匹配的情况。

例如,您使用的是 0.9.xxx 版本的 NetDimension.NanUI 包,那么您需要查看 0.9.xxx 版本的文档。

您当前查看的是最新版本的文档,对应 NetDimension.NanUI 1.0.xxx 版本(社区版)以及 WinFormium 1.0.xxx 版本(商业版)。

另请参阅

  1. .NET Framework 4.6.2 及以上版本 

  2. .NET Core 6.0 及以上版本