一种通讯套接方法和系统的制作方法

文档序号:7957236阅读:164来源:国知局
专利名称:一种通讯套接方法和系统的制作方法
技术领域
本发明涉及电通信技术,尤其涉及一种通讯套接方法和系统。
背景技术
在软件设计中,各个模块如何通信是个非常重要的问题,通信方法的优劣直接决定了软件的复用性和可扩展性。
模块化的设计思想出现使各个模块之间的独立性为软件的复用提供了有力的支持,然而随着软件开发的不断深入,在软件框架设计的稳定性与软件功能的扩展之间则产生了矛盾,插件plug-in技术则是一项在不改变原有框架设计的基础上,可以灵活扩展软件功能的技术方案。它的出发点主要是为了使软件能够灵活地进行扩展功能,而不需要对主程序(框架程序)进行重新编译和发布。
它的原理基本上是软件的功能由框架设计/套接单元和插件/业务模块来决定,在框架设计和插件之间具有一个特定的接口,它们两者须通过这个接口来传递数据或控制信息,以实现软件功能,因此,只要符合该接口的程序(或其他功能实体),就称为该框架设计的插件。简单地讲,插件原理就是通过统一的接口来调用不同的模块,以实现不同功能的调用,用来扩充主程序的功能,但一般而言,框架设计/套接单元通常是跟具体的应用逻辑相关的,换句话说,随着功能的扩展,框架设计/套接单元的稳定性与功能扩展之间的矛盾会逐渐增大,影响框架设计/套接单元的稳定性。

发明内容
本发明的目的在于提供一种稳定性强的通讯套接方法和系统,以解决现有技术中由于框架设计/套接单元与具体的应用逻辑相关,框架设计/套接单元的稳定性与功能扩展之间产生矛盾的问题。
本发明所采用的通讯套接方法采用如下步骤A、套接单元接收用户界面模块的请求消息;B、套接单元将所述请求消息加入一个消息队列,该消息队列中的消息设有相应的消息类型标记,所述的消息类型标记至少分为执行类和结果类,所述的请求消息为执行类消息;C、由消息队列取出一个消息,根据该消息的消息类型标记进行如下判别处理C1、若消息类型为执行类,将所述消息解析处理后产生相应的结果消息,将所述的结果消息作为结果类消息加入所述的消息队列;C2、若消息类型为结果类,则将所述结果消息返回相应的用户界面模块。
所述的步骤C1包括如下步骤C11、套接单元依次调用各个业务模块对该消息解析,业务模块将解析出来的消息与该业务模块的处理功能进行匹配性判断,进行如下操作C111、若两者相匹配,继续如下步骤C12;C112、若两者不相匹配,直接返回;C12、该业务模块对该消息进行执行处理,产生相应的结果消息;C13、将结果消息加入所述的消息队列,对该结果消息加注结果类的消息类型标记。
所述的套接单元对业务模块可采用同步调用或异步调用。
所述的步骤B中,所述的消息队列可以根据实际需要进行扩展。
所述的步骤C中,若消息类型既不是执行类,又不是结果类时,套接单元将所取出的消息发送至所有的用户界面模块。
所述的消息为是可扩展标志语言(eXtensible Markup Language)XML消息。
这种通讯套接系统,包括多个用户界面模块,其特征在于还包括套接单元和多个业务模块,所述的套接单元中至少包含一个消息队列,以及用于消息队列处理的消息处理线程模块,其中,所述的套接单元与各个用户界面模块通过信息交互,接收用户界面模块发送的请求消息,或向用户界面模块传递结果消息;所述的套接单元实现对各个业务模块的依次调用,向业务模块传递执行类消息,各个业务模块完成对执行类消息的解析、及相应的执行,套接单元接收业务模块所返回的结果消息;所述的消息队列用于保存套接单元所接收到的请求消息和结果消息,消息队列中的消息设有相应的消息类型标记,所述的消息类型标记至少分为执行类和结果类,所述的请求消息保存为执行类消息,结果消息保存为结果类消息;所述的消息处理线程模块用于从消息队列中取出消息,并对所取消息根据消息类型标记进行相应处理。
所述的套接单元包括一个消息队列、消息处理线程模块、套接字服务器和调用接口模块,其中,所述的套接字服务器监听各个用户界面模块的请求消息,建立套接字连接,或向相关的用户界面模块传递结果消息;所述的消息处理线程模块将执行类消息传递至调用接口模块,将结果类消息传递至套接字服务器;所述的调用接口模块根据收到的执行类消息完成对业务模块的调用,接收业务模块所返回的结果消息并将其传递至消息队列。
本发明的有益效果为在本发明中,本发明通过将请求消息和结果加入套接单元中的一个消息队列,并加设相应的消息类型标记(执行类和结果类),采用消息处理线程模块从消息队列中取出消息并根据其消息类型标记进行相应处理,即向业务模块传递执行类消息/请求消息或向用户界面模块传递结果消息,使得本发明中的套接单元本质上成为一个消息的中转站,它只负责根据消息标记做出相应的处理,并将执行结果转发,并不参与实现具体的业务逻辑,换句话说,本发明中的套接单元为消息提供了一种统一的格式化处理(消息类型标记)以及数据传输的管道,与具体的业务逻辑无关,本发明使套接单元保持良好的独立性,一旦某个业务模块出现问题,并不会影响套接单元的消息处理,其他业务模块仍能正常工作,如果在应用中需要增加新的业务模块,只需插入相应的用户界面模块以及与对应的业务模块,新增用户界面模块采用同样的方法发送消息,即可实现功能上的扩展,这种扩展不会影响到其他业务模块,其他业务模块不需做出任何修改,使本发明稳定性强。
具体地说,本发明具有如下优点1)接口的稳定性所有后台业务模块执行消息的接口(调用接口模块)一致,在增加新的功能模块时,后台业务模块只需继承该接口即可,新增用户界面模块仍通过套接字服务器与套接单元通信,发送消息的接口也是统一的,从以上可以看出,本发明的架构及有关接口的稳定性强。
2)本发明的可扩展性是建立在接口的稳定性基础上的,接口稳定统一后,由于套接单元只负责转发消息,对具体的业务逻辑怎么实现无需了解,所以在增加新的功能时,只需要实现具体的用户界面模块以及对应的业务模块与套接单元插接即可,因此,本发明可扩展性高。


图1为本发明基本结构示意图;图2为本发明基本控制流程示意图;图3为本发明具体结构示意图;图4为本发明具体控制流程示意图。
具体实施例方式
下面根据附图和实施例对本发明作进一步详细说明根据图1和图3,本发明包括多个用户界面模块1、套接单元2和多个业务模块3,套接单元2中包括一个消息队列21,以及用于消息队列21处理的消息处理线程模块22,套接字服务器23和调用接口模块24,其中,如图1所示,套接单元2与各个用户界面模块1通过信息交互,接收用户界面模块1发送的请求消息,或向用户界面模块1传递结果消息。
如图1所示,套接单元2实现对各个业务模块3的依次调用,向业务模块3传递执行类消息,各个业务模块3完成对执行类消息的解析、及相应的执行,套接单元2接收业务模块3所返回的结果消息。
如图1所示,消息队列21用于保存套接单元2所接收到的请求消息和结果消息,消息队列21中的消息设有相应的消息类型标记,所述的消息类型标记至少分为执行类和结果类,请求消息保存为执行类消息,结果消息保存为结果类消息,消息处理线程模块22用于从消息队列21中取出消息,并对所取消息根据消息类型标记进行相应处理。
具体地,如图1和图3所示,多个用户界面模块1包括用户界面模块10、11、…、1X,多个业务模块3包括业务模块30、31、…、3Y,其中X、Y为大于1的整数。套接字服务器23监听各个用户界面模块10、11、…、1X的请求消息,建立套接字连接,或向相关的用户界面模块10、11、…、1X传递结果消息;消息处理线程模块22将执行类消息传递至调用接口模块24,将结果类消息传递至套接字服务器23;调用接口模块24根据收到的执行类消息完成对业务模块30、31、…、3Y的调用,接收业务模块30、31、…、3Y所返回的结果消息并将其传递至消息队列21,在本发明中的消息采用XML消息。
如图1和图2所示,本发明的基本控制流程如下1)用户界面模块1发送请求消息.
2)套接单元2接收请求消息;3)套接单元2将收到的请求消息加入一个消息队列21,该消息队列21中的消息设有相应的消息类型标记,所述的消息类型标记分为执行类和结果类,请求消息为执行类消息,结果消息为结果类消息。
4)套接单元2中的消息处理线程模块22由消息队列21取出一个消息。
5)消息处理线程模块22根据该消息的消息类型标记进行如下判别处理
51)若消息类型为执行类,将所述消息解析处理后产生相应的结果消息,将产生的结果消息作为结果类消息加入消息队列21。
52)若消息类型为结果类,则将该结果消息返回相应的用户界面模块1。
如图3和图4所示,下面就本发明的具体控制流程说明如下1.如图3所示,现设用户界面模块10发送请求消息。
2.套接单元2中的套接字服务器23接收该请求消息,并将其发送至消息队列21。
3.被接收到的消息加入消息队列21,该消息队列21中的消息设有相应的消息类型标记,消息类型标记分为执行类和结果类,请求消息为执行类消息,结果消息为结果类消息。该消息队列21可以根据实际需要进行扩展,例如在内部设定不同优先级的消息,优先级较高的消息放在队列前面,消息处理线程模块22不用做任何改动。
4.消息处理线程模块22由消息队列21取出一个消息。
5.消息处理线程模块22根据该消息的消息类型标记进行如下判别处理51.若该消息类型为执行类,继续如下步骤6。
52.否则,判断该消息类型是否为结果类,进行如下操作521.若为结果类,消息处理线程模块22则将该结果消息通过套接字服务器23返回相应的用户界面1M,在这里,M为处于
区间的整数,该用户界面模块1M接收到xml消息后,先解析,然后根据消息名字和消息参数知道执行结果,然后进行界面层的呈现操作。
522.否则,消息处理线程模块22将所取出的消息通过套接字服务器23发送至所有的用户界面模块10、11、…、1X,
6.消息处理线程模块22将该执行类消息(即请求消息)传送至调用接口模块24,调用接口模块24依次调用各个业务模块30、31、…或3Y对该消息解析,对于xml执行类消息,则依次调用各个业务模块30、31、…或3Y的xml消息执行接口,每个业务模块30、31、…或3Y都继承一个执行xml消息的接口。
这样,业务模块30、31、…或3Y分别将解析出来的消息与自身的处理功能进行匹配性判断,进行如下操作61、若两者相匹配,如图3所示,例如,业务模块3Y与该执行类消息(即请求消息)相匹配,继续如下步骤7。
对于这种匹配性判断,例如,可以通过解析出来的消息名字与各业务模块30、31、…或3Y所处理的消息名字相比较,如果一致则表示相匹配,当然,也可以采用其它方法进行匹配性判断,这对于本领域技术人员来说可以不需要付出创造性劳动即可予以多种方法的实施,此处不再赘述。
62、若两者不相匹配,直接返回步骤6,在这里,步骤6、步骤61和步骤62共同完成一个局部的循环操作,相当于使步骤6中的执行类消息(即请求消息)遍历所有的业务模块30、31、…和3Y。
7.业务模块3Y对该消息进行执行处理,如图3所示,业务模块3Y产生相应的结果消息,并将其发送至调用接口模块24。
8.通过调用接口模块24将结果消息加入消息队列21,在实际应用中,调用接口模块24可以对业务模块30、31、…或3Y采用同步调用或异步调用,对于同步调用,当调用执行xml消息接口ExecuteXml(string& strXml),返回值表明是同步调用时,strXml既是输入参数也是输出参数,这就是执行后的结果,可直接把输出的strXml放入xml消息队列21;对于异步调用,当执行ExecuteXml时,如果要执行的时间较长或者不可能一次性返回结果,那么就要采用调用接口模块24的异步返回接口OnHandleEvent(string&strXml),strXml即为返回的xml消息执行结果,在该接口实现中,把strXml放入消息队列21。在消息队列21中对该结果消息加注结果类的消息类型标记,返回如步骤3所示。
本发明通过上述操作,可以实现几个用户界面模块10、11、…、1X之间的互相通信,或者几个后台业务模块30、31、…、3Y之间的互相通信,甚至不同的用户界面模块10、11、…或1X与后台业务模块30、31、…或3Y之间的交叉通信,那么只需要在相应的模块中加入对应的消息,套接单元2不用作任何改动。
在前述实施例中,只设置有一个消息队列,在实际应用中,可以根据需要分成两个消息队列,每个消息队列由一个线程处理,例如,根据交叉通信的消息和执行结果进行区分,也可以根据用户界面模块之间的通信和后台业务模块之间的通信进行区分,分别放置于两个消息队列中。另外消息队列还可以扩展为带有优先级的消息队列,根据优先级的不同,消息在队列中的位置也不同,这样执行起来,优先级高的消息可以先得到执行,等等,结合前述实施例所述,这对于本领域技术人员来说,可以不需要付出创造性劳动即可实施,此处不再赘述。
权利要求
1.一种通讯套接方法,其特征在于它采用如下步骤A、套接单元接收用户界面模块的请求消息;B、套接单元将所述请求消息加入一个消息队列,该消息队列中的消息设有相应的消息类型标记,所述的消息类型标记至少分为执行类和结果类,所述的请求消息为执行类消息;C、由消息队列取出一个消息,根据该消息的消息类型标记进行如下判别处理C1、若消息类型为执行类,将所述消息解析处理后产生相应的结果消息,将所述的结果消息作为结果类消息加入所述的消息队列;C2、若消息类型为结果类,则将所述结果消息返回相应的用户界面模块。
2.根据权利要求1所述的通讯套接方法,其特征在于所述的步骤C1包括如下步骤C11、套接单元依次调用各个业务模块对该消息解析,业务模块将解析出来的消息与该业务模块的处理功能进行匹配性判断,进行如下操作C111、若两者相匹配,继续如下步骤C12;C112、若两者不相匹配,直接返回;C12、该业务模块对该消息进行执行处理,产生相应的结果消息;C13、将结果消息加入所述的消息队列,对该结果消息加注结果类的消息类型标记。
3.根据权利要求2所述的通讯套接方法,其特征在于所述的套接单元对业务模块可采用同步调用或异步调用。
4.根据权利要求1所述的通讯套接方法,其特征在于所述的步骤B中,所述的消息队列可以根据实际需要进行扩展。
5.根据权利要求1-4中任意一项所述的通讯套接方法,其特征在于所述的步骤C中,若消息类型既不是执行类,又不是结果类时,套接单元将所取出的消息发送至所有的用户界面模块。
6.根据权利要求1-4中任意一项所述的通讯套接方法,其特征在于所述的消息为xml消息。
7.一种通讯套接系统,包括多个用户界面模块,其特征在于还包括套接单元和多个业务模块,所述的套接单元中至少包含一个消息队列,以及用于消息队列处理的消息处理线程模块,其中,所述的套接单元与各个用户界面模块通过信息交互,接收用户界面模块发送的请求消息,或向用户界面模块传递结果消息;所述的套接单元实现对各个业务模块的依次调用,向业务模块传递执行类消息,各个业务模块完成对执行类消息的解析、及相应的执行,套接单元接收业务模块所返回的结果消息;所述的消息队列用于保存套接单元所接收到的请求消息和结果消息,消息队列中的消息设有相应的消息类型标记,所述的消息类型标记至少分为执行类和结果类,所述的请求消息保存为执行类消息,结果消息保存为结果类消息;所述的消息处理线程模块用于从消息队列中取出消息,并对所取消息根据消息类型标记进行相应处理。
8.根据权利要求1所述的通讯套接系统,其特征在于所述的套接单元包括一个消息队列、消息处理线程模块、套接字服务器和调用接口模块,其中,所述的套接字服务器监听各个用户界面模块的请求消息,建立套接字连接,或向相关的用户界面模块传递结果消息;所述的消息处理线程模块将执行类消息传递至调用接口模块,将结果类消息传递至套接字服务器;所述的调用接口模块根据收到的执行类消息完成对业务模块的调用,接收业务模块所返回的结果消息并将其传递至消息队列。
全文摘要
一种涉及电通信技术的通讯套接方法和系统,其方法为A.套接单元接收用户界面模块的请求消息,B.套接单元将请求消息加入消息队列,其中的消息设有相应的消息类型标记,分为执行类和结果类C.由消息队列取出一个消息,根据该消息的消息类型标记进行如下判别处理C1.若为执行类,将消息解析处理后产生相应的结果消息,将结果消息作为结果类消息加入消息队列;C2.若为结果类,则将结果消息返回相应的用户界面模块,该系统包括多个用户界面模块,其特征在于还包括套接单元和多个业务模块,所述的套接单元中至少包含一个消息队列,以及用于消息队列处理的消息处理线程模块,本发明稳定性强。
文档编号H04L12/58GK101060500SQ20061006112
公开日2007年10月24日 申请日期2006年6月8日 优先权日2006年6月8日
发明者杨胜 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1