写点什么

前端架构设计优化:构建可扩展的低代码平台

作者:郝振佳

  • 2023-03-10
    北京
  • 本文字数:3578 字

    阅读完需:约 12 分钟

前端架构设计优化:构建可扩展的低代码平台

自 Forrester 在 2014 年提出低代码的概念以来,特别是 2021 年国内低代码厂商的融资热潮以来,低代码化已经成为现今各大企业调研和践行的热门方向。面对日益复杂的需求和应用场景,可扩展性对于低代码平台的重要性日益凸显。我们将从整体架构设计、页面描述协议设计、渲染器和设计器的架构设计这四个方面,来探讨如何设计一个高可扩展性的低代码平台。

 

本文整理自中设数字前端架构师郝振佳在今年 8 月 ArchSummit 全球架构师峰会(北京站)上的演讲分享,主题为“可扩展的低代码平台前端架构设计”。分享主要分为四部分:1、低代码发展概述;2、低代码平台前端整体设计;3、低代码平台可扩展能力设计 4、低代码平台的未来与展望。

 

低代码发展概述

什么是低代码?艾瑞咨询在 3 月 2 号发布的中国低代码行业生态发展洞察报告上面是这么说的:低代码开发平台是通过为开发者提供可视化的应用开发环境,降低或去除应用开发对原生代码编写的需求量,进而实现便捷构建应用程序的一种解决方案。如果说猪站在风口上都可以飞起来,那么低代码可能是我们前端离风口最近的一次。


低代码平台的应用场景可以分成通用型和垂直型这两类。低代码平台的产品形态可以按照搭建时是否需要代码来分成狭义的低代码平台和零代码平台这两类。它们面向的对象不同,关注点也有所不同。狭义的低代码平台主要服务于关注业务逻辑的开发部门,可能给开发用,有可能给前端用,也有可能给后端用,需要有少量的代码来进行模块衔接等等一系列的辅助功能。零代码平台更多的强调面向于业务部门,更强调其低门槛性,业务的同学可以在不写一行代码的情况下,仅仅通过可视化拖拽的方式来完成系统的构建,只需要理顺业务逻辑就可以了。



我们在此对低代码平台和零代码平台做了个对比,列出了三个概念,叫做 ProCode 和 LowCode 和 NoCode。像 NoCode 这个方向,随着使用门槛的降低,同时也失去了灵活性,想要强调灵活性,可能就需要向 ProCode 方向发展,就是纯手写代码没有实现不了的功能。


那么,有没有一种解决方案可以做到兼具灵活性和使用门槛低?在这里,请允许我卖一个关子,我们接着往下进行。

低代码平台前端整体设计

整体系统架构设计

第二部分是低代码平台的设计。我们的任务是要满足集团内所有的 2E 和 2B 的移动端页面的搭建需求。我们大概的组织结构是,前面会有一个前端研发部,后面有不同的业务部门,他们所负责的各个应用 App 页面的风格各不一致。我们要先明确系统的设计目标,它是一个移动端的低代码平台,是一个通用型的具有高可扩展性的低代码平台。因为我们只关注页面的搭建,不需要去关注流程表单以及可视化 BI 之类的东西,我们仅仅关注于纯前端的页面搭建。



我们平台的架构基本上关键部分由四部分组成。位于核心部分的是页面描述协议,它是连接各个部分的中枢,页面设计器负责生成页面描述协议。平台后端做页面描述协议的存储以及附属的逻辑等等,另外要有一个运行时,它的核心是渲染引擎,它是页面描述协议的消费者。



我们如何才能够覆盖更多的个性化需求?在这里,我们列举了代码能够实现的功能。我们以 View 为例,它可能有属性、事件、Data、计算属性、Watch、方法等等一系列逻辑。你写代码能够做到的,我们低代码平台都有对应的形式给你提供支持,不敢说满足百分之百的个性化需求,但 90%以上没有问题。在对应的 LowCode 端,我们做了对应的解决方案,像计算属性和 Watch 都能够通过配置来解决,像 Data 这一侧我们引入了变量这样一个概念,它的使用过程跟 Data 的定义以及修改是差不多的,像方法我们引入了自定义方法,在业务上,我们可能会有业务组件,后面规划会去做区块模板等等一系列的功能,这是提高扩展性的总体思路。



页面描述协议设计

在设计的过程中,我们怎么去做页面描述协议的设计?现在的 MVM 页面 UI 已经抽象成了一个一个的组件树,而我们做得更进一步,把组件树抽象 JSON 化为 SchemaNodeTree,每一个 SchemaNode 的结构针对于组件的属性和事件去做处理。


基于插件的渲染器设计

为什么我们要先说解析引擎?是因为页面设计侧跟解析引擎有一些关联。对于解析引擎,我们的设计思路是一切皆插件。我们底层实现了一个 PluginDriver,由对应的 PluginManager 去管理整个 Plugins,再往上是一个扩展层,对应着各个 Plugins 的实现。Evaluator 求值器也是插件,只不过随着页面协议确定之后,它的逻辑相对固定,不太可能会变化,我们把它放到了 Core 层。组件渲染 SchemaRenderer 是总体的出口,再往上是我们设计的一系列插件。像 Passers,负责的是把 Schema Node 解析成对应的组件以及一些个性化的逻辑,Validators 大家应该相对比较熟悉,就是去处理 Form 的一些校验等,Actions 是我们对 Events 处理抽离出来的一个插件。另外包括一些像请求拦截的拦截器等等一系列 Utils 是在扩展层。最上面有一个封装层,封装层算是一个出口,我们把整个引擎做了一个简单的包装提供给 API。



配置驱动的设计器设计

页面设计器的设计思路用一句话来形容就是配置驱动。我们虽然分了配置层、服务层、数据层、组件层和业务层,但是大体可以分为两层,上面属于核心能力的提供,下面属于配置和扩展。我们的页面设计器仅仅做核心能力的提供,具体的能力由配置来驱动。我们的配置目前分成三部分,第一部分是组件,就是页面能够实现的程度多么丰富,取决于平台能够支持的组件有多么丰富,我们在后面再去扩展层做详细的说明。提供能力扩展的是插件,就是前面讲到的解析引擎的各个插件。阿里开源的 LowCodeEngine 是一个非常优秀的框架,我们借鉴了它的思路也对 Setter 进行了抽离,支持 Setter 扩展。再往上是 AssetsDriver,对扩展层管理的功能,有 ComponentAssets Manager 去管理组件,PluginAssets Manager 用管理插件,SetterAssets Manager 用来管理 Setter。数据层是 VUEX 实现的一个全局的数据通信。再往上我们会抽离一些对应的组件,在业务层进行组装。

低代码平台可扩展能力设计



最后,我们对低代码平台的扩展能力做一个总结,它可以分成能力提供层,中间一个连接上下的协议层,以及上面一个扩展层。底层是核心的页面设计器和渲染引擎,再往上提供了一系列的描述协议,包括:页面描述协议用于页面的展现以及渲染引擎核心的关联,组件描述协议对组件进行约束和定义,还有插件描述协议和设置器描述协议。另外我们在组件、插件和设置器层进行扩展,就能够完成我们最终能力的实现和丰富。

未来和展望

低代码会不会替代程序员

所有前端的同学还有一些使用过后端的同学都有这样的疑问,就是低代码平台会不会把我们替代掉,我们会不会失业?低代码平台会不会替代程序员?我个人的观点是,首先低代码平台是一个提效工具,未来可能低代码平台会变成像 Office 一样的工作技能,所以低代码平台更充满想象空间的地方是能够让更多的人运用低代码平台去做我们原来需要程序员经过许多年培训才能做的工作,可能他做出来的性能不那么优,但是能够初步满足业务的需求,所以现在低代码的行业都会说未来可能是一个人人都是开发者的时代。


另外,我觉得低代码平台等等现代技术的发展,是对程序员的抽象能力和架构能力提出了更高的要求,所以我们要在基于对业务的理解的基础上做抽象和架构的设计,能够很好地支撑低代码平台的架构以及可维护性。我们要去理解设计模式、抽象以及架构等一系列的技能,能够脱离出业务,写出一些更抽象型更通用型的代码。


最后,个人感觉有可能在未来会出现低代码开发工程师这样一个新的职业,他可能是基于各种各样的低代码,加上少量的程序支持,快速做系统的开发和交付。大家如果对架构等深入内容无感的话,可以关注这个方向。

低代码的未来



还记得前面我卖的那个关子吗?我们有没有一种解决方案能够让它兼具灵活性和低使用门槛?我们的一些思考是这样的,就是可能未来的低代码架构可以称之为哑铃型的架构,中间会有一个相对比较核心的低代码的框架去做支撑,然后向下连接的是 ProCode,可以有自己的组件生态、插件生态以及设置器生态等一系列通过 ProCode 来实现的能力。这些能力进行有机组合可以产生出各种各样的面向各个功能的低代码平台,或者是零代码平台,就是往上是 LowCode,或者是 NoCode,往下是 Pro Code。它会有 LowCode 框架这一层去做中枢或者桥接,把它们有机地结合在一起,形成一个生态。首先它是一个有机的生态,是一个一体化的系统。其次,我们可以牺牲它的灵活度,面向于具体的领域形成对应的零代码的解决方案来降低大家的使用门槛。或者零代码平台有对应的低代码平台做支撑,一旦你的需求不支持,第一步的解决方案是支持平滑升级到低代码平台,做增强功能的建设。如果再不支持,就需要程序员介入,以插件或者组件等等一系列的方式来做个性化的定制。虽然我们表现出来的可能是一个零代码平台,但是背后一定要有一个完善的生态去支撑它。

相关阅读:

低代码开发平台 助力教育行业信息化建设

低代码开发平台 让数据应用不再复杂

一款好的低代码开发平台应该是什么样?

低代码开发平台 打开数字化转型普惠之门

2023-03-10 16:308336

评论

发布
暂无评论
发现更多内容

Aetina发布首款采用NVIDIA Ada Lovelace架构的MXM图形模块

财见

Java 程序员的待遇为何一直居高不下?

伤感汤姆布利柏

TiDB 在全球头部物流企业计费管理系统的应用实践

TiDB 社区干货传送门

实践案例

专科逆袭!裁员后薪资翻倍,他的成功秘诀竟然是…

测吧(北京)科技有限公司

测试

PingCAP 故事|势高,则围广:TiDB 的架构演进哲学

TiDB 社区干货传送门

为什么说TiDB在线扩容对业务几乎没有影响

TiDB 社区干货传送门

TiDB 底层架构 数据库架构选型 TiKV 底层架构

WMS仓储管理系统的作用是什么?

万界星空科技

wms WMS仓库管理 万界星空科技 扫码出入库管理

火山引擎边缘云2023年度回顾,挑战与创新的交响乐章

火山引擎边缘云

边缘计算 火山引擎 火山引擎边缘云

每日一道Java面试题:说一说Java中的异常

EquatorCoco

Java 面试 前端 开发语言

用 Footprint 的交易类型标签揭秘链上交易

Footprint Analytics

区块链 加密货币

基于生成式人工智能的平台 Cognizant Flowsource™ 发布,旨在为现代工程提供动力

财见

如何通过ETL实现快速同步美团订单信息

RestCloud

美团 ETL 数据集成工具

初识TiDB Data Migration迁移工具及实践

TiDB 社区干货传送门

迁移 7.x 实践

作业帮 x TiDB | 多元化海量数据业务的支撑

TiDB 社区干货传送门

关于如何优化TiDB中的写热点问题

TiDB 社区干货传送门

实践案例 7.x 实践

2023年哪个前端框架用的最多?

伤感汤姆布利柏

TiDB 事务心跳超时机制测试

TiDB 社区干货传送门

故障排查/诊断

【服务器搭建】快速完成幻兽帕鲁服务器的搭建及部署【零基础上手】

恬静的小魔龙

服务器 幻兽帕鲁

揭秘C语言的心脏:深入探索指针与数组的奥秘

不在线第一只蜗牛

Java C语言 开发语言

从 20 多套 MySQL 到 1 套 TiDB丨骏伯网络综合运营管理平台应用实践

TiDB 社区干货传送门

实践案例

打造工业4.0的5G+边缘云服务产业生态,艾灵完成1.5亿元A轮融资

Geek_2d6073

质量管理QMS系统实施的好处是什么?

万界星空科技

质量管理 万界星空科技 QMS 质量管理QMS系统 生产质量管理

面试官:你能简单聊聊MyBatis执行流程

华为云开发者联盟

Java 开发 华为云 华为云开发者联盟

软件公司定制开发的软件有哪些?

天津汇柏科技有限公司

软件开发定制

使用无代码/低代码平台进行开发的 5 大挑战

NocoBase

开源 低代码 低代码开发 无代码 无代码平台

Unity 现正式支持 visionOS 平台,赋能Apple Vision Pro应用创建

财见

零售业海量场景下 ToC 系统的数据库选型和迁移实践

TiDB 社区干货传送门

实践案例

MES和QMS怎么选?

万界星空科技

mes 万界星空科技 QMS 质量管理QMS系统 生产管理

构建 Streaming Lakehouse:使用 Paimon 和 Hudi 的性能对比

Apache Flink

大数据 flink 实时计算

前端架构设计优化:构建可扩展的低代码平台_大前端_InfoQ精选文章