低代码是一项可提升软件交付速度的开发技术,以降低编码工作量和开发成本为典型特征,是高级语言发展到一定程度的必然产物。
本页面中以下内容均针对“模型驱动的低代码平台”,可能不适用于部分“表单驱动的低代码平台”。
相比于编码开发,低代码开发在灵活性和开发效率之间找到了一个新的平衡点。对于绝大多数企业软件项目而言,低代码开发出的软件和编码开发的软件在功能逻辑、用户体验、处理性能和可维护性上几乎一致,而开发效率却能得到成倍的提升。其根本原因在于低代码开发充分吸收了软件工程与系统架构最佳实践,在此基础上扩大了可视化的覆盖范围,将大量编码工作替换为可视化+自动生成,大幅降低了手工编码量,同步减少了测试的工作量,最终实现了开发效率倍增的效果。
详细了解:低代码平台的技术原理 , 低代码开发支撑软件全生命周期
低代码开发与编码开发的概念对比
开发工作 | 编码开发 (.NET+MS SQL) | 编码开发 (Java+MySQL) | 低代码开发 (以活字格为例) | 实现原理 (以活字格为例) |
---|---|---|---|---|
数据库结构 | 可视化(SQL Management Studio)或 SQL语句 | 可视化(Workbench)或 SQL语句 | 可视化设计 | 自动生成数据库Schema维护的SQL语句 |
数据库操作 - 查 | C#代码(EntityFramework)或 SQL语句 | Java代码(Mybatis)或 SQL语句 | 可视化设计 | 平台自动生成数据查询所需的后台服务和对应的SELECT语句,如果需要,也可自动生成数据绑定、支持分页的前端表格展示代码。 |
数据库操作 - 增、删、改 | C#代码(EntityFramework)或 SQL语句 | Java代码(Mybatis)或 SQL语句 | 可视化设计 | 自动生成CREATE、UPDATE和DELETE语句 |
业务处理逻 (后端) | C#代码 + ASP.NET MVC框架 | Java代码 + Spring Boot框架 | 可视化设计 | 自动生成WebAPI,提供给前端页面或第三方系统使用 |
非功能性需求 (后端,如RBAC权限等) | C#代码 + ASP.NET MVC框架 | Java代码 + Spring Boot框架 | 开箱即用 | 可使用平台内置功能,也可以参照业务处理逻辑的开发模式,自动生成WebAPI |
页面设计 (前端) | HTML / CSS代码 + ElementUI/VantUI框架 | HTML / CSS代码 + ElementUI/VantUI框架 | 可视化设计 | 参照WPF的GridLayout,自动生成响应式的HTML和CSS代码,可选经典样式、ElementUI、Vant等新样式 |
页面交互 (前端) | JavaScript代码 + Vue / React框架 | JavaScript代码 + Vue / React框架 | 可视化设计 | 参照MVVM模式,自动生成ViewModel视图、DataBinding数据绑定、Command命令、WebAPI调用等JavaScript代码,不依赖具体的框架。 Tips:视图等页面级变量均可存储在特定的页面区域(如左图的BM1)中,调试时可直观查看,正式发布时自动隐藏。 |
低代码中的编码开发工作
按照Gartner在低代码“最低标准”中明确提到的要求,低代码开发平台需要同时具备可视化开发和编程扩展两个能力。在以企业应用为代表的实际软件项目开发中,可视化开发覆盖了几乎全部前端页面设计与交互、多数的业务逻辑和数据处理(增删改查),大幅削减了重复性的编码工作,降低编码量的同时,降低了软件测试和后续维护的压力。而低代码平台的编程扩展则主要应用于解决独特的界面交互、少数的系统集成和大数量操作(如报表、批量导入等)的性能调优。正是因为编程接口的存在,我们可以确保低代码开发平台能够满足所有应用场景的需求,让开发团队不会遭遇“卡在最后1公里”的不利局面。除此之外,低代码开发平台还会提供开箱即用的用户管理、权限控制、Web服务、日志等模块,开发者无需开发这些非功能性的基础模块,进一步降低软件开发的工作量。
在实践中,即便是MES、SRM等企业核心业务系统,编码开发的工作量在整体中的占比也不会超过20%。这就意味着,相比于使用传统的开发方法,低代码能为超过80%的开发工作带来效率的显著提升。而剩余的不到20%,开发效率和传统编码开发保持一致。
编码扩展在低代码项目中有三种模式,可根据团队实际需求进行选择,以提升整体开发效率。大多数低代码开发平台支持前两种模式,部分支持第三种。
模式1:编码开发WebAPI或前端页面并集成进低代码项目
开发者使用编码开发的方式,将低代码平台无法支持的功能开发成单独部署的WebAPI或前端页面。在低代码开发平台中,开发者可以利用其内置的WebAPI调用功能,集成使用编码开发的WebAPI,或在编码开发的前端页面(或APP)中调用使用可视化构建的WebAPI。
这种模式的最大优势在于编码开发人员无需了解低代码平台,技术栈选择上也不受低代码平台限制。开发出的WebAPI也可以同时为编码开发的系统服务,提升整个解决方案的可维护性。该模式的缺点在于独立部署的WebAPI提升了开发管理和部署维护的复杂度。
使用被集成软硬件的SDK开发WebAPI用作“桥接”,是最典型的系统集成解决方案。
模式2:在低代码项目中嵌入代码
开发者通过低代码平台提供的API,在界面交互层、业务逻辑层(后端)或数据库层中,使用编码开发的方式替换可视化构建的功能,这部分代码可以和可视化构建的分层或模块无缝集成。
常见的编程接口和应用场景如下:
编程接口 | 应用场景 |
---|---|
前端 | 定制化的界面交互行为、动画和样式;操作终端提供的原生能力(如工业PDA设备的RFID扫描等) |
后端 - 业务逻辑 | 与专用系统做集成,如特殊的工业协议、应用层加密协议等;性能优化;复用现有类库 |
后端 - 数据库 | 性能优化;复用现有数据库能力(如函数、存储过程等) |
这种模式的优势在于无需单独部署,可随低代码项目一起上线。但是,该模式需要编码开发人员同时具备编码开发能力和低代码开发能力,学习成本高;编码开发出的功能与低代码项目深度绑定,可复用性差。
模式3:通过编码扩展低代码平台能力
开发者通过低代码平台提供的插件机制,以开发插件的形式,扩展低代码平台的可视化开发能力。在安装有该插件的低代码平台上,开发者可以像使用平台内置功能一样,以可视化的方式开发出原来平台无法支持的场景。
常见的插件类型和应用场景如下:
插件类型 | 应用场景 |
---|---|
数据源 | 操作数据库 |
连接器 | 调用第三方软件、硬件接口和SaaS服务 |
组件 | 针对特定行业场景的组件,涵盖前端和后端功能 |
前端组件 | 针对特定用户交互体验(UI/UX)的组件,仅应用于前端 |
这种模式下,开发者需要同时具备编码能力、组件抽象能力,对低代码平台的插件结构也需要有一定的理解,要求较高;但是,这种模式可以实现编码开发与可视化开发的隔离,并且可以实现对编码开发的复用。对于一些提供了类似于插件市场的低代码平台而言,进入其生态圈,为其开发插件也具有一定的盈利潜力。