主动对象计算模型:原理与应用解析
1. 主动对象计算模型概述
主动对象计算模型解决了传统事件驱动架构的大部分问题,同时保留了其优点。“主动对象”这一术语源于UML,指的是“拥有自己控制线程的对象”。该模型的核心思想是在多任务环境中使用多个事件驱动系统。
从历史发展来看,自主软件对象通过消息传递进行通信的概念可以追溯到20世纪70年代末,当时Carl Hewitt及其同事提出了“参与者(actor)”的概念。到了80年代,参与者在分布式人工智能领域风靡一时,就像如今的智能体一样。90年代,诸如ROOM等方法将参与者概念应用于实时计算。近年来,UML规范引入了主动对象的概念,它本质上与ROOM参与者的概念同义。
在UML规范中,主动对象是拥有自己控制线程的对象,它以“运行至完成(run-to-completion)”的方式处理事件,并通过异步交换事件与其他主动对象进行通信。UML规范还提出了状态机的UML变体,用于对事件驱动的主动对象的行为进行建模。
主动对象通常使用实时框架来实现。这些框架已经在广泛的实时嵌入式(RTE)应用中使用多年,并证明了其有效性。如今,几乎所有支持RTE系统代码合成的设计自动化工具都包含了实时框架的变体。例如,实时面向对象建模(ROOM)将其框架称为“ROOM虚拟机”;IAR Systems的VisualSTATE工具将其称为“VisualSTATE引擎”;Telelogic的UML兼容设计自动化工具Rhapsody将其称为“对象执行框架(OXF)”。
一个最小的主动对象系统由多个主动对象组成,每个主动对象封装了一个控制线程(事件循环)、一个私有事件队列和一个状态机,即:
主动对象 = (控制线程 + 事件队