上位机开发选型包括原生技术栈和混合技术栈,所谓混合应用是指基于原生+HTML同时使用开发的应用,涉及的技术框架有Electron、WinForms、WPF、Flutter、qt,另外还有套壳模式下是使用Chromium插件还是Webview2的分析。
一、各类框架优劣势对比
- 浅显易懂:WinForms、WPF和Electron的区别和优缺点
WinForms(Windows Forms)是Microsoft .NET Framework的一部分,使用C#或VB.NET编写,主要用于Windows平台的应用程序开发。
WPF(Windows Presentation Foundation)也是Microsoft .NET Framework的一部分,使用XAML和C#(或VB.NET)编写,主要用于Windows平台的富客户端应用程序开发。
Electron是一个基于Web技术的开发框架,使用HTML、CSS和JavaScript编写,可以用于跨平台的桌面应用程序开发,支持Windows、macOS和Linux等操作系统。
WinForms的优点:
- 简单易学:WinForms使用传统的窗体和控件模型,易于学习和使用。
- 良好的集成性:WinForms是.NET Framework的一部分,可以与其他.NET技术和组件无缝集成。
- 良好的性能:WinForms应用程序通常具有较低的资源消耗和较快的响应速度。
WinForms的缺点:
- 限制的UI自定义:WinForms提供的UI控件较少,自定义和样式化的能力有限。
- 缺乏现代化的UI特性:WinForms的UI设计风格较为传统,缺乏现代化的UI特性和交互效果。
WPF的优点:
- 强大的UI自定义:WPF使用XAML描述界面,提供丰富的自定义和样式化能力,可以创建现代化和富有创意的用户界面。
- 数据绑定和MVVM支持:WPF内置了强大的数据绑定功能,支持MVVM(Model-View-ViewModel)模式,使应用程序的开发更加灵活和可维护。
- 矢量图形和动画效果:WPF支持矢量图形和动画效果,可以创建高质量的可视化效果。
WPF的缺点:
- 学习曲线较陡峭:WPF的学习曲线相对较陡峭,需要掌握XAML和一些复杂的概念。
- 较高的资源消耗:由于WPF使用自己的渲染引擎,相比WinForms,WPF应用程序通常具有较高的资源消耗。
Electron的优点:
- 跨平台支持:Electron可以将应用程序打包为可在不同操作系统上运行的可执行文件,提供了跨平台的能力。
- 使用Web技术:Electron使用HTML、CSS和JavaScript开发应用程序,可以利用丰富的Web技术和生态系统资源。
- 社区活跃:Electron拥有活跃的开发社区,有大量的插件和工具可供使用。
Electron的缺点:
- 较大的应用程序体积:由于Electron需要打包包含Chromium浏览器引擎的应用程序,因此应用程序的体积较大。
- 较高的资源消耗:由于Electron使用Chromium浏览器引擎,相比传统的桌面应用程序,Electron应用程序通常具有较高的资源消耗。
转载自:https://baijiahao.baidu.com/s?id=1785952782307518905\&wfr=spider\&for=pc
2.Electron VS Flutter非全面比较,看看哪个阵营适合你
Electron是一个基于Chromium和Node.js的开源框架,允许使用Web技术(HTML、CSS和JavaScript)构建跨平台桌面应用程序。它使用主进程和渲染进程的架构,其中主进程运行Node.js环境,负责系统级操作,而渲染进程运行在Chromium中,负责显示应用程序的用户界面。
Flutter是一个由Google开发的开源框架,用于构建高性能、跨平台的移动应用程序。它使用Dart语言编写,并提供了自己的渲染引擎和组件库,无需依赖操作系统的原生控件。Flutter应用程序通过单一的渲染线程进行渲染,并具有自己的布局和绘制引擎。
开发语言
Electron使用Web技术栈,主要使用HTML、CSS和JavaScript进行开发。开发者可以使用众多的Web开发工具、框架和库来构建应用程序。
Flutter使用Dart语言进行开发,Dart是一种面向对象的编程语言,具有强大的静态类型检查和JIT/AOT编译器。Dart语言相对较新,但它易于学习,具有良好的性能和可读性。
转载自:https://www.zhihu.com/tardis/bd/art/662803053?source_id=1001
3.上位机用QT还是winform/wpf好?
QT 是一个跨平台的 C++ 应用程序框架,它提供了丰富的 UI 组件和功能强大的网络通信、数据库操作等模块。QT 的优势在于其良好的跨平台性能,可以方便地部署在 Windows、Linux、macOS 等不同操作系统上。此外,QT 还具有强大的 UI 设计能力,可以轻松实现各种复杂的界面效果。但是,QT 的缺点也比较明显,那就是开发难度相对较高,需要开发者具备一定的 C++ 编程基础。
WinForm 是微软 .NET Framework 平台下的一个桌面应用程序开发框架,而 WPF 则是 Windows Presentation Foundation,是微软新一代的 UI 框架。WinForm/WPF 的优势在于开发难度较低,容易上手,特别是对于已经熟悉 C# 语言的程序员来说更加便捷。此外,WinForm/WPF 也具有丰富的 UI 组件和良好的性能。但是,WinForm/WPF 的跨平台能力相对较弱,主要支持 Windows 操作系统。
转载自:https://baijiahao.baidu.com/s?id=1779606451637272769\&wfr=spider\&for=pc
二、Chromium还是Webview2?
讨论Chromium还是Webview2,基本都是基于WPF或Winform套壳方案,Webview2本身是基于Chromium开发。
对于wpf的集成web,cefsharp和webview2如何选择 ?
- CefSharp:
-
CefSharp是一个基于Chromium的.NET封装库,提供了完整的Web浏览器控件。它具有强大的功能和灵活性,支持HTML5、JavaScript、CSS等现代Web技术。
-
CefSharp相对来说更成熟,使用较为广泛,拥有丰富的文档和社区支持。
-
使用CefSharp需要将其作为第三方库引用到项目中,并且配置和使用较为复杂,需要处理跨平台的依赖和兼容性问题。
- WebView2:
-
WebView2是微软官方推出的WPF和WinForms的Web浏览器控件,基于新一代的Microsoft Edge浏览器内核(Chromium)。
-
WebView2提供了与现代Web标准完全兼容的功能,同时也受益于Edge浏览器的稳定性和性能优化。
-
使用WebView2只需添加一个NuGet包引用,并在应用程序中进行简单的配置。由于是微软官方支持的技术,因此与WPF平台的兼容性更好。
选择使用CefSharp还是WebView2取决于您的需求和优先考虑的因素:
-
如果您对自定义性和灵活性有更高的要求,或者需要使用特定的Chromium版本,那么选择CefSharp可能更适合。特别是在跨平台开发的情况下,CefSharp提供了更好的跨平台支持。
-
如果您更注重简单的集成过程、与WPF平台更好的兼容性以及由微软官方支持的解决方案,那么WebView2可能是更好的选择。随着WebView2的不断更新和改进,它也将成为更加强大和可靠的解决方案。
转载自:https://www.jianshu.com/p/3430f97bbe1
三、写在最后
以上技术框架都有大咖加持,不代表就没有小卡拉米的发挥空间。首先定位不同,我定位的是替代物联网采集和控制上位机开发的工作量。这里除了界面使用H5之前,需要一套物联网控制的js接口,比如RFID、地磅秤、温湿度传感器、警示灯等,并且支持原生的二次开发能力。另外目前是支持Windows系统,将来支持Android或者鸿蒙系统,对上层H5开发的应用不受影响,可以跨平台使用。
其模式与uni app开发的类似(在考虑是否直接支持uniapp的html5 plus底层接口,感觉工作量太大,而且定位还是有所不同),在各类平台的套壳使用原生技术开发,再内嵌一个webview发布一套js api支持通用UI层调用。
这样既支持物联网项目快速开发,又保留了web开发的界面优势。