AutoCode 简介
本章节对 AutoCode 的功能特性、系统模型和相关概念进行基本介绍。
概述
AutoCode 是翼辉推出的基于 VSOA 实现的模型驱动架构(MDA),它定义了一套基于事件驱动的服务-组件框架。AutoCode 还提供了微服务可视化建模工具(全称:RealEvo-AutoCode),同时它也是一个低代码集成开发平台。在 AutoCode 开发环境中,不但可以通过图形化的方式进行微服务建模,而且可以针对每个服务以图形化的方式实现组件逻辑。完成建模后,AutoCode 集成开发环境还具有生成代码、编辑代码、编译部署等一站式集成开发功能。
AutoCode 低代码开发平台可以有效的提升微服务开发效率,降低微服务工程维护管理复杂度。基于 AutoCode 低代码开发平台将微服务创建连接、资源管理、会话过程等重复繁琐的功能从用户业务程序中抽象出来,生成基础框架,用户只需关注业务逻辑,一方面降低微服务应用开发难度、复杂度,另一方面加强程序的稳定性和可维护性。AutoCode 低代码开发平台创建的微服务工程具有统一的微服务程序范式,可以使团队协作、项目管理更加高效。
AutoCode 功能特性
系统架构
支持面向服务架构(SOA)的设计与开发:在 AutoCode 中可以定义接口与接口数据,建立服务,构建服务逻辑,实现服务接口等建模与开发工作。
支持各种 VSOA 通信接口与特性:VSOA(Vehicle SOA)是翼辉为了解决任务关键型系统不能适用当前微服务通信架构问题而设计的⼀个轻量级适用于任务关键领域的微服务通信架构,以方便开发者构建大型分布式松耦合软件系统,且支持并行开发。
微服务接口与实现解耦:AutoCode 采用服务模型与服务组件模型两层设计,微服务之间关注接口设计,微服务内部关注业务逻辑实现,微服务接口可以独立发布与维护。
基于框架的微服务开发范式:AutoCode 将服务建立、通信连接、数据解析、事件驱动、会话管理等通用复杂的底层逻辑抽象为系统框架,将每个事件接口开放为用户编程接口,用户只需关注数据业务处理。
可视化建模功能
资源管理:AutoCode 资源管理视图中可定义 VSOA 接口与接口数据。
服务建模:在服务编辑视图中,以图形化的方式创建服务进程与服务,服务视图直观展示工程中的服务及服务之间接口关系。
组件建模:用户在服务组件编辑视图中以图形化方式创建组件模型,实现服务内部事件驱动业务框架。
接口编程:服务组件模型中,通过组件事件可定位到编程接口,用户在接口中可访问事件数据,处理业务逻辑。
自动构建测试接口:AutoCode 工程中定义服务及接口后,可一键创建所有服务测试组件,自动生成测试接口。
支持工程模板:用户可以将自定义的 AutoCode 工程导出为工程模板,也可以将工程模板导入到 IDE 中,用户可基于自定义的模板创建工程。
代码构建功能
自动创建 VSOA 接口数据与用户自定义结构数据。
自动创建编译构建文件。
自动生成服务代码与用户接口代码。
代码生成时可输出构建日志,构建出错时,通过日志可定位到出错的图形元件。
自动合并用户接口代码,可集成用户自定义源代码文件。
生成代码之前,自动备份历史代码。
AutoCode 系统模型
AutoCode 采用服务模型与服务组件模型两层设计,在服务编辑视图中可对服务进行建模,在服务组件编辑视图中可对服务组件建模。
服务模型
AutoCode 服务模型示例:
说明:
AutoCode 一个工程由一组服务进程组成,每个服务进程将生成一个应用程序。
一个服务进程可以包含一个或多个服务,每个服务有独立的服务端口,对其它服务提供资源访问。
组件模型
AutoCode 组件模型示例:
说明:
- 在服务组件编辑视图中,每个服务有独立的实现,可以创建一个或多个组件。
- 组件由一组事件组成,每个事件有一个输入端口以及一个可选的输出端口。
- 服务端口与组件事件端口以及组件输出端口与组件输入端口之间可以相连接,形成事件链;每个事件链有一个开始事件,驱动所有事件的运行。
- 一般情况下,每个组件事件将为用户提供一个回调接口,用户在接口中可处理数据及业务逻辑。事件的输入端口与输出端口一般绑定了相应的数据,用户在接口中可访问和处理这输入输出端口数据。
AutoCode 相关概念
服务进程(Server)
每个服务进程将创建一个应用程序,一个服务进程中有一个或多个服务。
服务(Service)
AutoCode 服务是微服务的实现,每个服务中创建了一个 VSOA 服务器,对其它服务提供资源访问,每个服务也可访问其它服务资源。服务之间通过 VSOA 接口通信,在 AutoCode 中,服务之间的接口定义为端口,不同的服务端口实现不同的 VSOA 接口功能。一个服务内有一个或多个组件,组件框架实现了服务内部程序逻辑。
组件(Component)
组件是一组端口与行为的组织单元,形式上由一组事件组成,每个事件可以包含输入与输出端口。服务与组件之间通过服务端口与事件端口连接,组件之间通过事件端口相连接,从而形成事件链。AutoCode 的组件运行时框架是由事件驱动的事件链(会话)实现的。AutoCode 中提供了一个通用的基础组件(Component)和一组拥有特定实现的功能组件。基础组件定义了组件之间的事件连接基本规则,功能组件是通用组件模型子集,在通用组件基于上对事件类型、事件顺序、事件连接进行约束,以及对组件、事件及事件端口属性进行约束或扩展而实现的。
关于组件模型更多信息请参考组件模型。
事件(Event)
AutoCode 组件是由一组事件组成,事件有一个输入端口和一个可选的输出端口。AutoCode 生成代码时,每个组件事件一般会创建一个回调函数-即接口,提供用户编程接口。
事件类型由事件端入端口类型定义,AutoCode 事件有以下几种类型:
系统事件(SYS Event):系统事件是指一些自发驱动的事件,不依赖外部连接事件触发执行,在组件编辑视图中表现为输入端口没有与其它事件端口连接,例如定时器事件。
VSOA 事件(VSOA Event):在组件编辑视图中,与服务输入端口连接的组件事件是 VSOA 事件,VSOA 事件由 VSOA 相关通信接口驱动执行,常用的 VSOA 事件有 VSOA-CALL 和 VSOA-SUB 事件。
组件事件(COM Event):在组件编辑视图中,与组件输出端口连接的组件事件是组件事件,组件事件由其它组件事件驱动执行。在功能组件中还有一些其它组件事件。
关于组件事件更多信息请参考组件模型。
端口(Port)
在 AutoCode 中,端口是一个通用概念,元件之间连接的接口都称为端口,端口有不同的属性区分:
按元件类型区分,端口分为服务端口与组件端口。服务端口是 VSOA 事件类型的端口。
按事件类型区分,端口分为系统事件端口、VSOA 事件端口、组件事件端口。
按 I/O 类型区分,在 AutoCode 视图模型中,元件左侧是输入端口,右侧是输出端口,一般输入端口是被动接收事件,输出端口是主动发起事件。
接口(Interface)
一般情况下 AutoCode 每个组件事件会创建一个回调函数,称为组件接口或接口。
接口输入参数对应输入端口相关数据;接口中还创建了一些系统维护的代码和用户可编程区域;系统代码通常定义了输入端口对应的数据变量,并且执行输出端口事件行为;用户在可编程区域通常可以接收输入数据进行处理,填充输出数据提供给输出事件处理。
会话(Session)
在服务组件编辑视图中,服务端口与事件端口以及事件端口之间可以连接起来,一组连接在一起的事件形成事件调用链,一组事件形成的调用链称为事件会话或会话;其中有一个开始事件,开始事件驱动整个个事件会话。
AutoCode 每个组件接口第一个参数都传入了一个会话对象,会话对象提供了会话运行时上下文状态信息。AutoCode 运行时自动维护会话对象状态及资源,为用户接口提供稳定、安全的运行时环境,用户只需关注接口数据及业务逻辑实现。会话象还为用户提供一些接口中可访问的辅助功能方法,例如数据缓存。
资源(Resource)
在 AutoCode 资源视图中,用户可以创建、编辑工程中使用的资源,包括:
- VSOA-Port 资源:VSOA-Port 资源定义了服务所需使用的端口资源。
- JStruct 资源:JStruct 资源定义了 VSOA-Port 资源所依赖的 JStruct 数据类型。
- Struct 资源:用户在 Struct 资源中可以自定义 Struct 数据类型,用户可以在事件输出端口自定义数据类型。
在资源视图中,用户可以对工程中所有的服务所依赖的数据资源统一进行维护管理。