软件系统及插件间消息传递方法

文档序号:8319004阅读:301来源:国知局
软件系统及插件间消息传递方法
【技术领域】
[0001]本发明涉及一种软件,尤其涉及一种软件系统。
[0002]本发明涉及一种软件,尤其涉及一种软件系统中插件间消息传递方法。
【背景技术】
[0003]插件是遵循一定规范的编写出来的程序,其经常应用于软件系统中,用于拓展软件系统的功能,或强化软件系统的某一功能。
[0004]传统的软件系统是软件开发商依照市场或用户的功能需求进行开发,在开发过程中会整体考虑软件的每一部分以满足功能需求。即便在软件系统中应用了插件,在开发过程中,也会将插件作为整体软件系统中的一小部分,插件之间直接进行数据或消息的传递,使得插件之间具有较强的耦合度。在软件用户使用软件的过程中,有时需要根据工作研究成果对部分插件的算法进一步的改进。如在地震勘探领域,受技术发展及不同的需求,配套的地震勘探软件不可能提供所有的物探算法应用。为了避免每次对算法的改变都通过软件开发商,软件用户会想自己重新编制软件中的部分插件,以实现最新的算法,然而由于现有软件系统中插件之间的耦合度非常强,若需要修改插件或编制新插件,需要开发人员对软件系统的底层程序有着非常全面深入的了解,显然软件用户对软件系统的了解不可能达到要求,使得目前软件系统难以满足软件用户的使用要求。

【发明内容】

[0005]有鉴于此,有必要提供一种插件之间具有较低耦合度的软件系统。
[0006]本发明提供一种软件系统,包括:第一插件包括用于向基础平台发出需传递的消息的消息注册模块,所述消息代表所述第一插件执行的功能;用于在所述消息代表的功能被执行时通知所述基础平台所述消息发生的通知模块;第二插件包括用于向所述基础平台发出侦听请求的侦听请求模块,所述侦听请求为侦听所述消息;用于接收从所述基础平台发出的所述消息的消息接收模块;基础平台包括用于接收和保存所述消息和所述侦听请求的接收模块;收发模块,用于在接收所述发送模块通知后,将所述消息发送给所述第二插件。
[0007]优选地,所述第一插件还包括:用于向所述基础平台发出数据注册请求的数据注册模块,所述数据注册请求中包括所述第一插件需要注册的数据;所述基础平台还包括:用于接收所述数据注册请求,并按照预定保存规则保存所述数据的数据保存模块;用于接收数据使用请求,并反馈所述数据的数据反馈模块;所述第二插件还包括:用于向所述基础平台发出数据使用请求,以及接收所述基础平台反馈的数据的使用请求模块。
[0008]优选地,所述基础平台还包括使用记录模块,所述使用记录模块用于记录所述数据当前被插件使用的次数记录,在所述数据反馈模块接收到所述数据使用请求之后,所述使用记录模块将所述次数记录增加预定数值。
[0009]优选地,所述第二插件还包括在所述数据使用结束后,向所述基础平台发出数据释放通知的释放通知模块;所述基础平台还包括释放通知接收模块,所述释放通知接收模块收到所述数据释放通知后,所述使用记录模块将所述使用记数减小所述预定数值。
[0010]优选地,所述基础平台还包括数据删除模块,所述数据删除模块仅当所述次数记录等于预定数量时才能够删除所述数据。
[0011]优选地,所述第二插件具有唯一代表所述第二插件的身份信息,所述接收模块设置有消息表,在所述消息表中对应存储所述消息和所述第二插件的身份信息。
[0012]本发明还提供一种软件系统中插件间消息传递方法,包括:第一插件向基础平台发出需传递的消息,所述消息代表所述第一插件执行的功能;所述基础平台保存所述消息;第二插件向所述基础平台发出侦听请求,以侦听所述消息;所述基础平台接收所述侦听请求;所述消息代表的功能被执行,所述第一插件通知所述基础平台;所述基础平台将所述消息发送给所述第二插件;所述第二插件接收所述消息。
[0013]本发明提供的软件系统及插件间消息传递方法,通过利用基础平台为插件之间传递消息,从而使得插件之间无需进行直接的消息传递,减小了插件之间的耦合度,从而便于对软件系统中插件的升级,或者编写新的插件,使得所述软件系统具有广泛的适用性,能够满足软件用户的使用需求。
【附图说明】
[0014]图1是本发明第一实施方式提供的软件系统的功能框图;
[0015]图2是本发明第二实施方式提供的软件系统的功能框图;
[0016]图3是本发明第三实施方式提供的软件系统的功能框图;
[0017]图4是本发明实施方式提供的软件系统中插件间消息传递方法的流程示意图。
【具体实施方式】
[0018]请参阅图1,本发明第一实施方式提供一种软件系统100,其包括:第一插件10和第二插件20、和为所述第一插件10和所述第二插件20之间传递消息的基础平台30。所述软件系统100通过所述基础平台30为所述第一插件10和所述第二插件20传递消息,从而实现降低了所述第一插件10和所述第二插件20之间的耦合度。
[0019]所述第一插件10和所述第二插件20为按照预定规则开发编制。进一步的,只有按照所述预定规则开发的插件才能够被所述基础平台30识别。所述预定规则可以包括:插件文件的扩展名,插件的命名规则、插件内函数的命名规则、插件的调用接口等。当然所述预定规则还可以包括其他内容,在此限于篇幅,不再一一列举,本领域技术人员依照本领域的现有技术还可能对所述预定规则作出进一步的变更,但是要其实现的功能和效果与本发明相同或相似均应涵盖于本发明保护范围内。
[0020]所述第一插件10包括消息注册模块12和通知模块14。
[0021]所述消息注册模块12用于向基础平台发出需传递的消息,所述消息代表所述第一插件执行的功能。在所述软件系统运行过程中,一个插件执行的某个功能可能是另一个插件的某个功能的启动事件,此时,插件之间便需要消息传递。所述功能可以为依照软件开发要求的需要,将数据按照某一算法进行处理,或者将运算结果按照某一方式呈现给用户。当然,所述预定功能还可能是其它可以通过软件实现的功能,在此限于篇幅不再列举。在本实施方式中,假设所述第一插件10可能将要执行功能G,所述第一插件10给所述基础平台30发出消息,告知所述基础平台30所述第一插件10将要执行功能G。如此可以实现将所述基础平台30作为媒介,将所述第一插件10将要执行的功能告知其它插件。
[0022]所述消息能够唯一代表所述第一插件10将要执行的功能。如此有效避免程序执行过程中消息传递出现混淆,从而使所述软件系统运行较为稳定。所述消息可以为主要实现所述功能的函数的名称,也可以为唯一表示所述功能的识别码。在本实施方式中,所述消息为唯一表示所述功能的识别码,其可以包括英文字母、数字和标点符号。
[0023]当然,由于软件用户在使用过程中有着不确定性,即所述第一插件10的全部功能均可能被执行。所述第一插件10可以仅将其可能将要执行的部分功能的作为消息发送给所述基础平台30,也可以将
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1