在当今的软件开发领域,跨平台桌面应用程序的需求日益增长。Electron框架因其能够构建跨平台的桌面应用程序而广受欢迎。然而,对于.NET/.NET Core开发者来说,Electron可能并不是唯一的选择。本文将介绍一个名为Chromely的框架,它为.NET/.NET Core开发者提供了一个构建HTML5桌面应用程序的替代方案,而无需使用WinForms或WPF。
在开发一个WPF项目时,一直在寻找一种方法将SugarCRM报告集成到项目中。Electron是一个吸引人的选择,但发现了CefSharp,尽管它有一些限制,比如只能使用位图渲染而不是纯HTML渲染。最终,决定创建一个不使用WPF的解决方案,并决定与社区分享。
是的,可以这么说。Electron是真正的跨平台框架,而Chromely目前只支持Windows和Linux。Chromely专为.NET/.NET Core开发设计。与Electron相比,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这样的替代品可能是更好的选择。