一种构件反向调用平台及构件间类组播通信的方法

文档序号:6584980阅读:112来源:国知局
专利名称:一种构件反向调用平台及构件间类组播通信的方法
技术领域
本发明涉及基于"平台+构件"软件架构技术领域,特别涉及一种构件可以反向调
用平台,以及构件间进行"类组播"通信的方法。
背景技术
"平台+构件"的软件架构是基于"平台"的开发和基于"构件"的开发CBD 二者的有机结合。在这种系统架构中,"平台"通常将系统的通用基础功能进行集成,并提供统一的集成框架;而"构件"提供某方面特定的或专业性功能。"构件"通过"平台"提供的统一集成框架集成到"平台"上,与"平台" 一起构成一个整体的应用系统。这种传统意义上的"平台+构件"系统架构可以用图l来说明。 在这种传统意义上的系统架构中,构件和平台之间功能和数据交互一般存在两种方式 —种是,领域平台调用构件的功能函数来完成某些特定的任务或计算,而构件一般是不能反向调用平台的计算服务的,即平台的计算功能是很难暴露给构件使用的,如图2所示。这种情形下,平台是一个可执行程序且不具有二次开发功能和接口 ,而构件是集成到平台上运行的动态链接库。 另一种是,平台具有二次开发功能,即除了上述平台调用构件功能之外,平台还提供一系列开发包(一般为动态链接库DLL),第三方(即开发用户)可以使用平台开发包提供的基础功能来开发应用系统。此时,虽然调用平台开发包功能的可以是构件也可以是某种程序片段,但用户开发的应用系统最终是一个与平台独立的可执行程序EXE,而不是集成到平台上执行的动态链接库。"平台+构件"的这种模式,是目前最为流行的软件开发方式,如科学计算领域的MATLAB。这种具有二次开发能力的"平台+构件"架构模式的系统结构如图3所示。 上述两种系统结构是"平台+构件"架构模式系统一般的表现形式,即传统意义上的基于平台的开发和基于构件的开发模式。第一种模式中,开发的构件和平台集成在一起构成一个完整的应用系统;而第二种模式中,基于平台开发的应用系统独立于平台运行。
第一种模式中,平台其实不具有二次开发能力,因此只能平台调用构件的功能。这种模式带来的优点是系统具有统一的集成框架、操作界面和使用风格,集成也相对简单。但其缺点是由于平台不提供二次能力,因此构件不能调用平台上的基础功能,对于那些需要类似于平台的基础和通用功能的构件来说,这是很大的缺陷。这种缺陷带来的不仅仅是构件对基础功能和某些算法的重复开发,如果构件对平台的基础功能存在依赖关系(即构件功能的执行需要平台提供上下文环境),那么此时构件与平台的互动将变得很困难。这种情况下,如果由于依赖关系而构件需要调用或启动平台的某项功能(或服务),一般是通过数据库、文件或消息机制来完成。如,构件向数据库写一个"平台调用地图"的要求,而平台需要通过某种轮询机制来访问数据库以获得"调用地图"的要求。但这种机制的前提是构件和平台之间必须事先存在某种"契约",即平台如何解析数据库记录的约定。文件方式和消息机制也同样需要这种"契约"。这种"契约"方式虽然能解决一定的问题,但"契约"的约定往往很难,且效率很低(如数据库访问、文件读取效率都比较低,轮询机制有时对系统资源开销较大)。因此,总体而言,由于平台不提供二次开发功能接口,而带来系统的可扩展性比较差。 第二种模式中,平台提供二次开发功能接口,从某种程度上克服了第一种模式的不足,但带来的问题是由于没有统一的集成框架和系统操作方式,因此开发出来的系统在集成性、可互操作性、可扩展性、使用风格和界面的规范性以及维护性等方面存在严重不足。另外,如果一旦平台开发包依赖于平台的某种服务(即开发包动态库中某些服务其实是由平台来提供的,而不是在开发包来完成的,那些包含许多计算量比较大而相互依赖的基础功能的平台往往会将这些基础功能以服务的形式提供,而不是将其放入开发包中,这样开发包就会"瘦"许多,否则开发包过大就会造成开发困难或运行时开销过大。如系统动力学计算平台Adams就是这样一种开发模式),那么在运行应用系统的同时也必须运行平台,这样就可能存在不必要的系统开销(因为许多情况下,平台的服务是不需要的。虽然可以通过人工的方式来启动和关闭平台,但由于我们难以确定系统需要平台服务的时机,因此最好将平台一直处于运行状态)。 另外,还有一种情况是上述两种模式都无能为力的,即一个系统的多个构件需要同时接收外部系统(或其它网络节点上的系统或构件)的一个消息或数据。这就是所谓的"类组播"通信。"类组播"通信,即一个应用程序内的一组构件同时接收来自另一个网络节点上应用程序(或其构件)的同一个数据包,与一般意义上的网络节点间的组播通信有着完全不同的机理和技术基础。但如果把前者的应用程序比作后者的网络,前者的构件比作后者分布在节点上的应用程序,那么前者与后者有着相似的组播通信效果,因此我们称之为"类组播"通信。"类组播"通信与网络组播通信有着同样的需求,即减少网络流量提高网络通信效率。如果把一个构件当作一个应用系统来看,构件与应用系统一样,即多个构件接收同一个数据包的情形是大量存在的。

发明内容
( — )发明目的 本发明的目的是针对"平台+构件"架构模式下传统的二次开发方法存在的缺陷
和不足,提出一种构件反向调用平台及构件间"类组播"通信的方法,并基于该方法提出一种崭新的基于"平台"的软件二次开发模式。
发明内容
—种构件反向调用平台及构件间类组播通信的方法,其中,构件通过平台中的二次开发代理RDA反向调用平台功能或平台中构件的功能,所述二次开发代理RDA包括COM对象、COM对象接口及其智能指针、功能代理和通信代理,该方法包括以下步骤
S1 :构件通过RDA提供的COM接口智能指针调用RDA的COM对象;
S2 :C0M对象响应COM接口智能指针的功能调用请求; S3 :COM对象通过功能代理调用平台功能、平台中构件的功能或另一个平台中构
件的功能,所述功能代理包含平台功能接口或平台中构件的功能接口。
其中,所述步骤Sl前包括步骤
5
构件获取所述平台的COM接口智能指针。 其中,所述步骤S3中,COM对象通过功能代理调用平台中构件功能或另一个平台 中构件的功能时,构件通过二次开发代理RDA向平台中的或另一个平台中的多个构件同时 发送功能调用请求或交互数据,具体包括以下步骤 S301 :当构件请求功能调用或发送数据时,构件将功能调用请求或交互数据发送 到平台中的或网络上另一个平台中的通信代理处; S302 :请求数据或响应功能调用的构件所在平台的RDA内的事件连接点响应通信 代理的回调服务,所述回调服务包含所述的功能请求或交互数据; S303 :请求数据或响应功能调用的构件内的监听器与事件连接点建立连接,监听 事件连接点并获取所述数据或响应功能调用。
其中,所述步骤S3前包括步骤 所述功能代理封装平台功能接口和构件功能的接口 ,实现平台功能和构件功能在 RDA内的映射。 —种基于上述的基于构件反向调用平台及构件间类组播通信的方法的系统,包 括 COM调用模块,构件通过RDA提供的COM接口智能指针调用RDA的COM对象;
COM对象模块,用于响应COM接口智能指针的功能调用请求; 功能映射模块,用于COM对象通过功能代理调用平台功能、平台中构件的功能或
另一个平台中构件的功能。
其中,该系统还包括 智能指针获取模块,用于构件获取所述平台的COM接口智能指针。
其中,功能映射模块中COM对象通过功能代理调用平台中构件功能或另一个平台 中构件的功能时,构件通过二次开发代理RDA向平台中或另一个平台中多个构件同时请求 功能调用或交互数据,具体包括 通信代理模块,用于当构件请求功能调用或发送数据时,构件将功能调用请求或 交互数据发送到平台中的或网络上另一个平台中的通信代理处; 通信代理回调服务模块,用于请求数据或响应功能调用的构件所在平台的RDA内 的事件连接点响应通信代理的回调服务,所述回调服务包含所述的功能请求或交互数据;
事件监听模块,用于请求数据或响应功能调用的构件内的监听器与事件连接点建 立连接,监听事件连接点并获取所述数据或响应功能调用。
其中,该系统还包括 功能代理模块,用于封装平台功能接口和构件功能的接口,实现平台功能和构件 功能在RDA内的映射。
(三)有益效果 本发明所述构件反向调用平台及构件间类组播通信的方法具有如下有益效果 [OO39] (1)通过构件(动态链接库)对平台(可执行程序)功能的反向调用机制,很容 易将平台中的基础功能暴露给构件调用,提供了一种崭新的基于"平台"的软件二次开发 模式;构件无需对平台基础功能进行重复开发,从而实现软件最大程度的复用,提高开发效 率;构件与平台之间的交互由于采用COM对象智能指针机制的进程内通信,因此比传统的
6通过数据库或文件的数据交换机制效率更高更灵活;构件与平台之间由于采用了面向接口的功能调用机制,比传统的面向"契约"的机制更加符合软件开发习惯,提高系统集成灵活性降低开发难度。 (2)通过构件间的"类组播"通信机制,多个构件可以同时接收外部系统(或其它网络节点上的系统或构件)的一个消息或数据,为基于"平台+构件"架构模式的软件提供了一种崭新的构件交互模式,解决了许多"平台+构件"的应用系统构件间"类组播"交互的实际需求,并可以降低基于"平台+构件"系统在构件间通信时的网络传输量,而且不需要网络组播通信所谓的组播策略和算法,因此该"类组播"通信机制使用十分方便而灵活。
(3)通过平台提供的统一通信机制和交互接口,实现了平台或构件之间统一的互操作机制,保证了基于平台开发的软件系统之间的互操作性;通过平台提供的统一集成框架,不仅提高系统的集成性,提高开发集成的效率,还可实现构件与平台的集成运行,而无需构件与平台分属于不同的可执行程序而独立运行多个进程,从而提高系统运行效率,降低系统的运行成本;由于构件集成到平台上构成一个完整的应用系统,平台提供统一的集成框架和操作界面及操作方式,一次相比传统的基于动态链接库(DLL)的二次开发模式而言,使开发的应用系统操作界面和风格更加规范、更容易安装维护、扩展性更强。


图1是传统意义上"平台+构件"架构模式的应用系统结构;
图2是平台不具备二次开发能力的"平台+构件"系统基本结构;
图3是传统的平台具有二次开发能力的"平台+构件"系统基本结构;
图4是基于本发明的"平台+构件"架构系统中构件与平台双向调用原理 图5是根据本发明的基于"平台+构件"架构系统的构件反向调用平台的方法中构件反向调用平台及平台中构件功能的原理图; 图6是根据本发明的基于"平台+构件"架构系统的构件反向调用平台的方法中构件反向调用平台及平台中构件功能时序图; 图7是根据本发明的基于"平台+构件"架构系统的构件反向调用平台的方法的"类组播"通信示意图,其中,虚线箭头表示构件反向调用平台功能,实线箭头表示网络上系统1和系统2构件间"类组播"通信,系统1和系统2都是基于"平台+构件"架构的软件系统 图8是图7中通信代理采用RTI通信代理的实例,其中,虚线箭头表示构件反向调用平台功能,实线箭头表示网络上仿真系统1和仿真系统2构件间"类组播"通信,仿真系统1和仿真系统2都是基于"平台+构件"架构的软件系统; 图9是根据本发明的基于"平台+构件"架构系统的构件反向调用平台的方法的"类组播"通信中多个构件同时接收外部系统的同一个数据示例图。
具体实施例方式
本发明提出的构件反向调用平台及构件间类组播通信的方法,结合附图和实施例说明如下。 如图4所示,领域平台中所有需要暴露的基础功能和基本算法全部可以通过一个叫做"二次开发代理RDA (Re-Development Agent)"的模块来代理,构件通过RDA来调用平 台的基础功能和算法(平台基础功能可能由某些基础构件来实现,也可能是位于平台中的 代码块),实现平台功能的二次开发。这样,其实实现了构件与平台之间功能和算法的双向 调用,即平台不仅可以调用构件的特定功能,构件也可以调用平台的基础功能。平台不仅提 供二次开发代理RDA,还提供统一的集成框架,构件通过集成框架集成到平台上与平台构成 一个有机的整体应用系统。 如图5所示,平台中的RDA (Re-Development Agent)包括功能代理、一个COM对象, COM对象提供一个统一的COM接口以及该接口对应的COM接口智能指针。构件获取COM接 口智能指针调用平台中的COM对象,COM对象响应COM接口智能指针的功能调用请求并通 过调用RDA的功能代理进行功能映射来完成构件对平台功能或平台中构件的功能的反向 调用。RDA的功能代理是平台内基础功能及平台中构件功能暴露给调用构件的服务接口 ,该 功能代理和平台的基础功能以及平台中构件功能一一对应。构件获取COM接口智能指针可 通过两种方式,一是构件导出一个函数,平台通过该导出函数将智能指针传递到构件内;二 是构件通过一个消息函数(平台实现消息函数,即平台提供给所有构件的接口形式相同的 导出函数)来从平台中获取智能指针。 图6所示,为构件反向调用平台功能的时序图。过程1、2、3、4反映了构件对平台
一次功能调用的顺序,5、6、7反映的是构件间通信的过程。平台功能实体指的是实现平台基
础功能的实际代码,该代码可能位于平台(即属于平台功能)中,也有可能位于另外一个构
件(即构件通过RDA调用另外一个构件的功能)中。而调用功能的构件与功能实体可以位
于同一个平台内,也可以位于不同的平台内,平台可以分布在不同的网络节点上。 本发明采用"类组播"通信机制用来解决"平台+构件"架构系统中构件间的交互。
在构件反向调用平台中构件功能时,存在多个构件的交互,尤其是一个构件通过二次开发
代理RDA向平台内或另一个平台中多个构件同时发送数据时,就需要进行"类组播"通信。
本发明中在RDA内设置通信代理和COM对象事件连接点机制来实现"类组播"通信。如图
7所示,在二次开发代理RDA内建立一个COM对象事件连接点C和一个通信代理,C和通信
代理相关联,发送数据的构件通过网络通信将数据发送到通信代理处,事件连接点C响应
通信代理的回调服务,回调服务中包含要转送的数据。在每个构件中建立一个事件连接点C
的监听器,并与C建立连接,监听C的事件,从而通过连接点C响应通信代理的回调服务获
取数据。 实施例1 本实施例中,仿真系统l和仿真系统2都是基于本发明的"平台+构件"架构 的软件系统。在基于高层体系结构HLA(High LevelArchitecture)的分布式交互仿真 中,位于某个成员内的多个模型构件需要订购同一个交互数据,而根据HLA运行支持系统 RTI (Runtimelnfrastructure)的要求, 一个成员只能驻留一个RTI代理(RTIamb),这就意 味着成员中的某个模型构件在请求功能调用或发送交互数据时,其功能调用或发送的交互 数据只能到达另一个成员的RTIamb处,然后通过RTIamb以某种机制再转送到订购该数据 的每个模型构件,通过本发明的在RDA内建立COM对象事件连接点的方法就能实现这种机 制,如图8所示,仿真环境中的某个成员(仿真系统2)上的模型构件(构件0)向网络上另 一个成员(仿真系统l)上的多个模型构件(如构件1、构件2和构件3)同时请求功能调用
8或发送交互数据时,仿真系统2的构件0将功能调用请求或交互数据发送到仿真系统1的RTIamb处,仿真系统1的RDA内的事件连接点C响应RTIamb的回调服务,所述回调服务包含所述的功能请求或交互数据,仿真系统1的模型构件1、模型构件2和模型构件3内的监听器与事件连接点C建立连接,监听事件连接点C,事件连接点C在响应RTIamb回调服务的同时,将功能请求或交互数据同时转发给构件1、构件2和构件3的监听器,这样构件1、构件2和构件3就同时获取到了所需要的交互数据或进行相应的功能响应。
在上述过程中,由于COM对象事件连接点会自动监测与监听器的连接数,因此发送方(仿真系统2)构件只需要向需要数据的某个节点(仿真系统l)发送一个数据包,仿真系统l内建立了监听器的所有构件就可以同时接收这同一个数据包。可见,这种"类组播"的目标节点(构件)数量由数据接收方(构件)的监听器数量动态自动的决定,不存在网络组播通信所谓的组播策略和算法问题,因此该"类组播"通信机制使用十分方便而灵活。例如位于同一个仿真节点上的水面舰艇实体和潜艇实体同时"订购"岸上观通站的敌情监视信息,以评估本实体可能的敌方威胁。如图9所示,为舰艇和潜艇同时"订购"相同的观通站信息的交互示意图。这里,水面舰艇和潜艇实体的仿真模型分别由两个构件(如舰艇模型构件和潜艇模型构件)来实现。为了减少通信链路上的数据传输次数,观通站模型构件将"公布"给舰艇和潜艇的监视信息打为一个"数据包",通过信息战仿真系统的通信代理RTIamb发送到舰艇构件和潜艇构件所处平台(海战仿真系统)的RTIamb处,舰艇和潜艇构件通过上述COM对象事件连接点机制的"类组播"通信来获得该信息包并提取属于本构件需要的信息。 基于本发明的构件反向调用平台及构件间类组播通信的方法的系统,包括COM调用模块,构件通过RDA提供的COM接口智能指针调用RDA的COM对象;COM对象模块,用于响应COM接口智能指针的功能调用请求;功能映射模块,用于COM对象通过功能代理调用平台功能、平台中构件的功能或另一个平台中构件的功能。其中,该系统还包括智能指针获取模块,用于构件获取所述平台的COM接口智能指针。其中,功能映射模块中COM对象通过功能代理调用平台中构件功能或另一个平台中构件的功能时,构件通过二次开发代理RDA向平台中或另一个平台中多个构件同时请求功能调用或交互数据,具体包括通信代理模块,用于当构件请求功能调用或发送数据时,构件将功能调用请求或交互数据发送到平台中的或网络上另一个平台中的通信代理处;通信代理回调服务模块,用于请求数据或响应
功能调用的构件RDA内的事件连接点响应通信代理的回调服务,所述回调服务包含所述的功能请求或交互数据;事件监听模块,用于请求数据或响应功能调用的构件内的监听器与事件连接点建立连接,监听事件连接点并获取所述数据或响应功能调用。其中,该系统还包括功能代理模块,用于封装平台功能接口和构件功能的接口 ,实现平台功能和构件功能的在RDA内的映射。 以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。
9
权利要求
一种构件反向调用平台及构件间类组播通信的方法,其特征在于,构件通过平台中的二次开发代理RDA反向调用平台功能或平台中构件的功能,所述二次开发代理RDA包括COM对象、COM对象接口及其智能指针、功能代理和通信代理,该方法包括以下步骤S1构件通过RDA提供的COM接口智能指针调用RDA的COM对象;S2COM对象响应COM接口智能指针的功能调用请求;S3COM对象通过功能代理调用平台功能、平台中构件的功能或另一个平台中构件的功能,所述功能代理包含平台功能接口或平台中构件的功能接口。
2. 如权利要求1所述的构件反向调用平台及构件间类组播通信的方法,其特征在于, 所述步骤SI前包括步骤构件获取所述平台的COM接口智能指针。
3. 如权利要求1所述的构件反向调用平台及构件间类组播通信的方法,其特征在于, 所述步骤S3中,COM对象通过功能代理调用平台中构件功能或另一个平台中构件的功能 时,构件通过二次开发代理RDA向平台中的或另一个平台中的多个构件同时发送功能调用 请求或交互数据,具体包括以下步骤5301 :当构件请求功能调用或发送数据时,构件将功能调用请求或交互数据发送到平 台中的或网络上另一个平台中的通信代理处;5302 :请求数据或响应功能调用的构件所在平台的RDA内的事件连接点响应通信代理 的回调服务,所述回调服务包含所述的功能请求或交互数据;5303 :请求数据或响应功能调用的构件内的监听器与事件连接点建立连接,监听事件 连接点并获取所述数据或响应功能调用。
4. 如权利要求l-3任一所述的构件反向调用平台及构件间类组播通信的方法,其特征 在于,所述步骤S3前包括步骤所述功能代理封装平台功能接口和构件功能的接口 ,实现平台功能和构件功能在RDA 内的映射。
5. —种基于权利要求1所述的基于构件反向调用平台及构件间类组播通信的方法的 系统,其特征在于,包括COM调用模块,构件通过RDA提供的COM接口智能指针调用RDA的COM对象; COM对象模块,用于响应COM接口智能指针的功能调用请求;功能映射模块,用于COM对象通过功能代理调用平台功能、平台中构件的功能或另一 个平台中构件的功能。
6. 如权利要求5所述的基于构件反向调用平台及构件间类组播通信的方法的系统,其 特征在于,还包括智能指针获取模块,用于构件获取所述平台的COM接口智能指针。
7. 如权利要求5所述的基于构件反向调用平台及构件间类组播通信的方法的系统,其 特征在于,功能映射模块中COM对象通过功能代理调用平台中构件功能或另一个平台中构 件的功能时,构件通过二次开发代理RDA向平台中或另一个平台中多个构件同时请求功能 调用或交互数据,具体包括通信代理模块,用于当构件请求功能调用或发送数据时,构件将功能调用请求或交互 数据发送到平台中的或网络上另一个平台中的通信代理处;通信代理回调服务模块,用于请求数据或响应功能调用的构件所在平台的RDA内的事件连接点响应通信代理的回调服务,所述回调服务包含所述的功能请求或交互数据;事件监听模块,用于请求数据或响应功能调用的构件内的监听器与事件连接点建立连接,监听事件连接点并获取所述数据或响应功能调用。
8.如权利要求5-7所述的基于构件反向调用平台及构件间类组播通信的方法的系统,其特征在于,还包括功能代理模块,用于封装平台功能接口和构件功能的接口,实现平台功能和构件功能在RDA内的映射。
全文摘要
本发明公开了一种构件反向调用平台及构件间类组播通信的方法,构件通过二次开发代理RDA反向调用平台或平台中构件的功能,包括步骤构件通过平台提供的COM接口智能指针调用平台中的COM对象;COM对象通过功能映射调用平台或平台中构件的功能;构件间的“类组播”通信,包括步骤发送数据的构件将数据发送到通信代理处;RDA内的事件连接点响应通信代理的回调服务;构件内的监听器监听事件连接点获取回调服务中的数据。基于上述方法的系统包括COM调用模块、COM对象模块、功能代理模块、通信代理模块、通信代理回调服务模块和事件监听模块。本发明能提高开发效率、降低系统运行成本,“类组播”通信降低“平台+构件”系统在构件间通信时的网络传输量。
文档编号G06F9/44GK101739255SQ20091024137
公开日2010年6月16日 申请日期2009年11月30日 优先权日2009年11月30日
发明者叶东, 李元, 王永刚, 陈小青, 马丰文, 马亚平 申请人:马亚平;李元
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1