自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

桌面應(yīng)用開發(fā)技術(shù)對(duì)比,你明白了嗎?

開發(fā) 前端
什么是 RPA?其全稱為 Robotic Process Automation(機(jī)器人流程自動(dòng)化),簡(jiǎn)單而言就是讓計(jì)算機(jī)幫助我們執(zhí)行各種重復(fù)性高的工作,對(duì)于行政、金融、政府等人力密集型部門,RPA 是很好的助力。

前言

因個(gè)人興趣,想著開發(fā)一個(gè)桌面應(yīng)用軟件,其具體定位是:RPA,相關(guān)的商業(yè)軟件有很多,我了解使用過(guò)的幾個(gè):UiPath、UiBot、影刀 RPA。

什么是 RPA?其全稱為 Robotic Process Automation(機(jī)器人流程自動(dòng)化),簡(jiǎn)單而言就是讓計(jì)算機(jī)幫助我們執(zhí)行各種重復(fù)性高的工作,對(duì)于行政、金融、政府等人力密集型部門,RPA 是很好的助力。

最近幾年,RPA 相關(guān)賽道的公司融資都很猛,通常都是億級(jí)的融資,因?yàn)槲抑霸诠矩?fù)責(zé)過(guò)自動(dòng)化工具相關(guān)的工作,所以一直有關(guān)注自動(dòng)化相關(guān)的各種技術(shù),其中 RPA 是我關(guān)注的重點(diǎn),觀察下來(lái),各種 RPA 商業(yè)應(yīng)用其技術(shù)實(shí)現(xiàn)難度不算特別大,雖然其功能很多,但感覺慢慢從基礎(chǔ)功能搞,還可以夠得著,所以一直有打算開發(fā)一個(gè)的想法。

這篇文章是第一步,對(duì)比一下目前桌面端技術(shù)棧,做技術(shù)選型。

PS: 熟悉我的朋友知道我之前使用 Electron+Vue 開發(fā)過(guò)抖直播這個(gè)應(yīng)用,但 RPA 軟件需要更多系統(tǒng)層的支持,我在調(diào)研前,會(huì)疑惑 Electron 對(duì)系統(tǒng) API 的兼容情況以及是否有更好的方案,所以還是花時(shí)間調(diào)研了一下。

當(dāng)然,做事情前先明確目標(biāo):

  • 我希望可以構(gòu)建出一個(gè)跨平臺(tái)的 RPA 桌面應(yīng)用,目前多數(shù)商業(yè) RPA 軟件都局限在 Windows 平臺(tái)(即只有 exe 安裝包)。
  • 因?yàn)?RPA 需要很多系統(tǒng)級(jí)的功能,所以我希望可以比較輕松的試驗(yàn)系統(tǒng) API。
  • 因?yàn)闀r(shí)間、精力和能力的問(wèn)題,我希望可以基于自己已有技術(shù)棧之上來(lái)開發(fā)。

常見桌面端開發(fā)技術(shù)棧

通過(guò)微信、QQ 等各種桌面端應(yīng)用,可以了解目前開發(fā)桌面端的主流技術(shù)棧,簡(jiǎn)單總結(jié)一下:

1.使用 C#+WPF 依舊是開發(fā) Windows 桌面應(yīng)用的主流選擇,其優(yōu)點(diǎn)是:比較成熟,參考資料比較多,其缺點(diǎn)是:性能一般,需要用戶主動(dòng)安裝 net 庫(kù),雖然很多軟件會(huì)直接提供下載,然后讓用戶安裝,但依舊是一個(gè)坎,此外 WPF 只支持 Windows 平臺(tái),與目標(biāo)不符。

2.C+++QT 也是很多人的選擇,QT 是否成熟,但比較重,適合開發(fā)大型應(yīng)用,對(duì)于個(gè)人開發(fā)者而言,效率不高,此外我除了大學(xué)時(shí)用 C++ 參加過(guò)算法比賽外,很少再使用過(guò)。

3.在 Windows 平臺(tái)下,國(guó)內(nèi)多個(gè)大眾應(yīng)用,如微信、QQ、百度網(wǎng)盤都使用了 C+++ 類duilib 的形式進(jìn)行開發(fā)(類 duilib 的意思是,基于開源的 duilib 這個(gè) Windows GUI 進(jìn)行了二開),這種方式出的桌面應(yīng)用,性能較高而且包的體積下,是專業(yè)團(tuán)隊(duì)比較好的選擇,但不適合我這個(gè)項(xiàng)目,因?yàn)?RPA 并不要求太高的性能,而且我希望一份代碼可以跨平臺(tái)使用

4.影刀等商業(yè) RPA 軟件使用了 C+++CEF 的形式開發(fā),CEF(Chromium Embedde FrameWork)與 Electron 定位類似,基于 Chromium,讓開發(fā)者可以使用前端技術(shù)棧來(lái)構(gòu)建桌面應(yīng)用,跨平臺(tái),就是 CEF 資料比較少,還需要 C++ 等知識(shí),因?yàn)槭菍?duì)標(biāo)軟件使用的技術(shù),所以加入候選技術(shù)棧。

5.VScode、Github 桌面端等使用 Electron 開發(fā),與 CEF 類似,Electron 讓我們使用前端技術(shù)便可以開發(fā)桌面應(yīng)用,其優(yōu)點(diǎn)是:資料很多、開發(fā)效果比較 OK,缺點(diǎn)是慢,而且對(duì)于需要比較多系統(tǒng) API 的兼容因沒(méi)有對(duì)標(biāo)軟件,所以不太好確定。

6.Flutter 是 Google 推出了全平臺(tái)開發(fā)框架,支持 windows、macos、android、ios 甚至是汽車中的系統(tǒng),調(diào)研下來(lái)的結(jié)論是,F(xiàn)lutter 對(duì)跨平臺(tái)的支持還非常早期,很多系統(tǒng)層的 API 并不支持,生態(tài)也剛起步,與 npm 比不了,很多東西可能要自己造,所以也不考慮。

CEF 與 Electron 的比較

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

從 Github 上看,Electron 的活躍度遠(yuǎn)高于 CEF,包括:版本更新頻率(解決 issue 的速度、新功能的開發(fā)速度)、社群活躍度(資料豐富度)。

那為啥有些商業(yè)產(chǎn)品要選擇 CEF 呢?其優(yōu)勢(shì)在哪?對(duì)目前想開發(fā)的項(xiàng)目來(lái)說(shuō),是否重要?

相比于 Electron,CEF 支持 Windows XP 系統(tǒng),提供的很多比較底層的 C++ API 方便你使用系統(tǒng)級(jí)能力,而且也很方便與 Native UI 框架融合使用,實(shí)現(xiàn)更近似本地應(yīng)用的應(yīng)用。

簡(jiǎn)單而言,使用 CEF,相比于 Electron 可以更輕松的做的更像原生軟件,除了不支持 Windows XP 這個(gè)硬傷,Electron 其實(shí)可以通過(guò) C++ 的方式調(diào)用更多系統(tǒng)級(jí)的原生能力,但這要求你對(duì) Electron 框架源碼比較熟悉,當(dāng)然也要會(huì)寫 C++ 代碼。

那 Windows XP 系統(tǒng)目前占用量大嗎?查閱了一下,Windows XP 在 2020 年,市場(chǎng)占有率已經(jīng)低于 1%,所以我還是偏向于選擇 Electron 進(jìn)行 RPA 桌面應(yīng)用的開發(fā)。

所以剩余的問(wèn)題,便是加強(qiáng)對(duì) Electron 的把控感。

Electron 開發(fā)需要考慮的問(wèn)題

1.因?yàn)?Electron 本身架構(gòu)的原因,Electron 打出來(lái)的包會(huì)比較大,但就目前個(gè)人電腦的性能而言,也不算什么特別大的問(wèn)題,就像現(xiàn)在手機(jī)游戲一樣,反正手機(jī)性能過(guò)剩,一些比較難搞的優(yōu)化直接就放棄了,但在開發(fā)時(shí),還是盡量精簡(jiǎn) require,從而讓 Electron 打出的包小一點(diǎn)。

2.Electron 對(duì)源碼是沒(méi)有保護(hù)的,即你開發(fā)的軟件,很容易別人逆向分析,有幾個(gè)解決方案,除了方案 c,都可以逆向破解,這些操作只是讓可破解的人少一點(diǎn)而已(當(dāng)然,最安全的方式是你的軟件沒(méi)有任何價(jià)值,放到 Github 都沒(méi)人 fork)。

  • a. 使用 C++ 編寫核心邏輯,發(fā)布時(shí),C++ 是編譯后的二進(jìn)制文件
  • b. 使用 wasm 編寫核心邏輯,發(fā)布時(shí),也是二進(jìn)制內(nèi)容
  • c. 核心邏輯放在后端
  • d. 使用 bytenode 將代碼轉(zhuǎn)成字節(jié)碼

3.Electron 對(duì)系統(tǒng)層能力的使用可能比較弱,此時(shí)需要求助 Python、C++、C# 等語(yǔ)言,通過(guò) ffi-napi 庫(kù)可以讓 Node.js 使用 C++ dll,通過(guò) electron-edge-js 庫(kù)可以讓 Node.js 使用 C# dll

參考

  • 開發(fā)桌面應(yīng)用是用 flutter 還是用 electron

https://www.zhihu.com/question/390186321

  • macOS 上 Flutter Desktop 與 Electron 的性能對(duì)比

https://juejin.cn/post/7018450473292136456

  • 對(duì)比跨平臺(tái)客戶端方案:Electron 和 CEF

https://blog.csdn.net/caperxi/article/details/115901659

  • 桌面端框架 Electron 使用問(wèn)題整理和總結(jié)

https://juejin.cn/post/6844904072743501831

責(zé)任編輯:武曉燕 來(lái)源: 懶編程
相關(guān)推薦

2022-12-30 08:35:00

2022-10-10 18:38:56

inert屬性鍵盤

2023-12-08 08:38:15

EventLoopAPI瀏覽器

2022-04-07 11:15:22

PulseEventAPI函數(shù)

2023-12-28 08:43:28

前端算法搜索

2024-01-08 20:05:32

2022-10-19 08:19:32

動(dòng)態(tài)基線預(yù)警

2023-06-14 08:15:34

算法合并操作Winner

2022-10-24 20:25:40

云原生SpringJava

2023-12-06 08:01:03

CSSPostCSS

2024-03-27 13:33:00

MySQLInnoDB事務(wù)

2022-10-08 08:09:13

MGRGreatSQL事務(wù)

2023-01-02 23:58:03

2015-09-18 09:17:06

數(shù)據(jù)分析

2023-11-06 07:37:01

函數(shù)式插槽React

2022-06-22 07:52:03

cookieoptionsmerge

2023-04-04 08:42:30

IT成本技術(shù)堆

2024-01-30 09:21:01

deltaFifo機(jī)制apiServer

2023-06-09 07:18:03

開源數(shù)據(jù)庫(kù)

2022-05-04 08:38:32

Netty網(wǎng)絡(luò)框架
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)