天天看點

低代碼開發不靠譜?看低代碼開發在物聯網APP開發中的應用

摘要:雲編排式物聯APP開發平台可通過雲端可視化編排開發,邊端遠端自動化部署,雲邊協同管理運維的方式,實作物聯網APP快速開發,海量邊端應用管理。

0 引言

目前,物聯網技術正在推動人類社會從“資訊化”向“智能化”轉變,促進資訊科技與産業發生巨大變化。但目前的實際情況來看,物聯網的終端裝置類型多、數量大,安裝運維成本高、工作量大,新業務、新功能擴充靠硬體盒子“堆砌”,不經濟,難管理,缺乏靈活擴充性,邊緣的應用靠人肉現場開發和運維,為物聯網的數字化發展形成桎梏。

物聯網服務通過各種各樣托管于實體裝置,尤其是智能傳感器上的業務應用程式APP,将物聯世界和數字世界緊密結合,實作實體世界的運作狀态感覺。傳統的邊端物聯應用開發大都是基于文本語言程式設計,而邊端裝置上的物聯應用開發和伺服器應用開發的環境是完全不同的,邊端裝置種類複雜,計算能力差,數量多,應用部署和運維也是非常困難,需要開發人員有較高的技術水準和經驗,對硬體和軟體都要有比較深厚的了解。随着低代碼開發技術日趨成熟,低代碼開發平台無需編碼或少量編碼就可以快速生成應用程式,具有可視化程式設計,簡單直覺,開發周期短,技術門檻低,易于部署和運維等特點。非常适合海量物聯終端的APP開發與管理。是以,華為基于自家的APPCube低代碼開發平台營運經驗,通過對業界前沿的低代碼開發技術的研究,結合物聯網自身固有的一些特點,開發出一種雲邊協同的雲編排式APP開發平台,在雲端以可視化的流程編排開發APP,編排好的APP由雲端下發至邊端側的智能物聯裝置進行部署和運維。實作物聯APP“一次開發,處處可用”,跨專業資料共享和業務流程貫通。推動物聯網數字化飛速發展。

1 相關背景技術

1.1 低代碼開發平台發展趨勢

低代碼開發平台(LCDP)是通過少量代碼就可以快速生成應用程式的開發平台。它提供終端使用者使用易于了解的可視化工具開發自己的應用程式,而不是傳統的編寫代碼方式。使用者可以建構業務流程、邏輯和資料模型等所需的功能,必要時還可以添加自己的代碼。完成業務邏輯、功能建構後,即可一鍵傳遞應用并進行更新,自動跟蹤所有更改并處理資料庫腳本和部署流程。低代碼開發平台可以為不同硬體和作業系統開發并維護相對應的運作引擎,在平台上生成的應用程式可以運作在相應硬體的運作引擎之上,實作在主機、移動終端、物聯終端等多個平台上的部署。

低代碼開發平台(LCDP)最早可追溯到20世紀90年代至21世紀初的程式設計語言和工具,與先前的開發環境類似,早期低代碼開發平台基于模型驅動,後期逐漸演進為資料驅動,并建立了自動代碼生成和可視化程式設計的原理。

低代碼開發平台一個顯著的特點是,使具有不同經驗⽔平的開發⼈員可以通過圖形化的使用者界面,使用拖拽元件和模型驅動的邏輯來建立網頁和物聯終端應用程式。業務人員和IT部門的開發人員可以共同建立、疊代、釋出,相比傳統開發模式可以節省不少時間。對于大型企業來講,低代碼開發平台還可以降低IT團隊教育訓練、技術部署的初始成本。國外比較有名的低代碼開發平台有:Kony、Mendix、Outsystems。國内比較成熟的低代碼開發平台有iVX、AppCube等。

國内低代碼平台尚處于早期,但市場需求将出現暴增。随着國内政務和大企業紛紛選擇雲化轉型,基于雲化的低代碼開發平台将成為熱點。低代碼開發平台和資料以及業務系統的內建能力變得越來越重要,客戶化開發會幫助行業軟體實作個性化需求的定制,軟體廠商與低代碼開發平台合作可以快速完成個性化需求的傳遞。低代碼開發降低了軟體開發的專業門檻,使得業務人員可以根據自己的業務需求快速開發應用,人員數字化水準将大大提升。低代碼與物聯網的擴充連接配接成為趨勢。快速連接配接硬體裝置可以幫助實作工業網際網路落地。

1.2 低代碼開發平台的研究

1.2.1 Mendix

Mendix是專攻企業應用場景的低代碼開發平台,一般是面向有開發團隊的中大型企業,提供模型驅動IDE和微流,使用拖放式元件和模型驅動邏輯來建立 Web 和移動應用,使業務人員可以通過可視化元件參與到開發過程中,與程式員在Mendix platform上合作開發本企業的應用。

Mendix提供的Mendix Studio 是基于 Web 的低代碼開發環境,專為業務使用者打造。使用直覺的“所見即所得”頁面編輯器搭配 Atlas UI,設計并建構強大的應用。業務和 IT 部門的開發人員可以在平台中協同,建立、疊代和釋出應用,而所需時間隻是傳統方法的一小部分。這種低代碼應用開發方法可針對不同用例開發各種類型的應用,包括将原有應用更新為支援 IoT 的智能應用。它也提供一些企業解決方案、模闆,開發平台上也支援自定義UI群組件。擁有Atlas UI Framework開發架構,根據應用和業務類型,會推薦相關的模闆群組件,達到快速開發的目的。内置DevOps功能,可以持續傳遞,也可以使用Mendix platform API內建其他DevOps工具。

低代碼開發不靠譜?看低代碼開發在物聯網APP開發中的應用

圖1:Mendix開發界面

1.2.2 Outsystems

OutSystems是一個低代碼平台,提供面向企業開發、部署和管理全管道企業應用程式的工具套件。基于該平台開發的應用程式在雲、本地或混合環境中運作。使用者以國外大企業居多,外企接受度高。可拓展性強,支援智能硬體。多用來開發流程類應用,可以實作全棧快速開發,支援從UX到後端內建的所有内容。大型應用程式端到端DevOps和生命周期管理。

OutSystems成立時間早,教學文檔豐富。但是因為技術是早期技術,IDE界面古老,操作不友好。想使用可視化元件降低代碼量,但是并沒有太好的做到可視化和coding的平衡,而是把coding的複雜程度轉移到了使用、調試元件的難度上,需要使用者進行大量額外的學習和練習。

平台對代碼要求高,工具控件不夠豐富,很多非常基礎的功能需要複雜的操作才能完成,開發時前端部分的調試非常複雜,非常耗時。背景服務也需要大量調用接口,對外的功能拓展依賴于Integration Studio等,但是相容性不高,有時相容Mysql都會出問題。

Outsystems可能也發現了自己的一些短闆,為了解決前端的問題,建設有UI庫,正在不斷完善中。但是因為技術架構的局限性,還是無法解決很多常用但是基礎的問題,在試用中發現,例如,很簡單的彈窗提示、下拉菜單等,都需要通過寫js來實作。

低代碼開發不靠譜?看低代碼開發在物聯網APP開發中的應用

圖2:Outsystems的使用者界面

1.2.3 iVX

iVX 是國内的可視化程式設計工具代表,是目前國内比較流行的 “0”代碼開發平台,通過 iVX平台的元件拖拽和事件配置即可快速完成各種應用開發,生成前背景中間代碼,并可自動通過 VX 編譯系統,将中間代碼編譯成前端各系統目标應用(代碼)和背景 Go 微服務代碼。iVX 大量使用到以下應用開發場景: WebApp開發,例如:公司内部OA/CRM/ERP/SAP等公司内部管理系統; WebSite開發,現有超過10萬+網站通過iVX平台開發,包括前端展示和背景資料功能; 小程式開發, 例如微信小程式自定義開發,非模闆方式,更靈活自由;以及各種軟體相關系統和解決方案開發。

iVX 開發無需安裝開發包, 無需導入 SDK,即可完全應對小程式、Web 應用、建站等複雜應用的開發,并可一站式完成背景雲端部署,實作彈性虛機、資料庫、計算、網絡帶寬的彈性伸縮。

iVX 将常見應用場景劃分為小程式、PC 應用與網站、展示類營銷、互動類營銷等四大場景,針對每個場景提供更具針對性的開發模組。使用者可以根據自己的需求,随心選取合适的開發場景。系統将調取最合适的 開發環境,自動優化系統元件,為使用者提供更為便捷、舒适的使用體驗。為更好地适應多終端化的 Web 應用開發模式,iVX 采用了目前業内最 為通行的 “前後端分離” (Browser/Server)開發架構。該架構采用完全獨立的前後端架構,二者能夠各司其職,後端主要負責提供服務和資料,前端則更專注于通過終端與使用者進行互動,進而降低伺服器的壓力,将異常處理變得更為友好,在開發難易度、資料安全性、産品效能等方面都有極大提升,更容易适應 大型應用、複雜應用的開發需求。iVX 在編譯器中提供了“前台”、“背景”兩個系統元件,将後端資料邏輯和前端互動系統完全分開,支援前端架構的獨立搭建和背景資料邏輯的獨立編寫,使用者無需編制前後端資料互動架構,隻需借助于系統元件即可實作前後端分離架構的部署。另外,背景采用“服務調用”模式,不會直接暴露資料庫接口,更好保證背景資料通路安全性。VX采用了資料驅動的編輯邏輯。允許使用者通過建立資料模型,将後端資料或其他資料賦予變量或數組,通過資料變量綁定的方式将 DOM 元素的屬性與資料結構做關聯,通過事件觸發資料變化,進而引發前端 DOM 元素的屬性變化。資料驅動的編輯邏輯允許使用者僅通過控制資料模型就可以動态控制前端顯示效果,無需逐一修改前端元件,進而大幅提升效能,具有良好的可重用性,同時也大大減少“事件”編輯數量,提升開發效率。iVX 在前端開發環境中采用響應式布局的開發理念,使用者無論使用何種尺寸的裝置浏覽頁面,都能獲得良好的視覺效果。

低代碼開發不靠譜?看低代碼開發在物聯網APP開發中的應用

圖3:iVX開發平台使用者界面

1.2.4 AppCube

AppCube是我們華為雲釋出的一款雲端的低代碼開發平台,中文名字叫應用魔方 ,顧名思義就如同魔方一樣,可以通過任意組合,排列各種子產品化元素,建立功能各異的應用。AppCube提供雲上無碼化/低碼化/支援多碼化的應用開發模式,能夠屏蔽程式設計技術複雜性,提升企業開發的效率。同時提供應用資産的開發标準和微服務架構,将企業IT化建設過程中開發的可複用元件沉澱成可複制的模闆套件,加速應用的定制,并能通過開放的生态,實作套件資産的商業變現。

AppCube從能力上來說具備一個應用端到端的開發能力。前端開發基于Vue技術棧,平台預置豐富基礎元件,也可以支援擴充,多用于表格表單等後端管理頁面的快速開發。開發界面上提供圖形化、無碼化線上頁面開發功能,能夠快速建構各種複雜表單表格頁面、以及其他一些靈活布局頁面。開發人員可以在開發界面中将元件面闆上的頁面元件拖拽至頁面工作區域,并對元件的屬性、事件進行設定,再配合事件編排完成複雜的業務功能。支援開發人員以積木組裝的方式快速建構應用頁面,提升開發效率和品質,及時響應業務需求和價值實作; 後端開發可以提供資料對象模型開發,對象可以了解為現實世界到數字世界的一個映射,開發者在平台建立對象和對象的各種屬性字段之後,就可以通過服務編排實作多個對象的可視化流程編排,以API的形式對外提供服務。簡單來說可以将Script腳本、Action等封裝成對外提供的服務接口。服務編排編輯器提供了流程引擎的前台頁面配置工具,通過模闆化、圖形化實作對業務流程的編排和執行。幫助業務人員針對自己的獨特業務需求建立所需的解決方案,甚至不需要有任何程式設計經驗;開發者還可以利用平台提供的內建開發能力,通過消息、API等各種服務接口将不同的應用內建到一起,或者與外部的其他業務系統內建,形成一個完整的解決方案,而完成此項任務全都是基于圖形化界面來操作,不需要編寫代碼來。

AppCube的常見應用場景有輕應用建構場景,輕應用一般為輕量級應用,不涉及複雜化的代碼,使用者零代碼(如拖曳元件,簡單配置)或者低代碼就能輕松完成應用的搭建。為了降低企業使用者的應用開發成本,AppCube提供了豐富的輕應用模闆,涵蓋了辦公管理、人事管理、項目管理,以及通用應用等領域多款精品模闆,使用者可基于模闆快速定制和擴充應用,滿足自身業務的個性化訴求;另一種是面向園區、城市、能源、教育、交通等行業的應用場景,可基于全場景的可視化開發能力、項目級協助共享能力和端到端的工程部署能力,快速搭建行業應用和大型企業級應用,行業内的技術積累可以通過平台沉澱下來,形成行業資産,行業内不同的使用者和廠商可通過一個資産市場來進行AppCube應用資産的共享,助力行業夥伴加速全場景行業數字化。

低代碼開發不靠譜?看低代碼開發在物聯網APP開發中的應用

圖4:AppCube的使用者操作界面

2 雲編排式APP開發平台

通過前面的低代碼開發平台的研究,我們發現目前業界商用的低代碼開發平台大多數還是面向移動端、web網頁應用開發,快速建構場景化應用,以及面向企業内部的業務流程管理的BPM平台開發,用圖形化、可視化拖拽的模式描述業務需求,形成可視化業務邏輯設計。目前國内還缺乏面向物聯網應用APP開發的低代碼開發平台,而物聯網的應用APP大多數邏輯比較簡單,可重複使用代碼片段多,複雜的是邊端APP的部署與管理,是以我們基于自家的AppCube開發出了一種面向物聯網應用的雲編排式APP開發平台,可在雲端進行可視化的APP編排式開發,并能從雲端部署APP到邊端裝置的運作引擎上,實作物聯APP一次開發,處處運作。

2.1 傳統Native Code物聯APP開發方式面臨的問題

傳統邊側軟體開發部署目前面臨諸多問題,雲編排式APP開發平台的目标是簡化端邊側應用的開發、部署的難度。目前邊側端側軟體開發部署具體常見問題如下:

1) 代碼開發門檻高,合适的開發人員少:由于邊側、端側裝置為了完成特定業務場景,需要涉及周邊硬體的對接及處理是軟硬體結合的一個行業,不但要懂得軟體方面的程式設計,還要了解硬體包括電路、單片機、arm等相關知識。

2) 涉及平台多,各種交叉編譯紛繁複雜:涉及的CPU 架構平台,X86、X86-64、ARM 各種型号;涉及的指令集包括CISC、RISC、RISC-Five;涉及的作業系統更是繁多,例如windows 族、Linux 族等等。平台、指令集、作業系統的多樣性不可避免的導緻了複雜且易出錯的交叉編譯過程。

3) 需要現場逐台裝置部署應用:邊側、端側裝置往往數量較多,開發完成的應用需要逐一現場手動安裝部署,耗時耗力。

4) 開發溝通成本高:一個完整的涉及端、邊的系統,既有端、邊側的邏輯,也有與雲端邏輯,缺少統一的開發工具。

5) 采用寫死方式,開發效率低:目前大多數的邊、端側的應用采用C、C++寫死的方式開發,在部分資源較充裕的邊側裝置或采用其它進階語言。

6) 功能子產品沒有快速複用機制:邊側裝置上應用的開發往往是代碼級的複用,沒有功能子產品封裝規範、沒有子產品組合編排的工具,導緻無法友善快捷的複用既有代碼資産,造成了開發人力的浪費和長的開發周期。

7) 應用部署後即固化,無法便捷的修改:傳統邊側、端側裝置應用部署完畢後,任何功能上的修改都需要走完整的版本開發流程,沒有友善的邊雲協同的開發、部署機制。

2.2 雲編排式APP開發平台概念

雲編排式APP開發平台是專門針對物聯場景應用APP開發的低代碼開發平台,提供邊側軟體可程式設計部署方案,以及邊、端、雲一體化協同編排方案,雲端編排的模型、流程、業務規則、頁面下發至邊側運作,邊側通過一個APP運作引擎來解釋執行雲端開發的APP流程,完成一個APP的業務功能。

雲編排式APP開發平台系統提供了開放的流式編排開發架構,實作了業務的可視化編排式開發,通過新增編排節點的方式持續擴充可編排使用的能力,節點定義了标準規範并可由第三方開發,系統提供了基于服務化接口中繼資料的自動化節點生成工具、線上的半自動化開發工具。系統也提供了可編排節點、領域模型模闆的管理元件,提供管理釋出流程、節點以及領域模型模闆的倉庫,便于租戶内、租戶間的共享。

雲端編排的模型、流程、業務規則、頁面均以中繼資料的方式表述,由邊側、端側的引擎執行,執行引擎可運作于雲端高性能伺服器、邊側資源受限伺服器、端側單片機、嵌入式系統等。

低代碼開發不靠譜?看低代碼開發在物聯網APP開發中的應用

雲/邊側部署系統分兩部分組成,兩者之間可以通過公網連接配接。

第一部分是位于雲端的開發平台,開發者可以在之上進行模型、流程、規則的編排,一切都是可視化的托拉拽方式開發,一些通用的邏輯功能可以沉澱成平台的可複用元件,比如處理網絡通信的MQTT協定、485協定等等。邊、端側裝置的提供商可在該環境上傳所提供裝置的交叉編譯工具鍊,供平台交叉編譯出對應裝置的運作引擎下載下傳使用。

第二部分是位于邊端的運作引擎,運作引擎可以運作在雲端的伺服器、邊側裝置、端側單片機中,負責解釋執行雲端平台下發的編排完成的流程中繼資料,流程執行過程可與外部系統或其它引擎中的流程互動,完成一個具體APP的業務功能。一個運作引擎可以同時運作多個流程,也就是多個APP應用。雲端平台可以對引擎和其中的APP進行安裝、解除安裝、更新、配置更新等運維管理。

敲黑闆,畫重點,這個運作引擎是這個該系統設計中的精華。我們為不同的硬體平台适配運作引擎。而我們編排好的APP是運作在引擎中,相當于微信小程式一樣,不管是什麼手機,隻要裝了微信,就能下載下傳安裝微信小程式。對于我們的系統來說,不管是什麼硬體,隻要裝了雲編排引擎,就能安裝雲編排的APP。進而實作了軟硬體解耦。物聯網的程式猿再也不用為了不同的硬體交叉編譯流血流淚了。

2.3 雲編排式APP開發方式

雲編排APP開發方案提供邊、雲一體化協同編排方案,雲端編排的模型、流程、業務規則、頁面下發至邊側、端側運作。

低代碼開發不靠譜?看低代碼開發在物聯網APP開發中的應用

雲編排APP雲端開發工具,通過連接配接線将各種功能子產品作為黑盒連接配接在一起,架構隻起到消息資料的排程、轉換作用。這些“黑盒”是建構App的積木塊,它們之間傳遞的統一結構化的封包就是積木塊的插接口,通過最大化的直接複用或擴充複用“黑盒”節點建構應用,而非為不同的APP重新建構新的“黑盒”節點。基于定制具有标準化的插接口的黑盒節點可以無限擴充軟體系統功能。

這些“黑盒”節點通過标準規範描述,由第三方開發并滿足規範的節點可在雲端開發工具中編排,并可在引擎中運作。同時雲編排系統提供基于服務化接口中繼資料的自動化節點生成工具、線上的半自動化開發工具。系統也提供可編排節點、領域模型模闆的管理元件,提供管理釋出流程、節點以及領域模型模闆的倉庫,便于租戶内、租戶間的共享。

雲端編排的模型、流程、業務規則、頁面均以中繼資料的方式表述,由端側、邊側的引擎執行,執行引擎可運作于雲端高性能伺服器、邊側資源受限伺服器、等。

低代碼開發不靠譜?看低代碼開發在物聯網APP開發中的應用

雲端aPaaS環境提供拖拽式開發、測試、APP釋出審批功能。驗證審批後的APP可注入到各種裝置部署的引擎中,并可對其進行運作狀态監控。高性能異步驅動運作引擎可對注入的APP中繼資料進行解析執行,完成目标業務邏輯。

在雲端可以檢視、暫停、重新開機、更新業務APP。APP具有防篡改能力,保證APP的啟動安全、運作安全、更新安全。引擎和雲端系統通過雙向TLS證書認證,保證設計态環境和運作态引擎間的通訊安全。APP運作時按照租戶進行隔離,保障同一引擎不同租戶APP互相影響、幹擾。

2.4 傳統物聯APP開發模式與雲編排差異性對比

1) 不同點

低代碼開發不靠譜?看低代碼開發在物聯網APP開發中的應用

1. 傳統開發模式需要熟悉硬體接口及其程式設計、配置方式,而邊雲協同方式下的開發隻需要可視化選擇相應的硬體封裝節點及節點的外部通訊接口。

2. 傳統開發模式需要了解在某個OS下外部接口協定的驅動及驅動使用方式。而邊雲協同方式下的開發隻需要拖拽相應節點并完成配置即可。

3. 傳統開發模式需要開發者自行搭建開發環境,完成開發環境的配置,一般比較繁瑣。而邊雲協同方式下的開發,隻需要登入系統,點選建立工程,系統背景即可自動完成開發、測試環境的建構。

4. 傳統開發模式通過hard coding 的方式手工完成代碼的編寫,自動、或手動完成完整覆寫的代碼測試用例驗證。而邊雲協同方式下的開發方式,基于大顆粒的功能子產品的複用,隻需要拖拽節點完成邏輯的編排,大幅度提升了開發效率,可複用子產品(節點)在釋出時已經通過了嚴格的驗證測試,測試過程僅需關注編排流程本身。

5. 傳統開發模式需要針對不同的硬體、作業系統做交叉編譯,以實作一份代碼運作在不同的軟、硬體平台上。而邊雲協同方式下的開發的是中繼資料和腳本,通過執行中繼資料和腳本的引擎屏蔽了軟、硬體平台的差異性,避免了APP的交叉編譯。

6. 傳統開發模式開發完成的APP需要打包,導入到硬體環境中,執行參數配置完成安裝。而邊雲協同方式下的開發僅需要選中目标引擎,點選下發APP即可完成安裝。

2) 相同點

低代碼開發不靠譜?看低代碼開發在物聯網APP開發中的應用

1. 兩種方式開發出來的APP功能都是一樣的,都能實作物聯網應用業務的邏輯處理,性能上也都相近,滿足物聯網業務的性能要求。

2. 雲編排APP開發平台的運作引擎隻是作為普通APP部署,不改變原有邊側APP部署形态,對原有硬體系統沒有特殊要求。

3 結語

雲編排式APP開發作為面向未來物聯網短平快業務場景的低代碼開發趨勢的代表性技術,為物聯網應用APP的靈活開發提供了一條便捷的途經。本文通過研究雲編排式APP開發平台的基本理論和技術實作,展示了雲編排式APP開發在物聯APP應用開發的廣闊前景。

通過對雲編排式APP開發的實踐分析,我們能夠看到它能為我們帶來多種效益的提升。從管理效益上來說,它提升了物聯APP管理便捷性,增強管理體驗,甲方不用再依賴各個裝置廠商和軟體廠商來幫他開發物聯,業務人員自己都可以上手,因為這太太太友善了。使能業務部門聚焦應用,技術開發歸口管理,應用開發安全可靠。采用統一平台管控,簡化APP應用管理複雜性。APP應用開發過程統一可控,元件高複用提升可靠,降低多頭私有開發、代碼品質參差不齊帶來的安全風險。

從經濟效益上來說,雲編排式APP開發降低了物聯APP應用開發門檻,從專業級代碼開發向普通業務人員可視化業務編排,從以月/周為機關的開發周期縮短至以天為機關,提升業務響應速度,及時保障業務發展。軟硬體解耦,元件一次開發,多次使用,APP跨硬體平台部署,提升開發資源使用率,優化建設成本。提升APP運維效率和成功率,降低運維專業化技術門檻。

從社會效益上來說,雲編排式APP開發提升了物聯APP應用生态夥伴整體技術水準,優化生态夥伴的分工協作關系,實作裝置、業務元件、APP應用等生态資源更專業更精細分工,為生态合作發展奠定基礎。

點選關注,第一時間了解華為雲新鮮技術~

繼續閱讀