SpringBoot低代码架构

目前市场流行的低代码平台从前端开源架构开始,基于可视化编辑器、动态页面渲染、配置化数据源等特性,提供前端页面的低代码开发的能力。但是后端的低代码从产品设计到技术能力相对比较落后。

Groovy 是用于Java虚拟机的一种敏捷的动态语言,能够与 SpringBoot框架很好地结合,用于扩展现有代码, 提高编写代码灵活性:

我能想到的有这几点核心功能:

  • 标准化数据模型:

    Provider(厂商): 提供Resource资源标准化管理方式,具有可复制性、可插拔性等特点。

    Resource(资源): 抽象对象数据模型,预留扩展点设计。

    Action (操作): 管理Resource资源的生命周期,包括查询、新增、更新等行为。

  • 可配置API引擎:

    Swagger解析: 导入Swagger文件,解析Swagger中Path、Method、Parameters等标记,生成本地方法。

    Signature认证: 在 HTTP Header 里加认证信息和 API 签名保证接口安全性,支持配置自定义签名方法。

  • 自动化任务引擎:

    Resource编排: 在模板中定义资源Action操作所需的任务、任务间的依赖关系等。任务引擎将根据模板自动完成所有任务的创建和配置,实现自动化执行。

分层架构

WechatIMG133.png

629028f7612bf.png

这两张图已经把整个架构的绝大部分内容展现给了大家,但是一下子这么多信息量可能很难消化。

既然整个示例架构项目是一个 Maven 父子结构,那我们就从父模块一个个好好过一遍。

首先父模块的 pom.xml 引入groovy包:

 <dependency>
    <groupId>org.codehaus.groovy</groupId>
    <artifactId>groovy-all</artifactId>
    <version>2.4.16</version>
</dependency>

<dependency>
    <groupId>org.kohsuke</groupId>
    <artifactId>groovy-sandbox</artifactId>
    <version>1.7</version>
</dependency>
复制代码

Adapter 层

接下来我们按照之前架构图从上到下的顺序,一个个看。

首先是 provider-manage 模块中ProviderFacade,这名字是不是很新鲜?但其实,可以理解为平时我们用的 controller 层(对于 Web 应用来说),换汤不换药。

Controller 这个名字主要是来自于 MVC,因为是 MVC,所以自带了 Web 应用的烙印。然而,随着 mobile 的兴起,现在很少有应用仅仅只支持 Web 端,通常的标配是 Web,Mobile,WAP 三端都要支持。

62902c523098d.png

App 层

接着上面说的,我们的 app 模块作为服务的实现,存放了各个业务的实现类,并且严格按照业务分包,这里划重点,是先按照业务分包,再按照功能分包的,为何要这么做,文章后面还会多说两句,先看图:

62902bf46b493.png

ProviderService 和 ResourceService 分别对应了厂商和资源两个业务子领域。里面是定义 app 层下面三种功能:

可以看到,消息队列的消费者和定时任务,这类平时我们业务开发经常会遇到的场景,也放在 app 层。

Domain 层

接下来便是 domain,也就是领域层,先看一下领域层整体结构:

62902cd7edff2.png

可以看到,首先是按照不同的领域(Provider 和 Resource)分类,里面则是两种主要的文件类型:

  1. 领域实体:实体模型可以是充血模型(请自行了解),例如示例里的 Provider.java 如下:
  2. 领域能力:是领域对外暴露的服务能力

Infrastructure 层

最后是我们的 infrastructure 也就是基础设施层,这层有我们刚才提到的 MyBatis 的 mapper 等数据源的映射和 config 配置文件。

62902dca23e12.png

所有层讲完了,总结** 架构的层级:**

1)适配层(Adapter Layer):负责对前端展示(web,wireless,wap)的路由和适配,对于传统 B/S 系统而言,adapter 就相当于 MVC 中的 controller;

2)应用层(Application Layer):主要封装了核心业务逻辑,调用领域层做业务处理,如果需要的话,发送消息通知等。层次是开放的,应用层也可以绕过领域层,直接访问基础实施层;

3)领域层(Domain Layer):主要通过领域对象(Domain Entity)的方法对 App 层提供业务实体和业务逻辑计算。领域是应用的核心,不依赖任何其他层次;

4)基础实施层(Infrastructure Layer):主要负责技术细节问题的处理,比如数据库的 CRUD、搜索引擎、文件系统、分布式服务的 RPC 等。

架构并不完美

但是总的来说,只是给你提供了一种架构设计的思想,并不深入到强制你使用某种规范的层面,所以对于架构 中你觉得复杂,或者不理解的地方,很多时候需要你自己来做权衡,作取舍。取其精华,去其糟粕的运用到你的项目中。

总结

架构并不复杂,Java中使用Groovy动态脚本已经趋于成熟。

下一篇文章,我会和大家一起讨论下Provider组件库中的一些重要功能,比如Provider、Resource注册等。

猜你喜欢

转载自juejin.im/post/7102234054329810974