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