C#多端桌面程序(可跨平台)
C#多端桌面程序(可跨平台)
JavaScript Binding(JS 绑定),CefSharp
核心定位
| 项目 | 定位 |
|---|---|
| CefSharp | Windows 桌面 UI 增强工具 —— 在 WinForms/WPF 窗口中嵌入一个“浏览器控件” |
| Chromely | 跨平台桌面应用框架 —— 用 Web 技术(HTML/JS)构建完整桌面应用,C# 作为后端 |
跨平台支持
| 平台 | CefSharp | Chromely |
|---|---|---|
| Windows | ✅ 完美支持(主力平台) | ✅ 支持 |
| macOS | ❌ 不支持(或极难编译) | ✅ 支持(通过 CefGlue.Cocoa) |
| Linux | ⚠️ 实验性支持(社区维护,不稳定) | ✅ 支持(通过 CefGlue.Gtk) |
JavaScript 与 C# 通信方式
| 方式 | CefSharp | Chromely |
|---|---|---|
| 直接对象绑定 | ✅ RegisterJsObject("obj", instance)→ JS 可直接调用 window.obj.method() |
❌ 不支持 |
| REST API 风格 | ❌ 不原生支持(需手动拦截请求) | ✅ 原生支持AddGetRequest("/api/xxx", handler)→ JS 用 fetch('/api/xxx') 调用 |
| 事件回调 | ✅ 支持(通过 IJavascriptCallback) |
✅ 支持(通过自定义事件) |
| 特性 | CefSharp | Chromely |
|---|---|---|
| 主要平台 | Windows | Windows / macOS / Linux |
| UI 模式 | 嵌入 WinForm/WPF | 独立窗口(无 UI 框架依赖) |
| JS ↔ C# 通信 | 直接对象绑定(window.xxx) |
REST API(fetch) |
| 学习曲线 | 需懂 WinForm/WPF | 需懂 Web + .NET 控制台 |
| 适合项目 | Windows 混合应用 | 跨平台 Web 桌面应用 |
| 活跃度 | 高(GitHub 18k+ stars) | 中(GitHub 2k+ stars) |
| 是否开源 | ✅ MIT | ✅ MIT |
| 你的需求 | 推荐 |
|---|---|
| “我有个 WinForm 软件,想加个 Web 界面” | ➡️ CefSharp |
| “我想用 Vue 做一个能在 Mac 和 Windows 上跑的 App” | ➡️ Chromely |
| “我希望 JS 能像调函数一样直接调 C#” | ➡️ CefSharp |
| “我想用 fetch 调本地 API,像做 Web 一样” | ➡️ Chromely |
| 项目 | 结构特点 |
|---|---|
| CefSharp | - 主程序是 WinForm/WPF - HTML 可以内嵌或本地加载 - 适合混合 UI(部分原生 + 部分 Web) |
| Chromely | - 主程序是控制台应用 - 前端完全由 wwwroot/index.html 驱动- 更接近 Electron/Tauri 的开发模式 |

浙公网安备 33010602011771号