如何評(píng)價(jià)一個(gè)低代碼平臺(tái)?分析數(shù)十家國(guó)內(nèi)外低代碼平臺(tái)得出的經(jīng)驗(yàn)
低代碼格局和來龍去脈
低代碼產(chǎn)品來源主要有三個(gè)渠道,如果不算廣義的CRM、ERP系產(chǎn)品(Wix、WordPress、Odoo…這些),這些產(chǎn)品構(gòu)成了現(xiàn)在低代碼的主要格局。
渠道一:從MADP/MXDP演進(jìn)而來:
MADP代表“移動(dòng)應(yīng)用開發(fā)平臺(tái)”,其實(shí)就是做原生APP可視化開發(fā)的平臺(tái);MXDP代表“混合多體驗(yàn)開發(fā)平臺(tái)”,實(shí)際上就是在移動(dòng)原生APP開發(fā)平臺(tái)基礎(chǔ)上增加了對(duì)Web App的支持?,F(xiàn)在有了GPT,我直接把GPT4的描述寫在下面,大家就很清楚了。
?
大家會(huì)發(fā)現(xiàn)最主要的廠商都在上面… Mendix Outsystems PowerApps 等。
這類低代碼產(chǎn)品的特定也非常清晰:多數(shù)做企業(yè)服務(wù)(會(huì)有一套完整系統(tǒng)安裝到企業(yè)內(nèi)部),有相對(duì)復(fù)雜的IDE,功能上也相對(duì)比較完整,研發(fā)的周期也比較長(zhǎng),大部分都在10年以上。這類型產(chǎn)品,主要其實(shí)也是給研發(fā)人員使用的,或者他們叫“CitizenDeveloper”,但是真正的業(yè)務(wù)人員很難學(xué)會(huì)。
渠道二:之前做“SaaS”、“BPM”以及“Bi”為主的廠商
這里面比較有名的是 ZoHo Creator、Salesforce、Airtable、AppShee、Appian 、Tableau、PowerBi等,國(guó)內(nèi)有很多廠商都是從這個(gè)領(lǐng)域介入低代碼研發(fā)的。這類型演變過來的低代碼產(chǎn)品,往往場(chǎng)景比較明確(主要是“BI場(chǎng)景”、“工作流BPM場(chǎng)景”、“在線表格場(chǎng)景”、“在線表單場(chǎng)景”這四種),通常是多個(gè)“引擎”和“模型”驅(qū)動(dòng)的,基本都可以給業(yè)務(wù)人員直接使用,感覺上就像是很多SaaS 用戶 權(quán)限管理,開發(fā)全新場(chǎng)景時(shí),靈活性會(huì)受到一些限制。
渠道三:也是重點(diǎn)想介紹的——代碼生成平臺(tái)
這類平臺(tái)國(guó)內(nèi)比較少,而且主要專注于“通用程序開發(fā)”,是一種底層通用技術(shù)(上面提到的更傾向于“應(yīng)用開發(fā)框架”),因此也不會(huì)限制只用于“企業(yè)服務(wù)”。
國(guó)外的代碼生成平臺(tái)主要包括以下這些:
前端代碼生成平臺(tái):WebFlow Wappler PineGrow ReactStudio
后端代碼生成平臺(tái):Backendless Firebase (by Google) Stapi
數(shù)據(jù)庫(kù)代碼生成平臺(tái):Prisma DbDesigner SQLDBM QuickDBD
具有統(tǒng)一的前后臺(tái)代碼生成能力的就比較少了,主要有: Bubble Appgyver (By SAP) Retool ,國(guó)內(nèi)就只有 iVX 一家。
有了這些基礎(chǔ)知識(shí),那下面介紹起來就比較輕松了。接下來….
如何評(píng)價(jià)低代碼平臺(tái)?
我列出了最核心的三項(xiàng),以及我覺得重要的評(píng)分項(xiàng),供大家參考。
核心能力一:功能和性能 ?(詳細(xì)見后面列表)
(大白話就是:不寫代碼能做什么?做得怎么樣?)這個(gè)重要性不言而喻,有些低代碼平臺(tái)說自己“接代碼”什么都能實(shí)現(xiàn),這句話當(dāng)沒說。核心還是一句,不寫代碼能做什么!這個(gè)地方我覺得可以補(bǔ)充一下,就是“低代碼編程”和“代碼編程”的關(guān)系,我們覺得最佳實(shí)踐就是“充分非必要!”,即“什么代碼都可以用,但是不用也都行”。
核心能力二:是否鎖定 ?
我先解釋一下,什么叫不鎖定?最佳狀態(tài)就是“和手寫代碼一個(gè)樣”,最好“調(diào)試方式和代碼管理”都可以繼承。這里面分幾個(gè)層面:例如“低代碼平臺(tái)”生成的代碼可以被現(xiàn)有的代碼形式“直接接受”,意味著原有的開發(fā)項(xiàng)目直接可以以插入的方式使用。另外,以前端為例,可以直接在低代碼平臺(tái)中直接導(dǎo)入以前開發(fā)“組件或代碼”那是更好。其實(shí)開發(fā)者不一定需要在“二開”的時(shí)候,直接修改“低代碼平臺(tái)”導(dǎo)出的源代碼(如果可以導(dǎo)出),而是需要這種“修改的能力”!這是一種“安全感”,這一點(diǎn)其實(shí)非常重要,當(dāng)然難度也是最大的。
坦率的講,想在絕大多數(shù)的低代碼平臺(tái)都存在鎖定用戶的問題,即無法實(shí)現(xiàn)“應(yīng)用代碼導(dǎo)出和獨(dú)立部署”,有些是可以打包導(dǎo)出一個(gè)加殼文件,最后還是要導(dǎo)入到特定環(huán)境中運(yùn)行的。大概如下圖所示:
情形一:所有應(yīng)用都在框架內(nèi)部,無法導(dǎo)出獨(dú)立部署
?
情形二:應(yīng)用可以導(dǎo)出,例如導(dǎo)出成 mpk或osp文件,但是只能導(dǎo)入到自身平臺(tái)環(huán)境運(yùn)行
?
核心能力三:產(chǎn)品整合能力 ?
我研究過很多低代碼產(chǎn)品,很多產(chǎn)品從“開源”魔改而來,“功能堆疊和拼接感”嚴(yán)重,看上去吧好像這個(gè)也有,那個(gè)也支持,但是用起來完全不是那么一會(huì)事兒。說白了就是“其實(shí)開發(fā)一個(gè)應(yīng)用有可能比寫代碼還費(fèi)勁”。從一個(gè)側(cè)面反映就是,窗口數(shù)量眾多、操作層級(jí)特別深、邏輯和管理混亂,有些邏輯控制甚至有多個(gè)入口。道理其實(shí)也很簡(jiǎn)單,現(xiàn)在無論大廠小廠要開發(fā)一個(gè)產(chǎn)品時(shí),先就找對(duì)應(yīng)的開源產(chǎn)品和框架,然后開始組裝和拼接,但是其實(shí)開源產(chǎn)品可能設(shè)計(jì)初衷并不是為了“低代碼”,而且拼接越多,整個(gè)產(chǎn)品就越笨重,越難以駕馭。
以下是我總結(jié)的低代碼產(chǎn)品的基本評(píng)分項(xiàng),并以 iVX 為例進(jìn)行了描述。有什么新的評(píng)分項(xiàng),大家還可以補(bǔ)充,我們不整虛的,行就是行,不行就是不行,希望低代碼生態(tài)可以越來越健康。
低代碼能力評(píng)分項(xiàng)(詳細(xì)版,附帶iVX評(píng)價(jià)結(jié)果)
評(píng)價(jià)項(xiàng) | 評(píng)價(jià)說明 | iVX產(chǎn)品評(píng)價(jià)結(jié)果 |
平臺(tái)會(huì)鎖定用戶嗎? | 分幾種情況:1. 直接生成外部環(huán)境可以運(yùn)行源代碼,無鎖定;2. 生成只能在平臺(tái)內(nèi)部環(huán)境運(yùn)行的應(yīng)用,鎖定;3. 平臺(tái)生成應(yīng)用,應(yīng)用可以以某種平臺(tái)特定格式導(dǎo)出,但是必須在平臺(tái)環(huán)境才能導(dǎo)入,為部分鎖定。例如mendix/outsystems 就輸入部分鎖定。Power Apps也只能在Azure中運(yùn)行也是這種部分鎖定。 | 可以完整導(dǎo)出前端、后臺(tái)、數(shù)據(jù)庫(kù)代碼,可以在任何環(huán)境運(yùn)行,無鎖定 |
平臺(tái)收費(fèi)方式? | 分幾種情況或組合:1. 平臺(tái)免費(fèi),使用使用云計(jì)算服務(wù)時(shí),收取云計(jì)算費(fèi)用;2. 根據(jù)最終應(yīng)用的用戶數(shù)量進(jìn)行收費(fèi);例如一個(gè)應(yīng)用最終是100人還是100萬人,價(jià)格差距很大;這種往往是上面提到的“鎖定”或“部分鎖定”模式造成的;3. 根據(jù)開發(fā)者數(shù)量進(jìn)行收費(fèi);4. 根據(jù)開發(fā)的應(yīng)用數(shù)量和類型進(jìn)行收費(fèi); | IDE和平臺(tái)免費(fèi),如果使用到了云計(jì)算,云計(jì)算收費(fèi);如果不使用云計(jì)算,應(yīng)用可以免費(fèi)導(dǎo)出平臺(tái),自行部署; |
支持整個(gè)平臺(tái)支持對(duì)外部署? | 這里不是指平臺(tái)內(nèi)部應(yīng)用導(dǎo)出部署,而是說整個(gè)平臺(tái)在公網(wǎng)或局域網(wǎng)內(nèi)部部署 | 支持 |
應(yīng)用導(dǎo)出支持的部署方式? | 例如包括:?jiǎn)螜C(jī)部署(Linux/Windows)、云端虛擬機(jī)部署、Docker K8S部署 | 都支持 |
是否支持導(dǎo)出應(yīng)用一鍵部署? | 例如會(huì)幫用戶安裝MySQL和redis如果用戶服務(wù)器或虛擬設(shè)備上沒有安裝,然后一鍵完成部署,只需要填寫一些IP 用戶名和密碼等 | 支持一鍵部署 |
對(duì)ARM或國(guó)產(chǎn)芯片/麒麟系統(tǒng)支持? | 整個(gè)平臺(tái)支持ARM環(huán)境?生成的應(yīng)用支持ARM環(huán)境?整個(gè)平臺(tái)支持在麒麟等國(guó)產(chǎn)系統(tǒng)中部署?生成應(yīng)用支持在過程麒麟等系統(tǒng)中部署? | 全部都支持 |
平臺(tái)或工具/IDE的開發(fā)環(huán)境? | 是Web環(huán)境的B/S架構(gòu),還是C/S架構(gòu)的產(chǎn)品? | B/S架構(gòu) |
平臺(tái)使用者一定要會(huì)某種代碼嗎? | 對(duì)于絕大多數(shù)應(yīng)用來說,由于平臺(tái)描述邏輯方式的限制,或者沒有完備描述前后臺(tái)邏輯的方法,因此,必須引入代碼?;蛘哂捎诮M件不完備,必須引入代碼。 | 無需懂代碼 |
如果要懂代碼,平臺(tái)需要懂哪種代碼? | 一般包括SQL、JS(包括框架react/vue等一種)、Java、Python、Node.js、PHP、.net代碼 | 一種都不是必須的 |
開發(fā)者使用平臺(tái)能生成大概代碼比例? | 主要根據(jù)平臺(tái)“無代碼邏輯表達(dá)能力”以及“組件多少和架構(gòu)”來確定,例如,如果前后臺(tái)都需要大量代碼的,工具或IDE只是輔助,那么生成代碼量一般小于30%;如果需要輸入代碼不多,但是一定需要代碼才能完成的,一般代碼量在60~70%,如果完全不需要代碼,大部分應(yīng)用都可以完成的,自動(dòng)生成代碼量可以大于95%。 | 通常生成代碼超過應(yīng)用總代碼量95%; iVX和代碼關(guān)系為“充分非必要” |
平臺(tái)能夠支持的開發(fā)的應(yīng)用類型? | 包括其中一種或幾種:WebApp、iOS/Android原生應(yīng)用、Win/Mac/Linux原生應(yīng)用、微信小程序、或Google或FB平臺(tái)內(nèi)的應(yīng)用格式 | 支持WebApp、iOS/Android原生應(yīng)用、Win/Mac/Linux原生應(yīng)用、微信小程序 |
平臺(tái)支持的應(yīng)用的場(chǎng)景有哪些? | 包括:1. 全場(chǎng)景,無論個(gè)人應(yīng)用還是B端應(yīng)用,無論游戲、電商、各種企業(yè)場(chǎng)景、iot、各類系統(tǒng)都可以開發(fā);類似編程語(yǔ)言,本身沒有什么限制;2. 主要支持BI場(chǎng)景(根據(jù)數(shù)據(jù)作圖)、在線表單場(chǎng)景(用于快速填寫,快速提交)、在線表格場(chǎng)景(類似在線的excel或Google sheet)、BPM(流程圖、審批流場(chǎng)景),用戶可以根據(jù)這些場(chǎng)景再延伸,以及做近似的二次開發(fā),產(chǎn)生新的相似應(yīng)用或場(chǎng)景;3. 主要支持BI場(chǎng)景(根據(jù)數(shù)據(jù)作圖)、在線表單場(chǎng)景(用于快速填寫,快速提交)、在線表格場(chǎng)景(類似在線的excel或Google sheet)、BPM(流程圖、審批流場(chǎng)景),但是就是給業(yè)務(wù)人員使用的,操作和使用更簡(jiǎn)單,但是靈活性較差。 | 1. 全場(chǎng)景 |
支持應(yīng)用或生成代碼的范圍? | 1. 生成整個(gè)應(yīng)用,以及全部代碼;2. 生成整個(gè)應(yīng)用,不生成代碼;3. 生成整個(gè)應(yīng)用,生成部分代碼或生成代碼不能脫離平臺(tái);4. 只生部分代碼,例如只生成前端/后臺(tái)/數(shù)據(jù)庫(kù)中一部分,不能單獨(dú)使用; | 1. 生成整個(gè)應(yīng)用,以及全部代碼 |
代碼邏輯可視化的方式? | 現(xiàn)階段大體分5種:1. 流程圖模式,類似mendix/outsystems這樣的要化流程圖的;2. Scratch模式,就像Scratch一樣,一塊塊積木,拼接出來表達(dá)邏輯;3. iVX模式,事件面板模式,是一個(gè)面板,有一點(diǎn)像construct2/3,但是設(shè)計(jì)更好,全部都是數(shù)據(jù)點(diǎn)選,所有組件都面向?qū)ο笤O(shè)計(jì),可以在事件面板中操作,也可以加“if” “for” “function” 等事件塊,完成整個(gè)邏輯表達(dá),且是圖靈完備的;4. 公式表達(dá)式模式:例如Power Apps采用類似Excel的公式表達(dá)式來表達(dá)邏輯;5. 函數(shù)式模式,例如SAP的Appgyver,把函數(shù)的出參和入?yún)⒂镁€連起來表達(dá)邏輯。 | 3. iVX的事件面板模式 |
組件的架構(gòu)? | 具體包括:組件一層架構(gòu)還是多層架構(gòu)?例如iVX就有3層組件架構(gòu),以平衡靈活和效率;是否區(qū)分了前臺(tái)和后臺(tái)組件? | iVX三層組件架構(gòu):微組件(不可見)、基礎(chǔ)組件(100 )、小模塊(1000 );前后臺(tái)組件分離 |
組件是否支持自定義組件? | 支持自定義前端組件?支持自定義后臺(tái)或數(shù)據(jù)組件? | 前后臺(tái)都支持自定義組件 |
是否用word/excel/ppt兼容的組件? | 主要是為了在企業(yè)辦公中可以整合現(xiàn)有離線文檔 | 全部都有 |
支持前后臺(tái)的API組件或方法? | API是一種基礎(chǔ)的應(yīng)用內(nèi)部和系統(tǒng)直接提供服務(wù)的方法,對(duì)現(xiàn)有系統(tǒng)的整合至關(guān)重要 | 通過前后臺(tái)API組件支持 |
支持Socket方法? | 例如支持websocket | 通過Socket組件支持 |
組件中是否有變量組件? | 變量作為組件可以充分保證邏輯實(shí)現(xiàn)的靈活性,有了變量組件可以跟接近編程語(yǔ)言體驗(yàn) | 有 |
前端采用什么框架? | vue、react、bootstrap、jquery、自研框架等,例如iVX使用自研框架類似vue結(jié)構(gòu)效率和react相當(dāng);例如牛刀低代碼使用WeX5框架; | 自研框架,類vue,很容易看懂生成代碼 |
前端是否支持自定義CSS?自定義JS函數(shù)? | 在IDE中,前端可以插入JS函數(shù)和自定義CSS樣式 | 都支持 |
前端生成的代碼可以在什么框架下重用? | 前端生成的代碼時(shí)候可以在老的系統(tǒng)中重用,作為其中一個(gè)部分。例如iVX可以生成支持vue和react的component,并嵌入到原有的vue/react項(xiàng)目中進(jìn)行使用。 | 可以在vue/react中作為component使用 |
前端是否支持原有組件? | 例如前端可以導(dǎo)出vue或react組件,包括AntD elementUI或自有組件 | 支持全部react組件導(dǎo)入 |
前端是否支持響應(yīng)式布局? | 拖拽之后,內(nèi)容會(huì)跟隨改變,例如可以同時(shí)支持手機(jī)和PC瀏覽,一次開發(fā) | 支持 |
是否支持絕對(duì)定位和相對(duì)定位? | 一般絕對(duì)定位在動(dòng)畫或游戲界面中常用,而相對(duì)定位在應(yīng)用和網(wǎng)頁(yè)設(shè)計(jì)中常用 | 都支持 |
所有后臺(tái)資源直接使用云計(jì)算廠商服務(wù)?(即serverless支持?) | 即實(shí)現(xiàn)平臺(tái)只生成后臺(tái)代碼本身,和運(yùn)行時(shí)需要后臺(tái)資源解耦,并發(fā)、數(shù)據(jù)、安全、存儲(chǔ)由云計(jì)算產(chǎn)品來負(fù)責(zé)。 | 完全解耦,直接可以連云計(jì)算廠商產(chǎn)品; |
對(duì)接的云計(jì)算廠商產(chǎn)品是否有開源產(chǎn)品對(duì)應(yīng)? | 目的是:不要被云計(jì)算廠商鎖定,如果所有產(chǎn)品都有開源產(chǎn)品對(duì)應(yīng)的話。 | 所有產(chǎn)品都有對(duì)應(yīng)的開源產(chǎn)品,可以在任何云或私有環(huán)境部署導(dǎo)出應(yīng)用 |
后臺(tái)支持哪些語(yǔ)言代碼生成? | 一般包括其中一種或幾種:Java、C#、Node.js、PHP、Go、WASM等 | Java和Node.js |
支持哪些語(yǔ)言的SDK上傳? | 為了更好支持對(duì)原有代碼的集成,最好能支持SDK上傳 | 支持 Java/Node/Android/Javascript SDK 上傳 |
支持微服務(wù)? | 一切為了重用和管理,微服務(wù)是重要的手段 | 支持微服務(wù) |
支持?jǐn)?shù)據(jù)庫(kù)情況? | mysql/SQL server/PostgreSQL/Redis/ClickHouse/neo4j/Mongo DB/ES/MQ/國(guó)產(chǎn)數(shù)據(jù)庫(kù) | 全部支持 |
數(shù)據(jù)庫(kù)支持能力如何? | 是否支持?jǐn)?shù)據(jù)庫(kù)常見功能,例如:索引、join、事物、存儲(chǔ)過程(存儲(chǔ)過程基本都建議不用) | 支持索引、join、事物 |
支持RBAC進(jìn)行用戶訪問和權(quán)限管理? | RBAC是基于角色的訪問控制,是一種訪問控制方法,可根據(jù)最終用戶在組織中的角色為其分配權(quán)限。RBAC提供了細(xì)粒度的控制,提供了一種簡(jiǎn)單、可管理的訪問管理方法,與單獨(dú)分配權(quán)限相比,這種方法更不容易出錯(cuò)。這可以降低網(wǎng)絡(luò)安全風(fēng)險(xiǎn),保護(hù)敏感數(shù)據(jù),并確保員工只能訪問信息并執(zhí)行他們完成工作所需的操作。這被稱為最小特權(quán)原則。RBAC的實(shí)現(xiàn)方法包括:定義角色、定義權(quán)限、將角色分配給用戶、將權(quán)限分配給角色、將用戶分配給角色。 | 支持 |
支持權(quán)限管理和控制? | 通常包括以下部分一種或幾種:1. 數(shù)據(jù)庫(kù)字段用戶訪問權(quán)限和控制;2. 微服務(wù)用戶訪問權(quán)限和控制;3. 前端顯示和操作的用戶訪問權(quán)限和控制;4. 對(duì)數(shù)據(jù)表行進(jìn)行訪問控制管理;(4這條好像只有活字格產(chǎn)品支持了,但是好像并沒有必要,開銷很大) | 支持1、2、3三種情況; |
支持各種數(shù)據(jù)傳輸加密? | 加密方式為傳輸加密或提供加密組件(可以配置加密方法) | 默認(rèn)傳輸加密和加密組件都提供 |
前端防注入和SQL防注入? | 防止SQL注入:使用預(yù)編譯語(yǔ)句、使用存儲(chǔ)過程、使用參數(shù)化查詢、對(duì)輸入進(jìn)行過濾和驗(yàn)證、限制用戶輸入長(zhǎng)度、限制用戶輸入類型等。防止JS注入:對(duì)用戶輸入進(jìn)行過濾和驗(yàn)證、使用轉(zhuǎn)義字符、使用正則表達(dá)式等。 | 都嚴(yán)格檢查 |
是否有詳細(xì)的后臺(tái)日志生成? | 后臺(tái)日志主要用來記錄和Debug后臺(tái)的程序和服務(wù) | 有非常詳細(xì),而且是可視化的 |
支持多人開發(fā)和版本管理? | 多人開發(fā),例如Git類似的開發(fā)機(jī)制 | 支持多人同時(shí)開發(fā),和各種形式的無限版本管理 |
整理撰寫不易,希望對(duì)大家加深對(duì)低代碼平臺(tái)的理解,以及對(duì)開發(fā)低代碼平臺(tái)的同學(xué)有幫助。
?
版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請(qǐng)發(fā)送郵件至 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。