一种基于组件式开发模式松耦合的子模块间参数传递方法与流程

文档序号:11917981阅读:401来源:国知局
一种基于组件式开发模式松耦合的子模块间参数传递方法与流程

本发明涉及信息技术领域,特别涉及组件式开发模式,以及系统的依赖注入方式,同时涉及到松耦合的组件之间的参数传递方式。具体地说是一种基于组件式开发模式松耦合的子功能模块间参数传递方法。



背景技术:

随着信息技术的不断发展,企业的各种信息管理系统也越来越复杂庞大,单一的工程模块再也无法满足日渐复杂的业务需求,为了简化系统的开发,以及使系统结构更加清晰,便于系统的部署与后期维护,我们将整个系统划分为不同的子功能模块,每个子功能模块以独立组件的方式进行设计、开发、测试,最后将各个组件按需动态集成到系统主框架中。

基于以上所诉的开发模式及系统集成方式,要求系统各个子功能模块相互独立,当某个功能模块出现异常或缺少某个功能模块时,其他功能模块能够正常运行,各个功能模块能够独立运行,互不影响。但是实际项目中并不是每个功能模块都是绝对独立的,不同的业务功能之间存在着千丝万缕的关系,因此各子功能模块之间也存在参数传递的需求。那么不同组件之间在保证参数正常传递的基础上如何实现组件间的松散耦合,成为同一系统框架下不同子模块间参数传递的一个主要课题。

因此在基于组件式开发模式下的实现子模块间的参数传递的同时,保证各个子模块的松散耦合成为系统各独立模块交互的关键,而该发明方法比较完美的解决了子模块间即相互关联又彼此独立这一看似矛盾的问题。



技术实现要素:

本发明是基于同一系统主框架下的不同功能组件之间的参数传递方法,所有的子功能模块注入到同一系统主框架,同时各子功能模块又是独立的功能组件,每一个功能组件可独立设计、开发、测试、运行,彼此相互独立。

本发明采用的技术方案如下:一种基于组件式开发模式松耦合的子模块间 参数传递方法,多个子模块通过Prism提供的依赖注入方式集成到采用Prism技术开发的系统主框架中,系统主框架提供系统总线用于承载参数信息,各个子模块向系统总线发送和接收参数信息,包括以下步骤:

系统的任意子模块对参数信息进行封装处理并向系统总线发布;

有参数需求的子模块向系统总线订阅参数信息,在接收到总线上传输的参数信息之后,进行拆封和判断操作,最终对参数信息进行处理。

所述封装处理并向系统总线发布包括以下步骤:

首先进行参数封装:依据定义的消息类对参数信息进行封装,消息头包括消息类型、发送页面名称;消息体包括参数信息的内容;

然后进行消息信息序列化:通过xml序列化函数将封装后的参数信息即消息实体序列化为字符串信息;

最后进行消息的发布:通过Prism提供的类库在总线上发布字符串信息。

所述有参数需求的子模块向系统总线订阅参数信息包括以下步骤:

首先进行消息头信息的注册:有参数需求的子模块将字符串信息的消息头信息注册到接收页面的初始化列表中,即消息类型及发送页面的注册;

然后进行消息订阅:通过Prism提供的类库在系统总线上订阅字符串信息。

所述进行拆封和判断操作,最终对参数信息进行处理包括以下步骤:

对字符串信息进行接收与拆封:

子模块接收系统总线发送的字符串信息,应用xml反序列化函数将字符串信息拆封,获取消息头,根据消息类型及发送页面名称与初始化列表中注册的消息类型及发送页面名称进行对比来判断是否对接收的字符串信息进行处理;对于要处理的消息将消息体传送到参数处理函数对参数进行处理;否则,不予处理;

对消息体进行参数处理:参数处理函数接收要处理的消息体,通过xml提供的反序列化函数将消息体拆封,获取拆封后的参数信息,之后根据业务需求对参数进行操作。

所述子模块为发送者或者接收者。

所述子模块采用用户组件的开发模式,为独立的功能组件,动态将页面注入到系统主框架。

本发明具有以下优点及有益效果:

1.实现了子功能模块之间的参数传递功能,使每个子功能模块不是信息孤岛,彼此之间可以相互交互。

2.该方法在实现子模块之间参数传递的基础上,实现了模块之间的松散耦合。各个子功能模块在相互独立的基础上又有信息交互,同时不会使一个模块的异常现象扩散到其他模块,保证了系统的稳定性。

3.该方法充分利用了Prism提供的订阅与发布机制,充分利用了系统总线机制,将参数信息广播到系统总线上,各个接收页面按需接收和处理参数信息。较大程度减少了不同模块开发人员之间的交互,降低系统的开发难度,提高系统开发效率。

4.该方法为模块的动态集成打下了良好的基础,模块间能够自由传递参数的同时,也相互独立,子功能模块的动态集成与卸载不会对其他模块造成任何影响,提高了系统的灵活性。

5.本发明使得系统各个子模块充分解耦,其中某一模块发生异常时,不会影响到其他模块的正常运行,从而最大程度的保证了系统的稳定性。

附图说明

图1为本发明的基于组件式开发模式子模块交互集成方式图;

图2为子功能模块间参数传递方式图。

具体实施方式

下面结合附图1、2详细介绍本方法的具体实施方式。

随着信息技术的不断提高,系统也越来越复杂,为了系统开发与后期维护等的方便,依据软件工程的方法,将企业信息管理系统架构划分为多个相对独立的功能模块,在程序开发和集成过程中尽量确保各个子功能模块之间松散耦 合。在确保子功能模块相对独立的同时,也要保证模块间正常的业务交互,实现不同模块页面间的参数传递功能,该方法的必要条件:

1、根据业务需求将整个系统划分为多个独立的功能模块;

2、整个系统采用组件式开发模式,每一个子功能模块都是一个独立的功能组件,并且每个功能组件都符合Prism的组件式开发模式;

3、各功能组件采用依赖注入的方式集成到系统主框架;

4、在整个系统中,每一个功能模块即可以作为参数发送方,也可以作为参数接收方;

5、每个页面必须清楚接收来自于哪些页面的参数,以及参数的类型。

首先,各子功能模块集成在同一系统主框架中,并且以独立工程的方式设计、开发、调试、各子模块以系统主框架为载体可以独立运行。其次,各子功能模块基于用户组件模式的开发方式,可动态集成到系统主框架中。最后,整个系统既要实现子模块的按需动态插拔功能,也要实现模块间的数据通信,在子模块之间互不影响互不制约的同时也存在着业务信息的交互,即实现一种松耦合的模块间参数传递方法。

整个系统框架采用Prism注入式集成方式,根据业务需求可动态将子功能模块注入到系统中,实现子功能模块热插拔的动态集成方式。

每个子功能模块都采用用户组件的开发模式,每个子功能模块的开发需要符合Prism组件式开发模式的规范,能够按需动态将相关页面注入到系统主框架。子功能模块从设计到运行都可独立完成,可采用分布式同步开发测试。每个子功能模块即可以是发送者也可以是接收者,可根据实际需求来转换角色,并且发送模块与接收模块没有必然的联系,不会相互影响与制约,可单独运行。

整个系统以依赖注入的方式来集成各个子功能模块,每一个子功能模块都是一个独立的控件库,可以根据需求动态组合不同的子功能模块,形成不同功能的系统,各子功能模块之间松散耦合,相互独立。

各个子功能模块既可以是发送者也可以是接收者,发送子模块将参数封装 成固定的消息格式,序列化后以广播的方式向系统总线发布,而接收子模块根据需要向系统总线订阅消息信息。

接收子模块初始化接收消息头信息列表,并接收系统总线上的消息信息,拆封消息,获取消息头和消息体,依据消息头及初始化的消息头信息列表,判断是否处理消息体,对于符合要求的消息处理其消息体信息(参数信息)。

首先系统各子功能模块按照Prism组件式开发模式进行设计、开发,并完成单独的测试工作。之后按照实际需求将子功能模块对应的功能组件注入到系统主框架,实现功能组件的按需动态集成的特性,对于存在业务关联的模块之间存在参数传递,参数以广播的模式在系统总线上传输,各模块按需接收参数信息,并进行业务处理。

1、子模块功能组件创建

该发明方法是基于组件式设计模式下的,模块间参数传递方法,子功能模块需要按照Prism组件式开发方式来进行设计与实现,每个子模块应包含如下特性:

①子模块对系统的其他子模块而言应该是相对独立的;

②子模块之间不能相互引用;

③子模块不能维护其依赖项,这些依赖项应该由模块外部系统框架提供,如:注入依赖;

④子模块应该支持热插拔动态集成;

每一个子功能模块都是一个独立的工程,并且都存在一个Module类,该类实现了Prism的IModule接口。在IModule接口中存在方法Initialize(),所有子功能模块的Module类必须重写这个方法来定义其模块的初始化策略,而Prism的ModuleLoader在加载模块的时候也会调用这个方法来完成模块的初始化工作。在子模块的初始化工作中,子功能模块需要向主框架进行对应页面的依赖注入,首先通过子模块的Module类的构造函数来获取系统的RegionManager,之后通过RegionManager来完成子模块对应页面在系统主框架的注入,另外每 一个子模块在系统加载前向主框架配置文件注册相关配置信息,包含信息如下:组件动态库名、子模块类型、子模块的模块名、是否启动时自动加载子模块。

2、系统主框架的创建

系统主框架的主要功能为承载子功能模块,每个子模块功能组件通过Prism提供的依赖注入方式集成到系统主框架,只有承载在主框架中的子模块才能运行与调试,同时系统主框架提供系统总线用于承载参数信息,各个子模块向系统总线发送和接收参数信息。

首先系统主框架提供一个主加载页面,在主加载页面中定义一个页面注入区域:MainRegion,用于完成对各个子模块页面的注入。当前台界面需要显示某一子模块页面信息时,系统将对应页面注册到MainRegion区域,并将其激活。当某一页面退出时,主框架将对应页面从MainRegion中移除。

3、子模块功能组件间参数传递

以上两节介绍了子模块功能组件的开发方法以及其注入式集成方式,下面着重介绍各个独立的功能组件之间是如何实现参数传递的。首先集成到系统框架的功能组件并不是固定的参数发送者或参数接收者,可根据实际的需求来转换相应的角色。发送方将参数信息封装并序列化后发送到系统总线,而参数接收方向系统总线订阅参数信息,实现参数在不同功能组件之间的灵活传递,具体步骤如下:

首先系统的任意模块,如图2模块1向系统总线发布参数信息,在发布参数信息之前需要对其进行一系列的相关封装处理:

①参数封装,依据定义的消息类对参数信息进行封装,包括:

消息头:消息类型、发送页面名称

消息体:参数信息。

②消息信息序列化:

通过xml序列化函数实现发送对象的序列化功能,将封装后的消息对象序列化为字符串信息。

之后模块1将封装处理之后的参数信息发布到系统总线,发送模块通过Prism提供的类库将序列化后的字符串消息的发布到系统总线。具体采用Prism框架体提供的专门用于发布与订阅的功能函数CompositePresentationEvent。

有参数需求的模块向系统总线订阅参数信息,在接收到总线上传输的消息之后,对其进行一系列的拆封和判断操作,最终对参数信息进行处理。参数接收处理流程如下:

①消息头信息的注册

将消息头信息注册到接收页面的初始化列表中,包括消息类型及发送页面的注册。该列表作为接收页面是否处理系统总线上传递的参数的依据。

②消息订阅

通过Prism提供的类库来实现对字符串格式消息的订阅功能,只有订阅之后的页面才能够接收到总线上传递的消息。具体采用Prism框架体提供的专门用于接收总线上的消息的功能函数CompositePresentationEvent。

③消息接收与拆封

接收系统总线发送的字符串格式的消息信息,应用xml反序列化函数将消息对象拆封,获取消息头,根据消息类型及发送页面名来判断是否对接收的总线消息进行处理。对于要处理的消息将消息体传送到参数处理函数,对参数进行处理。

④参数处理

参数处理函数根据需求设定,接收要处理的消息体,通过xml提供的反序列化函数将消息体拆封,获取真正要接收的参数信息,之后根据业务需求对参数进行操作。

该方法的实施方式如下:

1、分解业务需求,拆分子功能模块,系统要求各个子功能模块具备较小的耦合性,同时能够彼此进行数据传递,子模块与主框架的集成方式简单,可以根据需求任意安装卸载,这样可以最大程度的实现企业信息系统的通用性, 也实现了针对不同企业需求系统功能加载的灵活性。如图1所示上侧为系统各个功能模块,每一个圆形代表一个功能模块,各个功能模块相对独立,同时圆形之间以带箭头的曲线连接,代表功能模块之间存在数据传输,箭头的方向代表了数据的传输方向。下面为系统主框架,用于集成各个子功能模块,子模块与主框架的集成方式为自动插拔式集成,便于功能模块的集成与卸载。

2、创建系统主框架,创建系统主加载页面,在主加载页面内定义注入区域MainRegion。

3、创建子模块工程,引用Prism动态库文件,采用组件式开发模式设计开发子模块,为子模块创建Module类,用于实现IModule接口,重写Initialize()函数,定义模块初始化策略。同时在初始化过程中利用Prism提供的RegionManager来注入子模块页面。

4、发送参数模块封装参数信息,创建发送消息,消息格式如下:

消息头:发送页名称+消息类型

消息体:参数信息对象

5、发送参数模块序列化封装好的消息信息,并将消息信息序列化为字符串格式。

6、发送参数模块利用Prism提供的库函数将消息广播到系统总线。

7、接收模块初始化接收消息的类型,及发送消息的页面列表。

8、接收模块利用Prism库函数在系统总线上订阅消息。

9、接收模块接收系统总线上广播的消息。

10、接收模块反序列化字符串格式的消息信息,获取消息对象信息。

11、接收模块利用事先定义好的接收消息类型及发送消息的页面列表来判断消息头信息是否符合规则,从而决定处理还是抛弃消息。

12、接收模块对符合要求的消息进行拆封,获取消息体,即传递的参数信息,并对参数信息进行业务逻辑处理。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1