SCA软件平台通知服务的设计与实现*
2016-07-01廖文瑜白维学
廖文瑜,吴 非,白维学
(中国电子科技集团公司第三十研究所,四川 成都 610041)
SCA软件平台通知服务的设计与实现*
廖文瑜,吴非,白维学
(中国电子科技集团公司第三十研究所,四川 成都 610041)
摘要:采用软件通信体系结构(SCA)的软件平台,核心框架基于分布式CORBA中间件实现,提供了组件化的平台软件实现架构,是战术通信设备构建一致的软件组件开发与应用环境的基础。在战术通信装备软件系统设计实现过程中,平台软件各组件通常需要交互多种事件状态转化或变化的消息,既要满足事件消息传递的需求,又要适应系统组件化设计的要求。介绍了基于SCA组件方式设计与实现通知服务的方法,通知服务组件为SCA软件平台提供便捷的组件间传递系统状态的机制。
关键词:通知服务;软件通信体系架构;通用对象请求代理体系结构;中间件
0引言
SCA是美军联合战术无线系统(Joint Tactical Radio System,JTRS)装备广泛使用的软件框架,旨在构建灵活包容的可移植性环境,提供开放的软件开发与运行管理架构[1]。作为战术通信装备框架软件,SCA软件平台实现了包括框架控制接口和各种设备与服务组件[2]。通常软件平台的设备组件或服务组件之间需要通过状态事件获得系统的不同组成所发生的状态变化。在SCA定义的开放应用环境中,利用分布式CORBA中间件,以及核心框架接口,设计与实现一个独立的通知服务组件负责为整个平台软件系统提供状态事件的传输,能够有效满足战术通信装备状态事件的分发需求,同时也更好地适应了SCA框架下的系统软件组件化设计。
1CORBA中间件及其服务
核心框架的管理接口和应用实现接口基于CORBA中间件实现,本文基于TAO中间件进行软件组件的分析、设计与实现。
TAO(The ACE ORB)是一种开源的CORBA实现[3],基于对象管理组织(OMG)标准CORBA参考模型,并通过自适应通讯环境(ACE)提供的软件概念和框架构建而成。根据OMG发布的参考实现标准,TAO中间件也提供了包括命名服务、日志服务、事件服务[4]及通知服务[5]。
1.1TAO CORBA的事件服务与通知服务
TAO的事件服务为分离的两端程序之间提供了一种灵活的调用方式(信息分发机制),不过在功能上有如下限制:
(1)缺乏事件消息的过滤机制:每一个事件通道只对应处理一种类型的事件消息,要处理多种事件则需要使用多个事件通道;
(2)事件消息的数据描述形式不具备分级分类的属性:在同一个事件通道内的消息是对等的,只能通过在消息接收端的程序中通过使用不同的处理代码分支对事件加以区分;
(3)CORBA事件服务接口不提供QoS机制;
(4)事件消息消费者程序不知晓存在的事件提供者以及事件提供者提供何种类型的事件消息。
TAO通知服务重点解决了上述问题,但在SCA软件平台运行环境中,直接使用TAO提供的通知服务仍然存在如下问题:
(5)使用服务时的初始化过程代码复杂;
(6)对TAO提供的基础服务依赖程度高:如需要命名服务、基于事件通道运行;
(7)与SCA环境其他模块组件之间无法实现端口连接。
为了解决上述问题,本文提出了在SCA框架下运行的通知服务组件设计方法,实现更加简易快捷的事件订阅与分发机制,同时采用SCA组件形式进行实现与封装,实现与其他各平台组件的端口连接。
2通知服务及组件设计
通知服务主要负责为整个平台系统提供状态事件的传输。软件平台的设备组件或服务组件需要通过状态事件获得系统中发生的状态变化。特定的设备组件或服务组件通常只关心与其功能相关的部分状态事件,因此它们只需要向“通知服务组件”订阅(注册)希望收到的状态事件类型,在相应状态事件发生的时候,通知服务负责收集这些事件并推送到指定的已注册组件。
根据SCA通信设备安全架构设计的建议与要求[1],通知服务的设计还需要符合红黑旁路结构,搭建满足红黑安全环境中软件状态消息的分发应用。根据SCA4.0用户指南,红黑旁路的基本原理如图1所示。通过红黑旁路连接的数据包含了需要加密的业务数据和不需要加密的控制及状态数据。通知服务相关的消息注册和分发控制,及状态消息内容本身,均属于“完全透传数据”。
图1 红黑旁路连接相关概念示意
通知服务的客户端组件可以是任何希望发送或者接收状态事件消息的组件。一个客户端组件可以既发送状态事件也接收状态事件。通知服务组件为客户端组件提供状态事件(类型)的注册端口、状态事件消息的推送(发送)端口,以及状态事件的接收端口。红黑边软件平台分别提供一个通知服务组件,红边的为主组件,黑边的为从组件。
按照SCA服务组件及其它平台组件的设计要求,图2给出了在红黑运行环境下,通知服务的部署与端口连接关系示例。
2.1组件功能要求
在需要使用通知服务的软件平台组件中,采用SCA方式定义的组件必须是可连接类型的,使用核心框架提供的端口连接机制:继承<<核心框架::端口访问>>接口;而一些特定的组件或软件模块,例如人机控制进程则不需要继承<<核心框架::端口访问>>接口,独自实现与通知服务之间的端口连接;每一个端口连接必须关联相同的连接名称,这样通知服务才能通过组件注册关注的事件类型时提供的端口向这些组件推送消息。对特定的某一组件而言,连接名称在整个电台域内都必须是唯一的。
通知服务必须使用一个统一的状态对象结构体来传递状态消息(推送或接收状态事件)。这个结构体包含了足够描述状态事件的所有信息,结构体包含了一组状态对象类型属性,描述了所有组件可能关心的状态事件的类型,组件可以选择一个到多个状态事件类型进行注册,当特定类型的事件状态发生并被推送到通知服务,通知服务负责匹配需要接收这些类型的注册组件,通过注册的组件接收端口分发这些消息。
图2 通知服务的部署与端口连接关系
图3 通知服务组件相关类
客户端组件向通知服务组件注册特定类型的状态事件后,将自动接收该类型的最新状态消息,同时客户端组件有选择注销某种类型消息的权利,在注销类型之后,通知服务则立刻不再向该组件推送该类型的消息。如果客户端组件断开与通知服务的端口连接,通知服务将自动清除并且不会再试图往该组件发送任何消息。
基于红黑边的设定,红黑边的通知服务都会维护需要转发往另一边的状态类型注册信息。不过,基于旁路通道框架的限制(见图1),黑边的通知服务组件无法提供所有状态事件类型的注册,而红边的通知服务组件能够支持所有的状态事件类型。
2.2通知服务组件设计
通知服务基于线程与信号量控制进行设计,同时自身满足SCA基本平台组件的接口,由红黑节点的设备管理器负责启动与管理。
通知服务组件维护一份状态事件消息类型与消息内容的映射列表,基于该映射进行状态事件的注册管理;采用C++标准队列缓存各客户端组件发送来的状态事件消息,而消息分发任务由组件的线程循环主函数负责。
基本类图如图3所示,通过C++模板设计事件分发端口,提供了通知服务组件状态事件的中介传递功能、状态事件类型注册情况,红黑通知服务组件通过该端口相连[6]。同时,为客户端组件提供了基本的订阅状态事件的注册端口以及推送状态事件消息使用的发送端口。
状态事件消息使用统一的结构体描述,负责描述消息类型的组成结构、类型名称、及具体消息内容。基于模块化思想,采用C++模板实现统一的消息封装与解封函数。借助ACE基本消息单元ACE_Message_Block,以及TAO_InputCDR,TAO_OutputCDR,简化消息的封装与解封过程[7]。
2.3客户端组件相关设计
客户端组件向通知服务组件注册与推送消息的端口属于通知服务的输入端口(图3),而客户端组件相关的接收端口需要进行单独实现(如图4所示:消息分发端口实现)。客户端组件能够实现选择性注册部分类型的状态事件消息,也可以直接注册选择所有的事件类型。
2.4通知服务运行流程
红黑边节点分别实例化并运行一个通知服务组件,每个通知服务组件都维护一份状态对象映射,以及一系列端口和连接。红黑边使用的通知服务组件实现代码是一致的。在SCA核心框架的设备管理器启动各个设备与服务组件的过程中启动并连接了这些与事件状态相关的组件,同时完成所有作为客户端的组件注册事件类型。通知服务线程挂起,组件间端口处于彼此连通状态,如图5所示。
图5 通知服务状态消息处理时序
当某个客户端程序发生了某件状态变化事件,该事件消息由客户端组件封装并推送到与之同侧的通知服务组件,红黑两侧通知服务组件检查状态是否被注册,并调用消息分发端口提供的消息处理程序,将状态事件消息发送到正确的事件接收组件。
3结语
通知服务负责SCA各个平台组件彼此之间传递所发生的状态事件的功能。本文介绍了一种基于SCA服务组件形式的通知服务设计与实现方法,具体描述了有关的事件消息类型和事件管理机制,简化了通知服务的使用方法与连接方式,使通知服务能够以服务组件的形式提供事件消息分发功能,满足了软件通信体系结构对战术通信装备系统软件的模块化设计要求,平台服务功能实现了能够灵活扩展或裁减。类似的设计方法,还可以应用于系统定位授时服务、日志服务等功能模块的设计。
参考文献:
[1]Joint Tactical Networking Center(JTNC).SCA Specification 4.0 User′s Guide[S],V1.0,San Diego,California:JTNC,2012.11.
[2]刘文斌,廖文瑜,彭麟等.电台软件架构发展及其向SCA4.0演进的途径分析[J].通信技术,2014,47(04):396-400.
LIU Wen-bin,LIAO Wen-yu,PENG Lin,et al.Analysis of Development and Methods Upgrade to SCA 4.0 for Radio Software Architecture [J].Communication Technology,2014.47(04): Page 396-400.
[3]OCI TAO Developer's Guide [M].OCI TAO Version 1.3a (SKU: 530-01),OCI Documents,2004.
[4]OMG Event Service Specification[S].Version 1.2 formal/04-10-02,2004.11.
[5]OMG Notification Service Specification[S],Version 1.1 formal/04-10-11,2004.11.
[6]Michi Hengning,Steve Vinoski.基于C++ CORBA高级编程[M].北京: 清华大学出版社,2000.
Michi Hengning,Steve Vinoski.Advance CORBA Programming with C++ [M].BEIJING: Tsinghua University Press,2000.
[7]Douglas C Schimidt,Stephen D Huston著.C++网络编程:(卷1)运用ACE和模式消除复杂性[M].叶斌 译.北京:科学出版社,2011:67-96.
Douglas C Schimidt,Stephen D Huston,YE Bin Translated.C++ Network Programming (Vol.1): Mastering Complexity with ACE and Patterns [M].Science Press,2011: 67-96.
Design and Implementation of Notification Service in SCA Software Platform
LIAO Wen-yu,WU Fei,BAI Wei-xue
(No.30 Institute of CETC,Chengdu Sichuan 610041,China)
Abstract:SCA (Software Communication Architecture) software platform,mainly composed of core framework and implemented on the basis of distributed CORBA middleware,provides the architecture for component implementation of platform software,and is the foundation for tactical communication equipment to construct a consistent software- component development and application environment.Status events are used to notify each other among platform software components transforming-state and changing-state information.This is required to support transferring event messages and also leverage the modularization of system components.This paper describes the method for designing and implementing the notification service based on SCA component.Notification service provides a mechanism for transferring system status across the components in SCA software platform.
Key words:notification service; SCA; CORBA; middleware
doi:10.3969/j.issn.1002-0802.2016.02.021
* 收稿日期:2015-09-01;修回日期:2015-12-28Received date:2015-09-01;Revised date:2015-12-28
中图分类号:TN924;TP311
文献标志码:A
文章编号:1002-0802(2016)02-0233-05
作者简介:
廖文瑜(1986—),男,硕士,工程师,主要研究方向为软件无线电及通信技术;
吴非(1982—),男,硕士,工程师,主要研究方向为软件无线电及通信技术;
白维学(1986—),男,硕士,工程师,主要研究方向为软件无线电及通信技术。