架构概览

这里我们用几个图表展示 Jmix 架构的鸟瞰图。

Jmix 范围

在最简单的情况下,使用 Jmix 构建的信息系统包含一个 Java Web 应用程序和一个关系型数据库:

architecture scope 1
Figure 1. 简单 Jmix 应用

Web 应用程序基于 Spring Boot,支持用 Java 或 Kotlin 编写。关系型数据库用于保存 Jmix 子系统的数据(例如,安全配置)以及作为应用程序的数据的主要存储。

Jmix 应用程序可以与多个附加数据存储连接,并支持使用文件系统或云环境作为独立的文件存储。此外,Jmix 支持集成 OIDCLDAP 服务进行外部认证和单点登录(SSO),还支持集成 OpenSearch 或 Elasticsearch 实现对应用程序数据的 全文检索 功能。

architecture scope 2
Figure 2. 使用附加服务的 Jmix 应用

Jmix 应用程序为用户提供 web 界面,界面使用 Jmix UI 子系统通过 Java/Kotlin 和 XML 创建。

当然,你也可以创建独立的前端应用,然后通过 Jmix REST API 或自定义端点与 Jmix 后端连接。这里的前端应用并不在 Jmix 的范围内,可以选择任何技术进行构建。

architecture scope 3
Figure 3. 使用附加前端的 Jmix 应用

Jmix 应用程序可以使用服务 集群 和负载均衡进行横向扩展。

architecture scope 4
Figure 4. Jmix 应用程序扩展

Jmix 组件

我们进入 Jmix 应用程序内部更进一步了解其组件。

architecture components 1
Figure 5. Jmix 应用程序组件

Jmix 应用程序包含对 Spring Boot 和其他 Jmix 子系统的依赖关系。Jmix 有两类子系统:

  • 核心子系统 提供系统级别的功能,包含在绝大多数项目中。

  • 扩展组件 是可选的子系统,根据需要添加至项目中。扩展组件在 Jmix 市场 发布。

技术上来说,核心子系统和扩展组件都是以相同的方式进行组织。子系统包含一个或多个功能模块以及对应的 Spring Boot starter,均以 JAR 文件格式打包。子系统可以依赖其他子系统,例如,很多包含视图的扩展组件依赖核心 UI 子系统。