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

news/2024/5/20 15:48:09/文章来源:https://blog.csdn.net/seawaving/article/details/130324915

概述

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

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

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

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

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

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

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

实现模式

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

库表驱动

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

表单驱动

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

模型驱动

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

目标

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

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

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

框架设计

整体框架设计如下图。

模块配置

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

实体配置

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

模型配置

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

视图配置

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

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

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

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

六、Golang的并发

Go语言的并发指的是能让某个函数独立于其他函数运行的能力。当一个函数创建为goroutine时,Go会将其视为一个独立的工作单元。这个单元会被调度到可用的逻辑处理器上执行。 Go语言运行时的调度器是一个复杂的软件,能管理被创建的所有goroutine并为其分配执…

Spring之Bean的配置与实例

Spring之Bean的配置与实例 一、Bean的基础配置1. Bean基础配置【重点】配置说明代码演示运行结果 2. Bean别名配置配置说明代码演示打印结果 3. Bean作用范围配置【重点】配置说明代码演示打印结果 二、Bean的实例化1. Bean是如何创建的2. 实例化Bean的三种方式2.1 构造方法方式…

NewBing 边栏快捷插件没有了!如何解决?如何脱离浏览器使用 New Bing?

作者:明明如月学长, CSDN 博客专家,蚂蚁集团高级 Java 工程师,《性能优化方法论》作者、《解锁大厂思维:剖析《阿里巴巴Java开发手册》》、《再学经典:《EffectiveJava》独家解析》专栏作者。 热门文章推荐…

[世界读书日] 最好的书,都在博雅之中

今天是世界读书日(4月23日),还是谈谈读书。 我很少看到有人说读书不好的,但很少看到有人爱读书,也很少看到有人读到了好书。 好书、好读书、读好书,都是很稀缺的。 一、好书的作用 基本上,我们遇…

NFC 学习笔记 5 MFRC522读写器2 NDEF

NDEF简介 NDEF(NFC Data Exchange Format)是一种标准化的数据格式,用于将数据存储在NFC标签或智能手机中。该格式是NFC论坛定义的,目的是在不同的NFC设备之间交换信息。 NDEF格式可以存储各种类型的数据,例如URL、文本…

参数与非参数检验:理解差异并正确使用

数据科学是一个快速发展的领域,它在很大程度上依赖于统计技术来分析和理解复杂的数据集。这个过程的一个关键部分是假设检验,它有助于确定从样本中获得的结果是否可以推广到总体。 在这篇文章中,我们将探讨参数与非参数检验之间的区别&#…

第3章:select

1.最基本的select语句 select … from…select 字段1,字段2,…from 表名* 表中所有字段(列) 2.列的别名 字段1 as 别名1字段1 别名1as:alias(别名)可以省略如果别名有空格使用一对””引起来…

pycharml利用ddddocr和selenium识别验证码并登录

文章目录 1OCR2 ddddocr3使用案例4 常见问题代码详情获得XPATH方法 1OCR OCR (Optical Character Recognition,光学字符识别),是指电子设备(例如扫描仪或 数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符…

[Platforimio] LVGL +TFT_eSPI实现触摸功能

💥💥💞💞欢迎来到本博客❤️❤️💥💥 本人持续分享更多关于电子通信专业内容以及嵌入式和单片机的知识,如果大家喜欢,别忘点个赞加个关注哦,让我们一起共同进步~ &#x…

【LeetCode训练营】反转链表 移除链表元素 详细图解 203,206

💌 博客内容:LeetCode 训练营 😀 作  者:陈大大陈 🚀 个人简介:一个正在努力学技术的准前端,专注基础和实战分享 ,欢迎私信! 💖 欢迎大家:这…

谁在成为产业经济发展的推车人?

区域发展的新蓝图中,京东云能做什么?它的角色是什么?这个问题背后,隐藏的不仅是京东云自身的能力和价值,更是其作为中国互联网云厂商的代表之一,对“技术产业”的新论证。 作者|皮爷 出品|产业家 关于云…

配置zabbix自定义监控项

1.需要安装zabbix-agent服务,使用的zabbix版本为5.0版本 参考:zabbix监控linux主机_Apex Predator的博客-CSDN博客 2.创建存放脚本目录并编辑监控服务的脚本(此处监控一下服务是否存活) mkdir /opt/zabbix_jb vi /opt/zabbix_jb/service_status.sh …

进阶必看 | 有关BIMer强推的5本书,看过的都竖大拇指!

大家好,还是我,建模助手。 本期的主题都是围绕着:热点。除了建模助手的品牌资讯之外,还有一些与行业相关的热点。 这不,4月23日是正好的世界读书日,给大家搞一波书籍推荐! 小编认为&#xff…

24从零开始学Java之如何正确地使用一维数组

作者:孙玉昌,昵称【一一哥】,另外【壹壹哥】也是我哦 千锋教育高级教研员、CSDN博客专家、万粉博主、阿里云专家博主、掘金优质作者 前言 在之前的文章中,壹哥给大家讲解了java里的顺序结构、分支结构、循环结构等内容&#xff0…

pytest使用 一(安装、简单的测试用例、运行)

Pytest框架 — 1.Pytest测试框架介绍 - 知乎 2023最新pytest接口自动化测试框架,三天带你精通pytest,带你写出最好的代码!(已更新2023新版)_哔哩哔哩_bilibili 一、pytest安装 pip3 install pytest # 查看pytest版本…

【蓝桥杯省赛真题19】python完数及个数 青少年组蓝桥杯python编程省赛真题解析

目录 python完数及个数 一、题目要求 1、编程实现 2、输入输出 二、解题思路

Python 基础(十一):集合

❤️ 博客主页:水滴技术 🌸 订阅专栏:Python 入门核心技术 🚀 支持水滴:点赞👍 收藏⭐ 留言💬 文章目录 一、声明集合1.1、使用 {} 声明集合1.2、声明空的集合1.3、自动过滤重复元素 二、添加…

隐私计算,联邦学习

隐私计算(“隐私保护计算” Privacy-Preserving Computation) 隐私计算是一类技术方案,在处理和分析计算数据的过程中能保持数据不透明、不泄露、无法被计算方法以及其他非授权方获取。 数据方是指为执行隐私保护计算过程提供数据的组织或个…

MP长篇综述 | 植物泛基因组及其应用

2022年12月15日,中山大学史俊鹏副教授、中国科学院遗传与发育生物学研究所田志喜研究员、中国农业大学赖锦盛教授和上海师范大学黄学辉教授共同撰文,在Molecular Plant杂志发表了题为“Plant pan-genomics and its applications”的长篇综述。该论文对植…

github 基础

github 基础 前面讲了 git 的基本使用,这里简单的提一下 github 的基本使用,主要还是 pull 和 push 两个部分。其中 pull 好像有了一些变化,现在似乎是需要 rebase 而不是自动就帮你做了……?不过 rebase 的部分之后再提。 当然…