廖文瑜,吳 非,白維學(xué)
(中國電子科技集團(tuán)公司第三十研究所,四川 成都 610041)
?
SCA軟件平臺通知服務(wù)的設(shè)計(jì)與實(shí)現(xiàn)*
廖文瑜,吳非,白維學(xué)
(中國電子科技集團(tuán)公司第三十研究所,四川 成都 610041)
摘要:采用軟件通信體系結(jié)構(gòu)(SCA)的軟件平臺,核心框架基于分布式CORBA中間件實(shí)現(xiàn),提供了組件化的平臺軟件實(shí)現(xiàn)架構(gòu),是戰(zhàn)術(shù)通信設(shè)備構(gòu)建一致的軟件組件開發(fā)與應(yīng)用環(huán)境的基礎(chǔ)。在戰(zhàn)術(shù)通信裝備軟件系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)過程中,平臺軟件各組件通常需要交互多種事件狀態(tài)轉(zhuǎn)化或變化的消息,既要滿足事件消息傳遞的需求,又要適應(yīng)系統(tǒng)組件化設(shè)計(jì)的要求。介紹了基于SCA組件方式設(shè)計(jì)與實(shí)現(xiàn)通知服務(wù)的方法,通知服務(wù)組件為SCA軟件平臺提供便捷的組件間傳遞系統(tǒng)狀態(tài)的機(jī)制。
關(guān)鍵詞:通知服務(wù);軟件通信體系架構(gòu);通用對象請求代理體系結(jié)構(gòu);中間件
0引言
SCA是美軍聯(lián)合戰(zhàn)術(shù)無線系統(tǒng)(Joint Tactical Radio System,JTRS)裝備廣泛使用的軟件框架,旨在構(gòu)建靈活包容的可移植性環(huán)境,提供開放的軟件開發(fā)與運(yùn)行管理架構(gòu)[1]。作為戰(zhàn)術(shù)通信裝備框架軟件,SCA軟件平臺實(shí)現(xiàn)了包括框架控制接口和各種設(shè)備與服務(wù)組件[2]。通常軟件平臺的設(shè)備組件或服務(wù)組件之間需要通過狀態(tài)事件獲得系統(tǒng)的不同組成所發(fā)生的狀態(tài)變化。在SCA定義的開放應(yīng)用環(huán)境中,利用分布式CORBA中間件,以及核心框架接口,設(shè)計(jì)與實(shí)現(xiàn)一個獨(dú)立的通知服務(wù)組件負(fù)責(zé)為整個平臺軟件系統(tǒng)提供狀態(tài)事件的傳輸,能夠有效滿足戰(zhàn)術(shù)通信裝備狀態(tài)事件的分發(fā)需求,同時也更好地適應(yīng)了SCA框架下的系統(tǒng)軟件組件化設(shè)計(jì)。
1CORBA中間件及其服務(wù)
核心框架的管理接口和應(yīng)用實(shí)現(xiàn)接口基于CORBA中間件實(shí)現(xiàn),本文基于TAO中間件進(jìn)行軟件組件的分析、設(shè)計(jì)與實(shí)現(xiàn)。
TAO(The ACE ORB)是一種開源的CORBA實(shí)現(xiàn)[3],基于對象管理組織(OMG)標(biāo)準(zhǔn)CORBA參考模型,并通過自適應(yīng)通訊環(huán)境(ACE)提供的軟件概念和框架構(gòu)建而成。根據(jù)OMG發(fā)布的參考實(shí)現(xiàn)標(biāo)準(zhǔn),TAO中間件也提供了包括命名服務(wù)、日志服務(wù)、事件服務(wù)[4]及通知服務(wù)[5]。
1.1TAO CORBA的事件服務(wù)與通知服務(wù)
TAO的事件服務(wù)為分離的兩端程序之間提供了一種靈活的調(diào)用方式(信息分發(fā)機(jī)制),不過在功能上有如下限制:
(1)缺乏事件消息的過濾機(jī)制:每一個事件通道只對應(yīng)處理一種類型的事件消息,要處理多種事件則需要使用多個事件通道;
(2)事件消息的數(shù)據(jù)描述形式不具備分級分類的屬性:在同一個事件通道內(nèi)的消息是對等的,只能通過在消息接收端的程序中通過使用不同的處理代碼分支對事件加以區(qū)分;
(3)CORBA事件服務(wù)接口不提供QoS機(jī)制;
(4)事件消息消費(fèi)者程序不知曉存在的事件提供者以及事件提供者提供何種類型的事件消息。
TAO通知服務(wù)重點(diǎn)解決了上述問題,但在SCA軟件平臺運(yùn)行環(huán)境中,直接使用TAO提供的通知服務(wù)仍然存在如下問題:
(5)使用服務(wù)時的初始化過程代碼復(fù)雜;
(6)對TAO提供的基礎(chǔ)服務(wù)依賴程度高:如需要命名服務(wù)、基于事件通道運(yùn)行;
(7)與SCA環(huán)境其他模塊組件之間無法實(shí)現(xiàn)端口連接。
為了解決上述問題,本文提出了在SCA框架下運(yùn)行的通知服務(wù)組件設(shè)計(jì)方法,實(shí)現(xiàn)更加簡易快捷的事件訂閱與分發(fā)機(jī)制,同時采用SCA組件形式進(jìn)行實(shí)現(xiàn)與封裝,實(shí)現(xiàn)與其他各平臺組件的端口連接。
2通知服務(wù)及組件設(shè)計(jì)
通知服務(wù)主要負(fù)責(zé)為整個平臺系統(tǒng)提供狀態(tài)事件的傳輸。軟件平臺的設(shè)備組件或服務(wù)組件需要通過狀態(tài)事件獲得系統(tǒng)中發(fā)生的狀態(tài)變化。特定的設(shè)備組件或服務(wù)組件通常只關(guān)心與其功能相關(guān)的部分狀態(tài)事件,因此它們只需要向“通知服務(wù)組件”訂閱(注冊)希望收到的狀態(tài)事件類型,在相應(yīng)狀態(tài)事件發(fā)生的時候,通知服務(wù)負(fù)責(zé)收集這些事件并推送到指定的已注冊組件。
根據(jù)SCA通信設(shè)備安全架構(gòu)設(shè)計(jì)的建議與要求[1],通知服務(wù)的設(shè)計(jì)還需要符合紅黑旁路結(jié)構(gòu),搭建滿足紅黑安全環(huán)境中軟件狀態(tài)消息的分發(fā)應(yīng)用。根據(jù)SCA4.0用戶指南,紅黑旁路的基本原理如圖1所示。通過紅黑旁路連接的數(shù)據(jù)包含了需要加密的業(yè)務(wù)數(shù)據(jù)和不需要加密的控制及狀態(tài)數(shù)據(jù)。通知服務(wù)相關(guān)的消息注冊和分發(fā)控制,及狀態(tài)消息內(nèi)容本身,均屬于“完全透傳數(shù)據(jù)”。
圖1 紅黑旁路連接相關(guān)概念示意
通知服務(wù)的客戶端組件可以是任何希望發(fā)送或者接收狀態(tài)事件消息的組件。一個客戶端組件可以既發(fā)送狀態(tài)事件也接收狀態(tài)事件。通知服務(wù)組件為客戶端組件提供狀態(tài)事件(類型)的注冊端口、狀態(tài)事件消息的推送(發(fā)送)端口,以及狀態(tài)事件的接收端口。紅黑邊軟件平臺分別提供一個通知服務(wù)組件,紅邊的為主組件,黑邊的為從組件。
按照SCA服務(wù)組件及其它平臺組件的設(shè)計(jì)要求,圖2給出了在紅黑運(yùn)行環(huán)境下,通知服務(wù)的部署與端口連接關(guān)系示例。
2.1組件功能要求
在需要使用通知服務(wù)的軟件平臺組件中,采用SCA方式定義的組件必須是可連接類型的,使用核心框架提供的端口連接機(jī)制:繼承<<核心框架::端口訪問>>接口;而一些特定的組件或軟件模塊,例如人機(jī)控制進(jìn)程則不需要繼承<<核心框架::端口訪問>>接口,獨(dú)自實(shí)現(xiàn)與通知服務(wù)之間的端口連接;每一個端口連接必須關(guān)聯(lián)相同的連接名稱,這樣通知服務(wù)才能通過組件注冊關(guān)注的事件類型時提供的端口向這些組件推送消息。對特定的某一組件而言,連接名稱在整個電臺域內(nèi)都必須是唯一的。
通知服務(wù)必須使用一個統(tǒng)一的狀態(tài)對象結(jié)構(gòu)體來傳遞狀態(tài)消息(推送或接收狀態(tài)事件)。這個結(jié)構(gòu)體包含了足夠描述狀態(tài)事件的所有信息,結(jié)構(gòu)體包含了一組狀態(tài)對象類型屬性,描述了所有組件可能關(guān)心的狀態(tài)事件的類型,組件可以選擇一個到多個狀態(tài)事件類型進(jìn)行注冊,當(dāng)特定類型的事件狀態(tài)發(fā)生并被推送到通知服務(wù),通知服務(wù)負(fù)責(zé)匹配需要接收這些類型的注冊組件,通過注冊的組件接收端口分發(fā)這些消息。
圖2 通知服務(wù)的部署與端口連接關(guān)系
圖3 通知服務(wù)組件相關(guān)類
客戶端組件向通知服務(wù)組件注冊特定類型的狀態(tài)事件后,將自動接收該類型的最新狀態(tài)消息,同時客戶端組件有選擇注銷某種類型消息的權(quán)利,在注銷類型之后,通知服務(wù)則立刻不再向該組件推送該類型的消息。如果客戶端組件斷開與通知服務(wù)的端口連接,通知服務(wù)將自動清除并且不會再試圖往該組件發(fā)送任何消息。
基于紅黑邊的設(shè)定,紅黑邊的通知服務(wù)都會維護(hù)需要轉(zhuǎn)發(fā)往另一邊的狀態(tài)類型注冊信息。不過,基于旁路通道框架的限制(見圖1),黑邊的通知服務(wù)組件無法提供所有狀態(tài)事件類型的注冊,而紅邊的通知服務(wù)組件能夠支持所有的狀態(tài)事件類型。
2.2通知服務(wù)組件設(shè)計(jì)
通知服務(wù)基于線程與信號量控制進(jìn)行設(shè)計(jì),同時自身滿足SCA基本平臺組件的接口,由紅黑節(jié)點(diǎn)的設(shè)備管理器負(fù)責(zé)啟動與管理。
通知服務(wù)組件維護(hù)一份狀態(tài)事件消息類型與消息內(nèi)容的映射列表,基于該映射進(jìn)行狀態(tài)事件的注冊管理;采用C++標(biāo)準(zhǔn)隊(duì)列緩存各客戶端組件發(fā)送來的狀態(tài)事件消息,而消息分發(fā)任務(wù)由組件的線程循環(huán)主函數(shù)負(fù)責(zé)。
基本類圖如圖3所示,通過C++模板設(shè)計(jì)事件分發(fā)端口,提供了通知服務(wù)組件狀態(tài)事件的中介傳遞功能、狀態(tài)事件類型注冊情況,紅黑通知服務(wù)組件通過該端口相連[6]。同時,為客戶端組件提供了基本的訂閱狀態(tài)事件的注冊端口以及推送狀態(tài)事件消息使用的發(fā)送端口。
狀態(tài)事件消息使用統(tǒng)一的結(jié)構(gòu)體描述,負(fù)責(zé)描述消息類型的組成結(jié)構(gòu)、類型名稱、及具體消息內(nèi)容?;谀K化思想,采用C++模板實(shí)現(xiàn)統(tǒng)一的消息封裝與解封函數(shù)。借助ACE基本消息單元ACE_Message_Block,以及TAO_InputCDR,TAO_OutputCDR,簡化消息的封裝與解封過程[7]。
2.3客戶端組件相關(guān)設(shè)計(jì)
客戶端組件向通知服務(wù)組件注冊與推送消息的端口屬于通知服務(wù)的輸入端口(圖3),而客戶端組件相關(guān)的接收端口需要進(jìn)行單獨(dú)實(shí)現(xiàn)(如圖4所示:消息分發(fā)端口實(shí)現(xiàn))??蛻舳私M件能夠?qū)崿F(xiàn)選擇性注冊部分類型的狀態(tài)事件消息,也可以直接注冊選擇所有的事件類型。
2.4通知服務(wù)運(yùn)行流程
紅黑邊節(jié)點(diǎn)分別實(shí)例化并運(yùn)行一個通知服務(wù)組件,每個通知服務(wù)組件都維護(hù)一份狀態(tài)對象映射,以及一系列端口和連接。紅黑邊使用的通知服務(wù)組件實(shí)現(xiàn)代碼是一致的。在SCA核心框架的設(shè)備管理器啟動各個設(shè)備與服務(wù)組件的過程中啟動并連接了這些與事件狀態(tài)相關(guān)的組件,同時完成所有作為客戶端的組件注冊事件類型。通知服務(wù)線程掛起,組件間端口處于彼此連通狀態(tài),如圖5所示。
圖5 通知服務(wù)狀態(tài)消息處理時序
當(dāng)某個客戶端程序發(fā)生了某件狀態(tài)變化事件,該事件消息由客戶端組件封裝并推送到與之同側(cè)的通知服務(wù)組件,紅黑兩側(cè)通知服務(wù)組件檢查狀態(tài)是否被注冊,并調(diào)用消息分發(fā)端口提供的消息處理程序,將狀態(tài)事件消息發(fā)送到正確的事件接收組件。
3結(jié)語
通知服務(wù)負(fù)責(zé)SCA各個平臺組件彼此之間傳遞所發(fā)生的狀態(tài)事件的功能。本文介紹了一種基于SCA服務(wù)組件形式的通知服務(wù)設(shè)計(jì)與實(shí)現(xiàn)方法,具體描述了有關(guān)的事件消息類型和事件管理機(jī)制,簡化了通知服務(wù)的使用方法與連接方式,使通知服務(wù)能夠以服務(wù)組件的形式提供事件消息分發(fā)功能,滿足了軟件通信體系結(jié)構(gòu)對戰(zhàn)術(shù)通信裝備系統(tǒng)軟件的模塊化設(shè)計(jì)要求,平臺服務(wù)功能實(shí)現(xiàn)了能夠靈活擴(kuò)展或裁減。類似的設(shè)計(jì)方法,還可以應(yīng)用于系統(tǒng)定位授時服務(wù)、日志服務(wù)等功能模塊的設(shè)計(jì)。
參考文獻(xiàn):
[1]Joint Tactical Networking Center(JTNC).SCA Specification 4.0 User′s Guide[S],V1.0,San Diego,California:JTNC,2012.11.
[2]劉文斌,廖文瑜,彭麟等.電臺軟件架構(gòu)發(fā)展及其向SCA4.0演進(jìn)的途徑分析[J].通信技術(shù),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].北京: 清華大學(xué)出版社,2000.
Michi Hengning,Steve Vinoski.Advance CORBA Programming with C++ [M].BEIJING: Tsinghua University Press,2000.
[7]Douglas C Schimidt,Stephen D Huston著.C++網(wǎng)絡(luò)編程:(卷1)運(yùn)用ACE和模式消除復(fù)雜性[M].葉斌 譯.北京:科學(xué)出版社,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
文獻(xiàn)標(biāo)志碼:A
文章編號:1002-0802(2016)02-0233-05
作者簡介:
廖文瑜(1986—),男,碩士,工程師,主要研究方向?yàn)檐浖o線電及通信技術(shù);
吳非(1982—),男,碩士,工程師,主要研究方向?yàn)檐浖o線電及通信技術(shù);
白維學(xué)(1986—),男,碩士,工程師,主要研究方向?yàn)檐浖o線電及通信技術(shù)。