企业运行时架构 - 服务器和客户端架构 | Mendix 评估指南

Skip navigation

Runtime Architecture

Mendix Runtime 是什么以及它如何支持关键架构原则?

Mendix Runtime 在云原生架构的背景下执行您的应用程序。在本节中,我们将介绍 Mendix Runtime 的核心组件及其相关功能。我们还将更深入研究运行时执行的几个重要方面。

哪个组件负责执行模型?

Mendix Runtime 解释并执行您应用程序的模型。Runtime 采用业界领先的 Java 和 Scala 技术设计,兼容十二要素应用程序方法

Mendix 如何执行模型?

Mendix Runtime 可以直接执行模型,这意味着模型就是实际意义上的应用程序,而非中介程序。可视化模型设计(如 Java 或 .NET)的本质是生成代码,而与此相反,Mendix 的模型解释方法具有许多独特的特点和优势(详见下节)。

更改管理

您可以轻松进行应用程序更改。另外,由于模型就是应用程序,因此 Mendix 确保了应用程序与模型的兼容性。

自定义扩展

比起将自定义代码插入生成的代码中,使用自定义代码扩展模型将更加可控,因为模型可以识别自定义代码并将其包括在一致性检查中。Mendix 的模型解释方法解决了代码生成的基本往返问题,避免了模型更改与自定义代码扩展之间的冲突。此外,在生成的代码中不进行自定义更改意味着该平台的技术架构可以在进行实时更新的同时不会对您的模型造成影响。这也意味着您可以更加简便且划算地在技术创新中受益。

监控

比起预先定义监控器参数,对运行时中应用程序行为的监控和分析可以更加动态和灵活地进行设置。

调试

对于开发人员来说,调试和解决问题将会变得更加容易,无需了解生成的代码与可视化模型之间的关系。调试和问题解决均在模型上完成,而非在生成的代码上完成。

Mendix 如何实现无状态架构?

为了确保可扩展性、高性能和高可用性,Mendix 采用无状态运行时。这意味着任何可用运行时实例直接处理用户请求,与任何先前或后续请求无关。

为此,运行时实例在用户请求期间具有状态。在请求结束后,所有提交状态都将保存到数据库中。所有未提交的状态将与客户端需要的所有其他数据一起返回客户端。

有关更多信息,请参见 Mendix Studio Pro 指南中的集群的 Mendix Runtime

Mendix Runtime 有哪些组件?

Runtime 包含 2 个主要组件:

  • 客户端 – Web 客户端和移动客户端
  • Runtime 服务器 – 一个可扩展的运行时用于处理服务器端逻辑

 

Mendix runtime architecture

服务器架构

Mendix Server 架构由多个组件组成,可以执行逻辑、管理数据、与客户端通信并实现安全性。下图概述了所有组件并及其功能:

Mendix Runtime Server components

Mendix Runtime 包含以下组件:

  • 平台型芯 – 负责正确启动和关闭应用程序并加载所需的库和扩展
  • 对象缓存 – 负责创建和删除对象
  • 会话管理器 – 负责管理用户会话创建、被注销或放弃会话的清除。
  • HTTP 服务器 – 包含在 Mendix Runtime 中,负责处理来自 Web 客户端和移动客户端的请求并处理服务请求
  • 微流引擎 – 负责执行您的微流和微流活动
  • 数据层 – 从您的应用程序数据库中保存并检索对象;负责创建和更新保存数据所需的数据库结构:数据层支持大量不同的数据库,同时数据使用常见的数据模型设计最佳实践进行存储(有关详细信息,请参见数据存储中的 Mendix 支持哪些数据库?
  • 集成层 – 负责处理 Web 服务、REST API、应用程序服务以及 OData 的传入和传出服务请求
  • 客户端 API – 负责与 Web 客户端和移动客户端通信;该 API 用于检索数据、保存数据更改并执行微流逻辑
  • 配置 API – 此 JSON API 用于开发人员门户和容器 Buildpack,负责配置运行时
  • 监控 API – 此 JSON API 用于开发人员门户和容器 Buildpack,负责检索监控用的指标
  • 自定义 API – 此 Java API 可用于扩展 Mendix Runtime(例如通过微流活动或实体侦听器)

客户端构架

Mendix 客户端负责用户交互,其中包括一个 UI 小组件层、一个用于执行离线逻辑的逻辑层以及一个用于离线存储的数据层。下图提供了概述:

Mendix Runtime Client components

Mendix 客户端包含以下组件:

  • 通信层 – 负责与 Mendix Runtime 服务器交换元数据、会话管理和数据,同时使用安全的 JSON over HTTP 协议
  • 数据层 – 负责管理前端使用的数据;基于 React Flux 模式处理状态并将更改推送至 UI 组件
  • 逻辑层 – 使用 Mendix 纳流处理数据验证和更复杂的逻辑
  • UI 组件层 – 负责管理小组件的生命周期以及不同小组件之间的通信,并提供开箱即用的小组件

移动客户端

移动应用程序使用相同的基于 HTML5、CSS 和 React 的客户端架构,但是这些均使用 Apache Cordova 部署。这个框架使用最先进的 Web 技术构建移动应用程序,旨在提供出色的移动用户体验:

  • 可访问性 – 应用程序可以在标准设备应用商店中获取、安装到移动设备上、并通过图标打开
  • 脱机可用性 – 因为应用程序已安装在移动设备上(包括所有必需的资源和需要缓存的数据),所以最终用户可以脱机使用 Mendix 应用程序,且应用程序的相关数据已缓存在设备上的 SQLite 数据库中
  • 支持原生功能 – Apache Cordova 可让 JavaScript 应用程序使用原生设备功能,反过来让您自如地使用移动设备中所有可用的传感器,如相机和麦克风

有关 Mendix 移动设备支持的详细信息,请参见原生移动应用混合移动应用

Web 客户端

Web 客户端使用单页架构设计,将单个 JavaScript 网页加载到浏览器中,随后浏览器将更新此页面,并根据用户的操作要求与 Mendix Runtime 进行交互。交互可能包括检索网页的各个部分以及检索和存储数据。

客户端主要使用 HTML5、带有 Sass 和 Bootstrap 的 CSS 以及 React 框架来实现。有关更多信息,请参见 Mendix Studio Pro 指南中的 Web 客户端设置