低代码开发不靠谱?看低代码开发在物联网APP开发中的应用

摘要:云编排式物联APP开发平台可经过云端可视化编排开发,边端远程自动化部署,云边协同管理运维的方式,实现物联网APP快速开发,海量边端应用管理。

0 引言

当前,物联网技术正在推进人类社会从“信息化”向“智能化”转变,促进信息科技与产业发生巨大变化。但目前的实际状况来看,物联网的终端设备类型多、数量大,安装运维成本高、工做量大,新业务、新功能扩展靠硬件盒子“堆砌”,不经济,难管理,缺少灵活扩展性,边缘的应用靠人肉现场开发和运维,为物联网的数字化发展造成桎梏。前端

物联网服务经过各类各样托管于物理设备,尤为是智能传感器上的业务应用程序APP,将物联世界和数字世界紧密结合,实现物理世界的运行状态感知。传统的边端物联应用开发大都是基于文本语言编程,而边端设备上的物联应用开发和服务器应用开发的环境是彻底不一样的,边端设备种类复杂,计算能力差,数量多,应用部署和运维也是很是困难,须要开发人员有较高的技术水平和经验,对硬件和软件都要有比较深厚的理解。随着低代码开发技术日趋成熟,低代码开发平台无需编码或少许编码就能够快速生成应用程序,具备可视化编程,简单直观,开发周期短,技术门槛低,易于部署和运维等特色。很是适合海量物联终端的APP开发与管理。所以,华为基于自家的APPCube低代码开发平台运营经验,经过对业界前沿的低代码开发技术的研究,结合物联网自身固有的一些特色,开发出一种云边协同的云编排式APP开发平台,在云端以可视化的流程编排开发APP,编排好的APP由云端下发至边端侧的智能物联设备进行部署和运维。实现物联APP“一次开发,到处可用”,跨专业数据共享和业务流程贯通。推进物联网数字化飞速发展。程序员

1 相关背景技术

1.1 低代码开发平台发展趋势

低代码开发平台(LCDP)是经过少许代码就能够快速生成应用程序的开发平台。它提供终端用户使用易于理解的可视化工具开发本身的应用程序,而不是传统的编写代码方式。用户能够构建业务流程、逻辑和数据模型等所需的功能,必要时还能够添加本身的代码。完成业务逻辑、功能构建后,便可一键交付应用并进行更新,自动跟踪全部更改并处理数据库脚本和部署流程。低代码开发平台能够为不一样硬件和操做系统开发并维护相对应的运行引擎,在平台上生成的应用程序能够运行在相应硬件的运行引擎之上,实如今主机、移动终端、物联终端等多个平台上的部署。web

低代码开发平台(LCDP)最先可追溯到20世纪90年代至21世纪初的编程语言和工具,与先前的开发环境相似,早期低代码开发平台基于模型驱动,后期逐渐演进为数据驱动,并建立了自动代码生成和可视化编程的原理。sql

低代码开发平台一个显著的特色是,使具备不一样经验⽔平的开发⼈员能够经过图形化的用户界面,使用拖拽组件和模型驱动的逻辑来建立网页和物联终端应用程序。业务人员和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工具。segmentfault

图1:Mendix开发界面windows

1.2.2 Outsystems

OutSystems是一个低代码平台,提供面向企业开发、部署和管理全渠道企业应用程序的工具套件。基于该平台开发的应用程序在云、本地或混合环境中运行。用户以国外大企业居多,外企接受度高。可拓展性强,支持智能硬件。多用来开发流程类应用,能够实现全栈快速开发,支持从UX到后端集成的全部内容。大型应用程序端到端DevOps和生命周期管理。后端

OutSystems成立时间早,教学文档丰富。可是由于技术是早期技术,IDE界面古老,操做不友好。想使用可视化组件下降代码量,可是并无太好的作到可视化和coding的平衡,而是把coding的复杂程度转移到了使用、调试组件的难度上,须要使用者进行大量额外的学习和练习。

平台对代码要求高,工具控件不够丰富,不少很是基础的功能须要复杂的操做才能完成,开发时前端部分的调试很是复杂,很是耗时。后台服务也须要大量调用接口,对外的功能拓展依赖于Integration Studio等,可是兼容性不高,有时兼容Mysql都会出问题。

Outsystems可能也发现了本身的一些短板,为了解决前端的问题,建设有UI库,正在不断完善中。可是由于技术架构的局限性,仍是没法解决不少经常使用可是基础的问题,在试用中发现,例如,很简单的弹窗提示、下拉菜单等,都须要经过写js来实现。

图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 在前端开发环境中采用响应式布局的开发理念,用户不管使用何种尺寸的设备浏览页面,都能得到良好的视觉效果。

图3:iVX开发平台用户界面

1.2.4 AppCube

AppCube是咱们华为云发布的一款云端的低代码开发平台,中文名字叫应用魔方 ,顾名思义就如同魔方同样,能够经过任意组合,排列各类模块化元素,建立功能各异的应用。AppCube提供云上无码化/低码化/支持多码化的应用开发模式,可以屏蔽编程技术复杂性,提高企业开发的效率。同时提供应用资产的开发标准和微服务框架,将企业IT化建设过程当中开发的可复用组件沉淀成可复制的模板套件,加速应用的定制,并能经过开放的生态,实现套件资产的商业变现。

AppCube从能力上来讲具有一个应用端到端的开发能力。前端开发基于Vue技术栈,平台预置丰富基础组件,也能够支持扩展,多用于表格表单等后端管理页面的快速开发。开发界面上提供图形化、无码化在线页面开发功能,可以快速构建各类复杂表单表格页面、以及其余一些灵活布局页面。开发人员能够在开发界面中将组件面板上的页面组件拖拽至页面工做区域,并对组件的属性、事件进行设置,再配合事件编排完成复杂的业务功能。支持开发人员以积木组装的方式快速构建应用页面,提高开发效率和质量,及时响应业务需求和价值实现; 后端开发能够提供数据对象模型开发,对象能够理解为现实世界到数字世界的一个映射,开发者在平台建立对象和对象的各类属性字段以后,就能够经过服务编排实现多个对象的可视化流程编排,以API的形式对外提供服务。简单来讲能够将Script脚本、Action等封装成对外提供的服务接口。服务编排编辑器提供了流程引擎的前台页面配置工具,经过模板化、图形化实现对业务流程的编排和执行。帮助业务人员针对本身的独特业务需求建立所需的解决方案,甚至不须要有任何编程经验;开发者还能够利用平台提供的集成开发能力,经过消息、API等各类服务接口将不一样的应用集成到一块儿,或者与外部的其余业务系统集成,造成一个完整的解决方案,而完成此项任务全都是基于图形化界面来操做,不须要编写代码来。

AppCube的常见应用场景有轻应用构建场景,轻应用通常为轻量级应用,不涉及复杂化的代码,用户零代码(如拖曳组件,简单配置)或者低代码就能轻松完成应用的搭建。为了下降企业用户的应用开发成本,AppCube提供了丰富的轻应用模板,涵盖了办公管理、人事管理、项目管理,以及通用应用等领域多款精品模板,用户可基于模板快速定制和扩展应用,知足自身业务的个性化诉求;另外一种是面向园区、城市、能源、教育、交通等行业的应用场景,可基于全场景的可视化开发能力、项目级协助共享能力和端到端的工程部署能力,快速搭建行业应用和大型企业级应用,行业内的技术积累能够经过平台沉淀下来,造成行业资产,行业内不一样的用户和厂商可经过一个资产市场来进行AppCube应用资产的共享,助力行业伙伴加速全场景行业数字化。

图4:AppCube的用户操做界面

2 云编排式APP开发平台

经过前面的低代码开发平台的研究,咱们发现目前业界商用的低代码开发平台大多数仍是面向移动端、web网页应用开发,快速构建场景化应用,以及面向企业内部的业务流程管理的BPM平台开发,用图形化、可视化拖拽的模式描述业务需求,造成可视化业务逻辑设计。目前国内还缺少面向物联网应用APP开发的低代码开发平台,而物联网的应用APP大多数逻辑比较简单,可重复使用代码片断多,复杂的是边端APP的部署与管理,所以咱们基于自家的AppCube开发出了一种面向物联网应用的云编排式APP开发平台,可在云端进行可视化的APP编排式开发,并能从云端部署APP到边端设备的运行引擎上,实现物联APP一次开发,到处运行。

2.1 传统Native Code物联APP开发方式面临的问题

传统边侧软件开发部署目前面临诸多问题,云编排式APP开发平台的目标是简化端边侧应用的开发、部署的难度。目前边侧端侧软件开发部署具体常见问题以下:

1) 代码开发门槛高,合适的开发人员少:因为边侧、端侧设备为了完成特定业务场景,须要涉及周边硬件的对接及处理是软硬件结合的一个行业,不但要懂得软件方面的编程,还要了解硬件包括电路、单片机、arm等相关知识。

2) 涉及平台多,各类交叉编译纷繁复杂:涉及的CPU 架构平台,X8六、X86-6四、ARM 各类型号;涉及的指令集包括CISC、RISC、RISC-Five;涉及的操做系统更是繁多,例如windows 族、Linux 族等等。平台、指令集、操做系统的多样性不可避免的致使了复杂且易出错的交叉编译过程。

3) 须要现场逐台设备部署应用:边侧、端侧设备每每数量较多,开发完成的应用须要逐一现场手动安装部署,耗时耗力。

4) 开发沟通成本高:一个完整的涉及端、边的系统,既有端、边侧的逻辑,也有与云端逻辑,缺乏统一的开发工具。

5) 采用硬编码方式,开发效率低:目前大多数的边、端侧的应用采用C、C++硬编码的方式开发,在部分资源较充裕的边侧设备或采用其它高级语言。

6) 功能模块没有快速复用机制:边侧设备上应用的开发每每是代码级的复用,没有功能模块封装规范、没有模块组合编排的工具,致使没法方便快捷的复用既有代码资产,形成了开发人力的浪费和长的开发周期。

7) 应用部署后即固化,没法便捷的修改:传统边侧、端侧设备应用部署完毕后,任何功能上的修改都须要走完整的版本开发流程,没有方便的边云协同的开发、部署机制。

2.2 云编排式APP开发平台概念

云编排式APP开发平台是专门针对物联场景应用APP开发的低代码开发平台,提供边侧软件可编程部署方案,以及边、端、云一体化协同编排方案,云端编排的模型、流程、业务规则、页面下发至边侧运行,边侧经过一个APP运行引擎来解释执行云端开发的APP流程,完成一个APP的业务功能。

云编排式APP开发平台系统提供了开放的流式编排开发框架,实现了业务的可视化编排式开发,经过新增编排节点的方式持续扩展可编排使用的能力,节点定义了标准规范并可由第三方开发,系统提供了基于服务化接口元数据的自动化节点生成工具、在线的半自动化开发工具。系统也提供了可编排节点、领域模型模板的管理组件,提供管理发布流程、节点以及领域模型模板的仓库,便于租户内、租户间的共享。

云端编排的模型、流程、业务规则、页面均以元数据的方式表述,由边侧、端侧的引擎执行,执行引擎可运行于云端高性能服务器、边侧资源受限服务器、端侧单片机、嵌入式系统等。

云/边侧部署系统分两部分组成,二者之间能够经过公网链接。

第一部分是位于云端的开发平台,开发者能够在之上进行模型、流程、规则的编排,一切都是可视化的托拉拽方式开发,一些通用的逻辑功能能够沉淀成平台的可复用组件,好比处理网络通讯的MQTT协议、485协议等等。边、端侧设备的提供商可在该环境上传所提供设备的交叉编译工具链,供平台交叉编译出对应设备的运行引擎下载使用。

第二部分是位于边端的运行引擎,运行引擎能够运行在云端的服务器、边侧设备、端侧单片机中,负责解释执行云端平台下发的编排完成的流程元数据,流程执行过程可与外部系统或其它引擎中的流程交互,完成一个具体APP的业务功能。一个运行引擎能够同时运行多个流程,也就是多个APP应用。云端平台能够对引擎和其中的APP进行安装、卸载、升级、配置更新等运维管理。

敲黑板,画重点,这个运行引擎是这个该系统设计中的精华。咱们为不一样的硬件平台适配运行引擎。而咱们编排好的APP是运行在引擎中,至关于微信小程序同样,无论是什么手机,只要装了微信,就能下载安装微信小程序。对于咱们的系统来讲,无论是什么硬件,只要装了云编排引擎,就能安装云编排的APP。从而实现了软硬件解耦。物联网的程序猿不再用为了避免同的硬件交叉编译流血流泪了。

2.3 云编排式APP开发方式

云编排APP开发方案提供边、云一体化协同编排方案,云端编排的模型、流程、业务规则、页面下发至边侧、端侧运行。

云编排APP云端开发工具,经过链接线将各类功能模块做为黑盒链接在一块儿,框架只起到消息数据的调度、转换做用。这些“黑盒”是构建App的积木块,它们之间传递的统一结构化的报文就是积木块的插接口,经过最大化的直接复用或扩展复用“黑盒”节点构建应用,而非为不一样的APP从新构建新的“黑盒”节点。基于定制具备标准化的插接口的黑盒节点能够无限扩展软件系统功能。

这些“黑盒”节点经过标准规范描述,由第三方开发并知足规范的节点可在云端开发工具中编排,并可在引擎中运行。同时云编排系统提供基于服务化接口元数据的自动化节点生成工具、在线的半自动化开发工具。系统也提供可编排节点、领域模型模板的管理组件,提供管理发布流程、节点以及领域模型模板的仓库,便于租户内、租户间的共享。

云端编排的模型、流程、业务规则、页面均以元数据的方式表述,由端侧、边侧的引擎执行,执行引擎可运行于云端高性能服务器、边侧资源受限服务器、等。

云端aPaaS环境提供拖拽式开发、测试、APP发布审批功能。验证审批后的APP可注入到各类设备部署的引擎中,并可对其进行运行状态监控。高性能异步驱动运行引擎可对注入的APP元数据进行解析执行,完成目标业务逻辑。

在云端能够查看、暂停、重启、更新业务APP。APP具备防篡改能力,保证APP的启动安全、运行安全、升级安全。引擎和云端系统经过双向TLS证书认证,保证设计态环境和运行态引擎间的通信安全。APP运行时按照租户进行隔离,保障同一引擎不一样租户APP相互影响、干扰。

2.4 传统物联APP开发模式与云编排差别性对比

1) 不一样点

  1. 传统开发模式须要熟悉硬件接口及其编程、配置方式,而边云协同方式下的开发只须要可视化选择相应的硬件封装节点及节点的外部通信接口。
  2. 传统开发模式须要了解在某个OS下外部接口协议的驱动及驱动使用方式。而边云协同方式下的开发只须要拖拽相应节点并完成配置便可。
  3. 传统开发模式须要开发者自行搭建开发环境,完成开发环境的配置,通常比较繁琐。而边云协同方式下的开发,只须要登陆系统,点击建立工程,系统后台便可自动完成开发、测试环境的构建。
  4. 传统开发模式经过hard coding 的方式手工完成代码的编写,自动、或手动完成完整覆盖的代码测试用例验证。而边云协同方式下的开发方式,基于大颗粒的功能模块的复用,只须要拖拽节点完成逻辑的编排,大幅度提高了开发效率,可复用模块(节点)在发布时已经经过了严格的验证测试,测试过程仅需关注编排流程自己。
  5. 传统开发模式须要针对不一样的硬件、操做系统作交叉编译,以实现一份代码运行在不一样的软、硬件平台上。而边云协同方式下的开发的是元数据和脚本,经过执行元数据和脚本的引擎屏蔽了软、硬件平台的差别性,避免了APP的交叉编译。
  6. 传统开发模式开发完成的APP须要打包,导入到硬件环境中,执行参数配置完成安装。而边云协同方式下的开发仅须要选中目标引擎,点击下发APP便可完成安装。

2) 相同点

  1. 两种方式开发出来的APP功能都是同样的,都能实现物联网应用业务的逻辑处理,性能上也都相近,知足物联网业务的性能要求。
  2. 云编排APP开发平台的运行引擎只是做为普通APP部署,不改变原有边侧APP部署形态,对原有硬件系统没有特殊要求。

3 结语

云编排式APP开发做为面向将来物联网短平快业务场景的低代码开发趋势的表明性技术,为物联网应用APP的敏捷开发提供了一条便捷的途经。本文经过研究云编排式APP开发平台的基本理论和技术实现,展现了云编排式APP开发在物联APP应用开发的广阔前景。

经过对云编排式APP开发的实践分析,咱们可以看到它能为咱们带来多种效益的提高。从管理效益上来讲,它提高了物联APP管理便捷性,加强管理体验,甲方不用再依赖各个设备厂商和软件厂商来帮他开发物联,业务人员本身均可以上手,由于这太太太方便了。使能业务部门聚焦应用,技术开发归口管理,应用开发安全可靠。采用统一平台管控,简化APP应用管理复杂性。APP应用开发过程统一可控,组件高复用提高可靠,下降多头私有开发、代码质量良莠不齐带来的安全风险。

从经济效益上来讲,云编排式APP开发下降了物联APP应用开发门槛,从专业级代码开发向普通业务人员可视化业务编排,从以月/周为单位的开发周期缩短至以天为单位,提高业务响应速度,及时保障业务发展。软硬件解耦,组件一次开发,屡次使用,APP跨硬件平台部署,提高开发资源利用率,优化建设成本。提高APP运维效率和成功率,下降运维专业化技术门槛。

从社会效益上来讲,云编排式APP开发提高了物联APP应用生态伙伴总体技术水平,优化生态伙伴的分工协做关系,实现设备、业务组件、APP应用等生态资源更专业更精细分工,为生态合做发展奠基基础。

点击关注,第一时间了解华为云新鲜技术~

相关文章
相关标签/搜索