前言

因个人兴趣,想着开发一个桌面应用软件,其具体定位是:RPA,相关的商业软件有很多,我了解使用过的几个:UiPath、UiBot、影刀 RPA。

什么是 RPA?其全称为 Robotic Process Automation(机器人流程自动化),简单而言就是让计算机帮助我们执行各种重复性高的工作,对于行政、金融、政府等人力密集型部门,RPA 是很好的助力。

最近几年,RPA 相关赛道的公司融资都很猛,通常都是亿级的融资,因为我之前在公司负责过自动化工具相关的工作,所以一直有关注自动化相关的各种技术,其中 RPA 是我关注的重点,观察下来,各种 RPA 商业应用其技术实现难度不算特别大,虽然其功能很多,但感觉慢慢从基础功能搞,还可以够得着,所以一直有打算开发一个的想法。

这篇文章是第一步,对比一下目前桌面端技术栈,做技术选型。

PS: 熟悉我的朋友知道我之前使用 Electron+Vue 开发过抖直播这个应用(「抖直播」开发技术复盘),但 RPA 软件需要更多系统层的支持,我在调研前,会疑惑 Electron 对系统 API 的兼容情况以及是否有更好的方案,所以还是花时间调研了一下。

当然,做事情前先明确目标:

  • 1. 我希望可以构建出一个跨平台的 RPA 桌面应用,目前多数商业 RPA 软件都局限在 Windows 平台(即只有 exe 安装包)

  • 2. 因为 RPA 需要很多系统级的功能,所以我希望可以比较轻松的试验系统 API

  • 3. 因为时间、精力和能力的问题,我希望可以基于自己已有技术栈之上来开发

常见桌面端开发技术栈

通过微信、QQ 等各种桌面端应用,可以了解目前开发桌面端的主流技术栈,简单总结一下:

  • 1. 使用 C#+WPF 依旧是开发 Windows 桌面应用的主流选择,其优点是:比较成熟,参考资料比较多,其缺点是:性能一般,需要用户主动安装 net 库,虽然很多软件会直接提供下载,然后让用户安装,但依旧是一个坎,此外 WPF 只支持 Windows 平台,与目标不符。

  • 2.C+++QT 也是很多人的选择,QT 是否成熟,但比较重,适合开发大型应用,对于个人开发者而言,效率不高,此外我除了大学时用 C++ 参加过算法比赛外,很少再使用过。

  • 3. 在 Windows 平台下,国内多个大众应用,如微信、QQ、百度网盘都使用了 C+++ 类duilib 的形式进行开发(类 duilib 的意思是,基于开源的 duilib 这个 Windows GUI 进行了二开),这种方式出的桌面应用,性能较高而且包的体积下,是专业团队比较好的选择,但不适合我这个项目,因为 RPA 并不要求太高的性能,而且我希望一份代码可以跨平台使用

  • 4. 影刀等商业 RPA 软件使用了 C+++CEF 的形式开发,CEF(Chromium Embedde FrameWork)与 Electron 定位类似,基于 Chromium,让开发者可以使用前端技术栈来构建桌面应用,跨平台,就是 CEF 资料比较少,还需要 C++ 等知识,因为是对标软件使用的技术,所以加入候选技术栈。

  • 5.VScode、Github 桌面端等使用 Electron 开发,与 CEF 类似,Electron 让我们使用前端技术便可以开发桌面应用,其优点是:资料很多、开发效果比较 OK,缺点是慢,而且对于需要比较多系统 API 的兼容因没有对标软件,所以不太好确定。

  • 6.Flutter 是 Google 推出了全平台开发框架,支持 windows、macos、android、ios 甚至是汽车中的系统,调研下来的结论是,Flutter 对跨平台的支持还非常早期,很多系统层的 API 并不支持,生态也刚起步,与 npm 比不了,很多东西可能要自己造,所以也不考虑。

CEF 与 Electron 的比较

CEF github: https://github.com/chromiumembedded/cef (1.6k star) Electron github: https://github.com/electron/electron (101k star)

从 Github 上看,Electron 的活跃度远高于 CEF,包括:版本更新频率(解决 issue 的速度、新功能的开发速度)、社群活跃度(资料丰富度)

那为啥有些商业产品要选择 CEF 呢?其优势在哪?对目前想开发的项目来说,是否重要?

相比于 Electron,CEF 支持 Windows XP 系统,提供的很多比较底层的 C++ API 方便你使用系统级能力,而且也很方便与 Native UI 框架融合使用,实现更近似本地应用的应用。

简单而言,使用 CEF,相比于 Electron 可以更轻松的做的更像原生软件,除了不支持 Windows XP 这个硬伤,Electron 其实可以通过 C++ 的方式调用更多系统级的原生能力,但这要求你对 Electron 框架源码比较熟悉,当然也要会写 C++ 代码。

那 Windows XP 系统目前占用量大吗?查阅了一下,Windows XP 在 2020 年,市场占有率已经低于 1%,所以我还是偏向于选择 Electron 进行 RPA 桌面应用的开发。

所以剩余的问题,便是加强对 Electron 的把控感。

Electron 开发需要考虑的问题

  • 1. 因为 Electron 本身架构的原因,Electron 打出来的包会比较大,但就目前个人电脑的性能而言,也不算什么特别大的问题,就像现在手机游戏一样,反正手机性能过剩,一些比较难搞的优化直接就放弃了,但在开发时,还是尽量精简 require,从而让 Electron 打出的包小一点。

  • 2.Electron 对源码是没有保护的,即你开发的软件,很容易别人逆向分析,有几个解决方案,除了方案 c,都可以逆向破解,这些操作只是让可破解的人少一点而已(当然,最安全的方式是你的软件没有任何价值,放到 Github 都没人 fork)

    • a. 使用 C++ 编写核心逻辑,发布时,C++ 是编译后的二进制文件

    • b. 使用 wasm 编写核心逻辑,发布时,也是二进制内容

    • c. 核心逻辑放在后端

    • d. 使用 bytenode 将代码转成字节码

  • 3.Electron 对系统层能力的使用可能比较弱,此时需要求助 Python、C++、C# 等语言,通过 ffi-napi 库可以让 Node.js 使用 C++ dll,通过 electron-edge-js 库可以让 Node.js 使用 C# dll

参考

  • 开发桌面应用是用 flutter 还是用 electron (https://www.zhihu.com/question/390186321)

  • macOS 上 Flutter Desktop 与 Electron 的性能对比 (https://juejin.cn/post/7018450473292136456)

  • 对比跨平台客户端方案:Electron 和 CEF (https://blog.csdn.net/caperxi/article/details/115901659)

  • 桌面端框架 Electron 使用问题整理和总结 (https://juejin.cn/post/6844904072743501831)

桌面应用开发技术对比相关推荐

  1. QT跨平台桌面软件开发技术汇总

    QT国产化和跨平台一直推进,从去年到今年已经经历了3个QT小项目,本人也从visual studio IDE   切换到 Visual Studio  +  QT  IDE的跨平台大军之中,独立承担项 ...

  2. 移动端App开发的三种开发技术对比

    目前来说主流的App开发方式有三种:Native App .Web App.Hybird App.下面就由广州品向科技给大家分析一下这三种App开发方式的优劣对比: 一 :Native App 即 原 ...

  3. windows桌面程序开发

    对于综合数据管理平台,目前是B/S结构,数据为即时传递,很依赖网络.桌面应用的开发可以避免一些由于网络带来的问题,例如数据的提交.经过调研学习,目前我发现共7种桌面应用开发技术.其中WPF,QT,Du ...

  4. 跨平台的桌面应用开发,技术框架选择

    跨平台的桌面应用开发,技术框架选择 个人的需求: 能够快速开发:毕竟生产力很重要. 打包后的体积不能太大:用户大部分是普通客户,不会安装基础环境. 跨平台:日常主要还是用mac做为主力开发机,所以强烈 ...

  5. 技术合伙人必备攻略---app开发技术栈调研--多种方案对比--uniapp学习路线

    app开发技术方案对比 app开发主要有几种技术方案如下: 原生开发 原生开发简介 原生(native)开发从定义上来说 一般是指用原生开发语言开发,原生开发语言就是开发整个系统时使用的编程语言. 对 ...

  6. windows平台桌面开发技术

    MFC 传统的windows平台win32应用开发技术 最大的缺点:设计和代码不能分离,不符合现在的主流开发技术 DirectUI 目前windows平台主流的开发技术. 开源类库duilib. WP ...

  7. vue引用electron_前端跨平台桌面开发技术:Electron 快速起步

    嗨,我是勾勾.今天要介绍的是 Electron 跨平台桌面应用开发. Electron(https://electronjs.org/)是一个运行平台,它能够让我们通过 HTML + CSS + Ja ...

  8. 几种移动开发技术的比较和选型

    为什么80%的码农都做不了架构师?>>>    首发:个人博客,更新&纠错&回复 移动开发很火,移动开发技术很多.都有哪些技术?相互对比如何?怎样选择? 简单列了个表 ...

  9. Vue 3 桌面应用开发(文末附视频)

    在正式开始之前,我想先直接"输出"一些背景信息,既能阐明我的观点,也希望可以坚定你学习本小册的决心. 首先,桌面应用开发在未来一定会大放异彩,桌面应用相对于移动应用来说优势非常明显 ...

  10. 通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core? .Net Web开发技术栈...

    通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core? 什么是.NET?什么是.NET Framework?本文将从上往下,循序渐进的介绍一系列相关.NET的概念,先 ...

最新文章

  1. 树莓派开发7-Pi摄像头+mjpg-streamer
  2. phpstudy升级mysql之后,修改配置文件无效的问题
  3. [AI开发]目标跟踪之行为分析
  4. tableau实战系列(二十八)-以可视化的方式打开关联分析算法购物篮分析(Market Basket Analysis)
  5. 02 docker的基本用法
  6. linux中配置phpcms v9 中的sphinx
  7. 《飞鸽传书》把写程序和文学创作相提并论
  8. QML笔记-使用connect界面数据交互(qml中Designer使用)
  9. cmd使用conda建立python虚拟环境
  10. java swing获得焦点_Java Swing TextArea 滚动条并获取焦点
  11. selenium下载和安装
  12. @DependsOn或depends-on配置的使用
  13. 开学季,如何申请免费学生云服务器
  14. altera系列fifo和ram
  15. 数据库的基本概念与组成
  16. Qt编译报错:usr/include/c++/4.9/bits/stl_relops.:67: Parse error at “std“的解决办法
  17. CureApp高血压治疗App:2021 ESC大会发布在知名心血管期刊《欧洲心脏杂志》上发表的临床试验结果
  18. Vue生命周期及其钩子函数
  19. 移动开发photoswipe图片预览插件使用
  20. 蔡崇信:我为什么敢放弃580万年薪,跟着马云拿500块工资?

热门文章

  1. 烟搭桥,酒开路?这届年轻人可能宁愿自断后路
  2. 手机银行业务应用中的关键技术
  3. Mac安装安卓虚拟机 - Android Studio运行apk安装包
  4. linux磁盘满了删除docker文件夹,Docker磁盘空间使用分析与清理的方法
  5. java 历届试题 农场阳光 蓝桥杯1040
  6. [渝粤教育] 北京化工大学 自然辩证法概论 参考 资料
  7. 使用while循环实现xyz+yzz=532
  8. Cocos2d-x 3.4 初体验——安装教程
  9. ISE UCF 写法:(转载)
  10. 已解决-改变macOS和Windows双系统的默认启动顺序