探索Chromely:.NET开发者的Chromium桌面框架

在当今的软件开发领域,跨平台桌面应用程序的需求日益增长。Electron框架因其能够构建跨平台的桌面应用程序而广受欢迎。然而,对于.NET/.NET Core开发者来说,Electron可能并不是唯一的选择。本文将介绍一个名为Chromely的框架,它为.NET/.NET Core开发者提供了一个构建HTML5桌面应用程序的替代方案,而无需使用WinForms或WPF。

在开发一个WPF项目时,一直在寻找一种方法将SugarCRM报告集成到项目中。Electron是一个吸引人的选择,但发现了CefSharp,尽管它有一些限制,比如只能使用位图渲染而不是纯HTML渲染。最终,决定创建一个不使用WPF的解决方案,并决定与社区分享。

Electron的替代品?

是的,可以这么说。Electron是真正的跨平台框架,而Chromely目前只支持Windows和Linux。Chromely专为.NET/.NET Core开发设计。与Electron相比,Chromely的一些优势包括:

  • Chromely不需要Node或NPM。最终的安装和使用不需要Node。
  • Chromely轻量级。使用Electron在.NET或.NET Core中,需要像Edge.js这样的库,或者在ASP.NET中托管Electron,就像Electron.NET中使用的那样。Chromely使用轻量级的原生GUI宿主。
  • 对于.NET/.NET Core开发者来说,不需要学习新技能。
  • 对于WPF/WinForms开发者来说,即使没有Web开发经验,也可以轻松开始HTML5桌面开发。

如何使用Chromely

下载、构建并运行附带的源代码,或按照以下步骤操作。这里描述的步骤是针对CefSharp Windows应用程序的。对于CefGlue和SPA应用程序,请查看Chromely GitHub。

确保构建平台目标是x64。从项目属性中,将"控制台应用程序"更改为"Windows应用程序"。

从Nuget添加Chromely.CefSharp.Winapi。(如果出现警告,卸载项目并重新加载。)

在项目根目录中创建index.html文件。将文件的内容复制到index.html中。确保index.html设置为"始终复制"或"如果较新则复制"。

在Program.cs的Main函数中添加以下代码片段:

class Program { static int Main(string[] args) { string appDirectory = AppDomain.CurrentDomain.BaseDirectory; string startUrl = $"file:///{appDirectory}index.html"; ChromelyConfiguration config = ChromelyConfiguration.Create() .WithAppArgs(args) .WithHostSize(1000, 600) .WithStartUrl(startUrl); var factory = WinapiHostFactory.Init(); using (var window = factory.CreateWindow(() => new CefSharpBrowserHost(config), "chromely", constructionParams: new FrameWindowConstructionParams())) { window.SetSize(config.HostWidth, config.HostHeight); window.CenterToScreen(); window.Show(); return new EventLoop().Run(window); } } }

工作原理

Chromely基于CefGlue/CefSharp。两者都基于CEF,实现了Chromium。Chromely的方法是创建一个非常轻量级的原生GUI宿主来创建HTML5桌面。

配置

宿主和CEF都是可配置的。可以在配置类中设置宿主属性,如大小、图标。CEF命令行参数和设置也是可配置的。配置细节可以在Chromely Configuration中找到。

运行窗口/宿主

这段代码片段设置了窗口的大小,将窗口居中,显示窗口,并在窗口关闭前无限循环运行窗口。

本文简要介绍了Chromely。Chromely提供了一个简单/轻量级的框架,作为使用ChromiumEmbedded Framework作为基础实现现代HTML5基础GUI的不同方法,而无需通常使用的WPF和WinForms。打算在未来的文章中突出Chromely的功能,但Chromely GitHub网站有更多信息。

感兴趣的要点

Chromely解决了什么问题?这取决于从哪个角度看待它。如果正在开发纯HTML5桌面应用程序,Chromely适合。如果想在需要WPF或WinForms控件的项目中添加/集成HTML5,那么像NeutroniumCore或NanUI这样的替代品可能是更好的选择。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485