獨家干貨!兩種低代碼模型驅(qū)動開發(fā)技術(shù)對比(低代碼 模型驅(qū)動)
本文概述
近兩年低代碼技術(shù)突然變得格外火熱,各種低代碼平臺紛紛粉墨登場。尤其是國內(nèi)互聯(lián)網(wǎng)大廠不斷推出云端低代碼開放平臺,更是給低代碼技術(shù)添了一大把柴火。實際上低代碼技術(shù)不是近兩年才出現(xiàn)的新鮮事,早在上個世紀(jì)80年代起以CASE(計算機輔助軟件工程)技術(shù)為代表的低代碼技術(shù)就已經(jīng)出現(xiàn)了。其中典型的產(chǎn)品有:Oracle公司的CaseDesigner、GeneXus公司的GeneXus等。由于大量的戰(zhàn)團加入了低代碼市場的競爭,典型的包括有基于OA、BPM、RAD、ERP、PAAS、APAAS、SAAS等不同的技術(shù)背景。不同的技術(shù)實現(xiàn)給企業(yè)用戶對低代碼平臺的選擇帶來了較大的困難,哪種平臺更適合自己呢?本文將通過對低代碼技術(shù)中的兩種核心關(guān)鍵技術(shù)的分析幫助企業(yè)用戶進行選擇。我們知道大部分低代碼平臺都采用了模型驅(qū)動的開發(fā)模式,即通過可視化建模的方式來實現(xiàn)軟件的設(shè)計和生成。領(lǐng)域模型創(chuàng)建完成后,有兩種技術(shù)路線來生成和運行模型應(yīng)用:A,對生成的模型進行編譯并生成所有相關(guān)的源代碼,使其成為普通的應(yīng)用系統(tǒng),該技術(shù)稱為“代碼生成”;B,利用模型解析執(zhí)行引擎直接解析并運行所生成的模型,該技術(shù)稱為“模型解析”。以下將簡要介紹兩種技術(shù)的實現(xiàn)原理和特點。
代碼生成
低代碼開發(fā)平臺對于所創(chuàng)建的模型進行分析并生成指定的目標(biāo)源代碼,可以是Java、.NET/core、JS、CSS、H5等。在生成源代碼時,常見的方法是使用模板引擎技術(shù)。以Java代碼生成為例,一個模板會包含一系列相關(guān)的Java代碼段,同時包括了若干個空白標(biāo)識,這些標(biāo)識將根據(jù)對應(yīng)模型的定義內(nèi)容來填充。經(jīng)過填充的模板將成為完整的Java類代碼。為了提升代碼執(zhí)行效率和代碼質(zhì)量,有些公司在生成代碼的過程中還引入了AI技術(shù)。例如:GeneXus公司一開始就利用了人工智能語言PROLOG來完成模型的分析與源代碼的生成工作,同時還在模型分析的過程中還對每個模型的優(yōu)化提供建議與指導(dǎo)(Navigation Report)。
模型解析執(zhí)行
采用模型解析技術(shù)時,平臺并不會生成模型的目標(biāo)源代碼,而是通過平臺自帶的運行時模型解析器(也稱執(zhí)行引擎)來直接運行這些模型。這個執(zhí)行引擎就是一個由Java或者其它語言編寫智能執(zhí)行程序。一般執(zhí)行引擎會包含一個模型哈希鍵值映射表,引擎會 根據(jù)這個映射表找到并執(zhí)行指定的模型。模型解析技術(shù)被許多低代碼云平臺廠商所采用,例如:Mendix等。
代碼生成優(yōu)點分析
1.應(yīng)用可以脫離開發(fā)平臺任意部署
這可能是代碼生成最大的優(yōu)勢所在,因為應(yīng)用生成后就與開放平臺無關(guān)了,應(yīng)用部署規(guī)模和數(shù)量都不會受平臺的限制,因此也不會為此繼續(xù)為平臺付費。這種模式將軟件開發(fā)總擁有成本降到最低;
2.可以保護開發(fā)商的知識產(chǎn)權(quán)
可以為特定客戶進行定制的開發(fā),開發(fā)商只需要將生成的源代碼(如果需要的話)及編譯后的安裝包提交給客戶即可,不需要提供開發(fā)環(huán)境及整合運行環(huán)境。而模型解析則需要向客戶提供所有的后期運行及運維環(huán)境。
3.很好地融入客戶的IT架構(gòu)中
由于是生成傳統(tǒng)的軟件安裝包,因此可以很容易地在客戶已有的IT基礎(chǔ)架構(gòu)環(huán)境中進行安裝部署,不需要對客戶的IT架構(gòu)提出新的要求,從而避免了在IT架構(gòu)方面的額外投入。有些代碼生成技術(shù)開發(fā)平臺(例如:GeneXus)還能夠生成不同運行環(huán)境下的源代碼,例如:生成在Windows環(huán)境下的.NET語言、或者Linux環(huán)境下的Java語言等。而模型解析則需要安裝運行平臺的架構(gòu)要求單獨部署新的運行環(huán)境,或者租用平臺商指定的云平臺。
4.生成的代碼更容易理解
由于是生成了指定語言的源代碼,對該語言熟悉的技術(shù)人員可以很容易地讀懂和理解軟件的處理邏輯。而模型解析則由于其技術(shù)封閉性,客戶無法閱讀和了解軟件的處理邏輯和流程。當(dāng)軟件運行出現(xiàn)問題時只能依賴平臺商的技術(shù)支持,而這種支持由于平臺商需要同時支持大量的客戶群,無法提供及時有效的支持。特別是由于軟件問題是由于平臺本身的問題所引起的時,只能等到平臺升級后才能夠解決,這對于許多客戶來說是難以接受的。
5.對于需要提供源代碼的客戶更有吸引力
國內(nèi)許多客戶(尤其是大中型企業(yè))由于知識產(chǎn)權(quán)或知識保密等原因,往往需要開發(fā)商提供所開發(fā)軟件所有的源代碼進行備案或由客戶自己的IT團隊進行后期的運維和二次開發(fā)。針對這種客戶的需求只能選擇代碼生成模式。
6.更容易利用和整合已有的IT成果
代碼生成平臺由于其技術(shù)的開放性,可以很好地與目標(biāo)語言的各種已有的資源進行集成。這樣前期已完成的軟件模塊(例如:jar包、DLLs、Java包、JS控件等)可以很容易地集成到開發(fā)平臺,這就避免了重復(fù)開發(fā)工作。甚至隨著這些模塊的進一步完善,可以作為平臺插件成為平臺的擴展包。這種模式使得代碼生成技術(shù)開發(fā)平臺具有很好的擴展性和兼容性。
7.提供額外的編譯檢查
代碼生成需要對生成的源代碼進行編譯,而編譯器會對生成的代碼進行語法檢查,針對編譯器檢查出來的錯誤平臺會主動處理以保證代碼質(zhì)量。有些代碼生成技術(shù)開發(fā)平臺還會提供不同層次的質(zhì)量檢查工具,例如:模型級檢查工具、源代碼級檢查工具、網(wǎng)絡(luò)運行安全檢查工具等,甚至能夠集成流行的代碼檢查工具。而模型解析平臺則必須靠自己的技術(shù)來解決這個問題,同時開發(fā)環(huán)境與運行環(huán)境必須緊耦合以消除開發(fā)環(huán)境與運行環(huán)境的不同帶來的軟件運行潛在問題。
8.提供Debug功能
許多代碼生成開放平臺能夠提供模型級的軟件測試跟蹤器(Debuger),這種Debug工具能夠幫助開發(fā)者調(diào)試模型定義和業(yè)務(wù)規(guī)則代碼的質(zhì)量。
模型解析優(yōu)點分析
1.一站式解決方案
采用模型解析技術(shù)的廠商傾向于將開發(fā)與運行融為一體給客戶一個“一站式”IT解決方案,這一點對于中小企業(yè)客戶有很大的吸引力。但是“一站式”解決方案牽扯到技術(shù)與管理等方方面面,對于廠商的挑戰(zhàn)極大。另外,廠商也需要經(jīng)過較長時間的積累使得平臺更加成熟??蛻舨幌M约涸诘痛a平臺的投入由于廠商技術(shù)的限制或生存能力的限制打了水漂,“一站式”解決方案的技術(shù)封閉性使得客戶在平臺上開發(fā)的應(yīng)用無法移植到任何其它平臺上。
2.模型的調(diào)整更容易
模型的調(diào)整不需要重新顯式地進行生成、編譯、重構(gòu)、測試、部署等步驟,這樣會大大降低周轉(zhuǎn)時間。
3.可以在運行時對模型進行實時調(diào)整
由于模型是運行時可用,因此可以在不停止運行應(yīng)用的情況下對模型進行調(diào)整。
4.模型的兼容性更強
原則上解析器會開發(fā)一個能夠在不同平臺上獨立運行的解析器,這樣只要有相同的解析器就能夠在該平臺上運行模型。而代碼生成模式需要針對不同的平臺生成對于的語言代碼。
5.模型應(yīng)用發(fā)布簡單
在模型解析場景下,只要啟動模型解析器并將開發(fā)的模型導(dǎo)入即可。這樣,領(lǐng)域?qū)<抑恍枰P(guān)注于模型建立,模型創(chuàng)建成功后,點擊“發(fā)布”按鈕即可實現(xiàn)應(yīng)用的發(fā)布。
6.升級便捷而且具有很好的系統(tǒng)可伸縮性
這個優(yōu)點主要是針對云平臺模式,因為云平臺本身具有非常好的系統(tǒng)可伸縮性。
7.系統(tǒng)更安全
由于模型解析平臺的相對封閉性,再加上云平臺運行模式,普通人無法接觸到文件系統(tǒng)及模型定義文件。這樣就避免了模型被破壞的風(fēng)險。
8.更靈活
解析器比代碼生成器更簡單也需要更少的代碼來實現(xiàn)相同的功能,因此也更容易進行功能擴展。
9.能夠?qū)崿F(xiàn)運行時Debug
在應(yīng)用運行時可以提供針對模型級的調(diào)試跟蹤。
結(jié)論
在對上述兩種低代碼技術(shù)進行分析后,我們發(fā)現(xiàn)兩種技術(shù)各有春秋,換句話說“沒有最好的,只有最合適的”。那么,企業(yè)用戶如何選擇適合自己低代碼平臺呢?這可能取決于企業(yè)規(guī)模、企業(yè)管理水平、企業(yè)信息化建設(shè)階段、開發(fā)應(yīng)用業(yè)務(wù)領(lǐng)域、企業(yè)IT戰(zhàn)略及企業(yè)內(nèi)部IT團隊的技術(shù)技能等要素。鑒于國內(nèi)低代碼平臺技術(shù)的成熟度與國外知名企業(yè)還有一定的差距,因此,建議企業(yè)在選擇低代碼平臺時要綜合考慮更多的要素并與自身特點、技術(shù)需求進行匹配,這樣才能夠選出更適合自己的低代碼平臺,畢竟這與企業(yè)購買一款應(yīng)用軟件完全不同。關(guān)于如何選擇低代碼平臺的建議,這里暫時賣個關(guān)子,我將會在另一篇文章中詳細介紹。