带你一步步实现代码开发平台——概述、实现模式、整体框架

news2024/11/18 16:33:56

概述

低代码开发平台是一种开发工具,它允许用户使用图形界面和少量编码来创建应用程序。这种平台的目的是加快应用程序开发速度,减少开发成本和技能门槛。目前,市场上有许多低代码开发平台可供选择,包括Microsoft Power Apps、OutSystems、Mendix等等。这些平台提供了各种各样的功能,例如可视化应用程序构建、自动化工作流程、数据集成和分析等等。此外,这些平台还提供了各种各样的模板和组件,以帮助用户更快地构建应用程序。

虽然低代码开发平台的使用越来越普遍,但它们并不是适用于所有情况的银弹。在某些情况下,使用低代码平台可能会导致性能问题或限制应用程序的功能。因此,在选择低代码平台时,需要仔细考虑其适用性和可扩展性。

当下国内低代码无代码概念处于风口浪尖,涌现了大量的平台,在此不一一列举。

客观地说,低代码开发平台,通过配置方式,确实可以大幅提升开发效率,降低开发成本,缩短工期。同时,也降低了对开发人员技术要求,并且生成的代码标准化,一些低级BUG会减少,从而间接提升了程序质量。

不过,低代码开发并非是什么新的概念或理念,而是由来已久。
一个软件系统中,不可避免存在大量功能存在共性,典型的功能如下:
单实体:如计量单位,这是最简单的一种情况,对应单张库表,布局上采用列表展示+增删改操作方式。
一主多从实体:如销售订单,包括订单和订单明细两部分信息,通常是1个主体,加上1个或多个从属,对应多张库表,从表关联到主表,布局上采用Tab页方式展示从属部分。
树状实体:如组织机构,通过关联关系形成树状结构,布局上通常是左树右表。注意这里有一种特殊的情况,实体本身是一个单实体,但是有属性关联到树状结构上,如用户,关联到组织机构上。

对于上述功能抽象,建立模型,形成标准化,从而可以通过配置方式来定义数据,加上模板技术来生成程序源码,实际上就是通常所说的代码生成器的功能。
代码生成器在应用开发平台中的地位,相当于工业生产中的“机床”,通过代码生成器产生的代码会高度标准化。代码生成器的意义在于,将软件系统中大量重复性的开发工作,也就是通常所说的“体力活”,通过简单配置来实现,大幅提升开发效率。但是,仅有代码生成器是远远不够的,应用系统中的复杂业务逻辑和个性化前端页面,仍然需要开发人员,基于原生开发模式来实现。

低代码开发平台的核心,实际就是代码生成器,或者说,是代码生成器发展到高级阶段的产物。

实现模式

低代码平台的主要特点是以配置为主,从实现模式而言,主要分为三类,分别是库表驱动、表单驱动和模型驱动。

库表驱动

这种模式最贴近传统开发模式,即先使用数据库建模工具,如PowerDesigner,设计数据库表,将库表在数据库中生成出来。然后再通过读取库表信息,进行逆向工程,生成控制器层、服务层、数据库读写层等各层代码。当前主流的MyBatis框架,自带的代码生成器实际就是这种实现思路和实现方式。

表单驱动

这种模式直接提供布局和UI组件,通过可视化的方式进行业务表单的配置,由平台自动根据配置,向下生成数据库表,向上生成功能页面。该模式下服务层实际被被“弱化”了,往往采用的是一个或几个通用服务来适配。不过,这种直接“干表单”的模式,往往只适用于一些比较简单的业务功能,如在疫情中通过配置快速构建一张信息收集表。

模型驱动

这种模式顾名思义,是先创建模型,通过模型来生成库表,在模型之上定义视图,也就是页面。客观地说,这种模式更适合将物理世界抽象建模为软件系统中的虚拟世界,无论是面向对象,还是领域驱动设计,都能适配。不过这种模式也是实现最复杂的一种。

目标

我的应用开发平台,目标是通过配置,把软件系统中的共性部分,或者称之为“体力活”给解决掉,避免枯燥乏味的重复开发。
同时,预留良好的扩展性,通过源码开发方式,补足低代码配置能力的不足。

低代码配置要做完善,好用和易用,实际时间和精力投入是非常大的。

我的目标是实现一套中等规模,简单易用的低代码配置平台,在复杂度和易用性方面,做一个取舍和平衡。

框架设计

整体框架设计如下图。

模块配置

一个软件系统通常会划分成多个功能模块,例如:采购模块、销售模块。 每个功能模块下,会有多个相关的实体,如系统管理模块下会有组织机构管理、用户管理、角色管理、权限管理等。

实体配置

实体是一个可供管理对象的基本单元,例如:采购订单、供应商。 实体归属于某个功能模块,是一个偏业务角度的逻辑概念。

模型配置

普通的实体,对应着单一模型。但一个实体可能对应多个模型,例如,销售订单实体,是由销售订单和销售订单明细两个模型组成。每个实体有且仅有一个主模型。模型中对实体属性的进行定义。模型对应着数据库中的一张库表,模型与库表是一对一关系。模型属性对应着库表中的字段,其关系有可能不是一一对应。模型属性可能会将一些基础属性组合或进行逻辑计算产生,如在用户的模型中有一个属性叫出生日期,对应库表有一个字段存储,但在模型层面,还会有一个基于出生日期计算得到的当前年龄。
常见的模型有三类:单表、主从和树。

视图配置

视图对应着Web功能页面,抽取共性,建模产生以下类型的视图

  • 列表视图
  • 新增视图
  • 修改视图
  • 查看视图
  • 树视图
  • 树表视图
  • 主从视图
  • 参照视图
  • 自定义视图

对于对应单一模型的普通实体,如系统参数,对应着列表视图,新增视图、修改视图和查看视图,即囊括了常见的查询、新增、修改、查看页面(删除功能不是一个页面,而仅是一个功能按钮,位于列表页面)。在这里插入图片描述

对于自关联的实体,如组织机构,列表视图仅仅是一个表格平铺,难以展现层次关系,直观性很差。这时候就需要树表视图,左边是一个树,右边是一个列表,实际上树表视图是一张由树视图和列表视图组合而成的复合视图。
在这里插入图片描述
对于主从关系的实体,如销售订单,使用主从视图,实际跟树表视图类型,也是一种复合视图。

参照视图是用于供其他实体关联属性时使用的选择页面,如用户需要指定组织机构,具体又可以分为三种:普通参照、树参照和列表参照。如合同选择,一个数据列表就可以了,即普通参照。组织机构选择,则需要一棵树,即树参照。用户选择,需要左树右表,即树表参照。
在这里插入图片描述

自定义视图用于一些个性化的页面,无法进行标准化配置,通过原生开发实现,指定路径,纳入到整个体系中来。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/455292.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

学系统集成项目管理工程师(中项)系列11a_沟通管理(上)

1. 基本概念 1.1. 构成 1.1.1. 接收者和发送者 1.1.1.1. 参与者既发送信息,又接收反馈,是一体的 1.1.2. 信息(Message) 1.1.2.1. 多个参与者之间需要分享的信息,表达思想和情感的组成物 1.1.2.2. 信息的存在方式…

虚拟化技术 — Libvirt 异构虚拟化管理组件

目录 文章目录 目录Libvirtlibvirt API 函数库libvirtd Daemon软件架构权限模式运行模式XML 格式 virsh CLI Libvirt QEMU-KVM 环境部署HostOS 配置优化(可选的)开启 KVM Nested 嵌套虚拟化安装 CentOS GNOME 图形界面安装 Libvirt QEMU-KVM Libvirt 的…

C语言ctype.h头文件中2类好用的库函数

本篇博客会讲解C语言ctype.h这个头文件中的2类好用的库函数,分别是字符分类函数和字符转换函数。 字符分类函数 字符分类函数,指的是判断一个字符是不是属于某个类别,如果属于这个类别,返回非0数;如果不属于这个类别…

性能测试工具 IxChariot:Tcl脚本调用方法介绍

ixChariot是一款功能强大的性能测试软件,可用来测试有线和无线性能,可以模拟真实应用程序流量,并提供关键性能指标,包括吞吐量、丢包、抖动、延迟、MOS等。本文简单介绍如何使用IxChariot Tcl API来实现自动化跑流。 目录 IxChari…

RK3399平台开发系列讲解(调试篇)断言的使用

🚀返回专栏总目录 文章目录 一、什么是断言二、静态断言三、运行时断言沉淀、分享、成长,让自己和他人都能有所收获!😄 📢断言为我们提供了一种可以静态或动态地检查程序在目标平台上整体状态的能力,与它相关的接口由头文件 assert.h 提供。 一、什么是断言 在编程中…

浏览器状态同步和路由-SSR和单页面应用的分析 【单页面应用和服务端渲染】

目录 单页面应用(优缺点)(Single Page Application) 优点: SPA的缺点: 服务端渲染(Server Side Rendering) SSR示例(一个ssr小引擎) SSR优缺点分析 总结…

Opencv+Python笔记(八)轮廓检测

目录 一、轮廓的检测和绘制1.读入图像2.将读入图像转化为灰度图3.对灰度图进行二值化 [图像的阈值化处理](https://blog.csdn.net/Ggs5s_/article/details/130301816?spm1001.2014.3001.5501)4.进行轮廓检测5.在原图中显示轮廓 二、轮廓层级关系1.RET_LIST2.RETR_EXTERNAL3. R…

座椅内饰如何「跟上」智能电动?这款智能概念座舱看到未来

进入智能电动汽车时代,理想的车内空间应该是怎样的?作为“内饰空间创造者”、全球三大汽车座椅及内饰厂商之一,丰田纺织在2023上海车展上给出了一系列解决方案。 4月19日,丰田纺织携诸多产品亮相本次上海车展,包括面向…

【速卖通】 AliExpress(速卖通)关键词搜索结果采集

采集场景 在AliExpress(速卖通) 首页中 http://www.aliexpress.com 中输入关键词,采集关键词搜索后得到的商品列表信息。 采集字段 关键词、标题、商品id、商品图片地址、商品详情链接、价格、免费退送货、星级、已出售数量、店铺名 采集结果 采集结果可导出为E…

C语言入门篇——函数篇

1、什么是函数 首先,什么是函数?函数(function)是完成特定任务的独立程序代码。单元语法规则定义了函数的结构和使用方式。虽然C中的函数和其他语言中的函数、子程序、过程作用相同,但是细节上略有不同。 为什么使用函数? 首先…

刷题训练2之AcWing第 96 场周赛

竞赛 - AcWing 一、完美数 4876. 完美数 - AcWing题库 1、题目 如果一个正整数能够被 2520 整除,则称该数为完美数。 给定一个正整数 n,请你计算 [1,n]范围内有多少个完美数。 输入格式 一个整数 n。 输出格式 一个整数,表示 [1,n] 范…

【社区图书馆】操作系统的经典书籍

操作系统的经典书籍 一、引言二、书籍的选择三、优缺点3.1、《操作系统》3.2、《计算机操作系统》 小结 一、引言 《操作系统》罗宇和《计算机操作系统》汤小丹这两本书都是关于操作系统的经典书籍,各有优势。 二、书籍的选择 首先,从内容深度上&…

倾斜摄影超大场景的三维模型的顶层合并常见的问题分析

倾斜摄影超大场景的三维模型的顶层合并常见的问题分析 倾斜摄影超大场景的三维模型顶层合并是将多个局部区域的点云或网格数据进行融合,生成一个整体的三维模型的过程。在这个过程中,常见的问题包括: 1、数据不一致。由于数据采集时间、空间…

SAP SM30表格维护生成器隐藏记录日志字段

1.背景 在表格维护生成器中往往会隐藏记录日志字段,不让用户直接查看,而供运维或者开发部门使用,如下所示: 2.实现 2.1 SM30逻辑流和屏幕元素中删除日志记录字段 2.2 创建事件,写入记录日志代码 2.2.1 记录日志方式…

Node.js使用CORS解决跨域问题的三种方法

目录 1、通过CORS中间键解决2、设置响应头3、app.all解决4、解决跨域问题案例 现如今,实现跨域数据请求,最主要的两种解决方案,分别是JSONP和CORS. JSONP:出现的早,兼容性好(兼容低版本IE)。是前端程序员为…

m1下利用dockerdesktop安装ELK

一、背景:公司有一个需求,就是将txt中的数据加载到es中,之前没用过es,想着先在本地安装一个,然后再做测试。 二、安装docker desktop 打开docker的官网,下载苹果芯片的docker 网址:https://ww…

当DevOps遇见AI,智能运维的黄金时代开启

文章目录 1. 当DevOps遇见AI,智能运维的黄金时代2. 什么是DevOpts?改变开发格局:测开、运开必然趋势3. 什么是Docker容器化,它会替代掉VM虚拟机吗?4. 运维的终点是开发5. 实际项目的部署案例6. 誉天程序员课程 1. 当De…

顶象推出应用隐私合规检测服务

为帮助开发者更高效地进行App隐私合规检测,顶象推出应用隐私合规检测服务,快速发现App可能存在的各类隐私安全漏洞,并提供详细的检测报告,给出专业的合规整改建议。该服务可应用于上架前和合规检测,通过个人信息保护分…

map<int,int>和map<int,int>::iterator

map< int,int >和map< int,int >::iterator 一、map<int,int>、map<string, string>的含义二、map<int,int>::iterator的作用三、map<int,XXX>的自动升序特点 一、map<int,int>、map<string, string>的含义 map容器是CSTL的一…

学成在线笔记+踩坑(7)——绑定媒资

导航&#xff1a; 【黑马Java笔记踩坑汇总】JavaSEJavaWebSSMSpringBoot瑞吉外卖SpringCloud黑马旅游谷粒商城学成在线牛客面试题 目录 8 绑定媒资 8.1 需求分析 8.1.1 业务流程 8.1.2 数据模型 8.2 接口定义 8.2.1 抽取模型类 8.2.2 定义接口层 8.3 接口开发 8.3.1…