CN109150719A - 一种基于qt的c/s架构消息路由方法及装置 - Google Patents
一种基于qt的c/s架构消息路由方法及装置 Download PDFInfo
- Publication number
- CN109150719A CN109150719A CN201810955064.5A CN201810955064A CN109150719A CN 109150719 A CN109150719 A CN 109150719A CN 201810955064 A CN201810955064 A CN 201810955064A CN 109150719 A CN109150719 A CN 109150719A
- Authority
- CN
- China
- Prior art keywords
- business module
- data
- client
- module
- message center
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/14—Routing performance; Theoretical aspects
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明通过提供一种基于QT的C/S架构消息路由方法,通过预先将所有业务模块与消息中心通过QT的connect函数绑定,通过setProperty方法设置业务模块属性,使业务模块具有唯一的标识符,客户端的消息中心将请求数据的msgid字段的值和相应业务模块的唯一标识符对应,客户端消息中心将服务端应答数据的resid字段的值与模块唯一标识符进行匹配,将应答数据发送到相应的业务模块,从而保证数据收发的一一对应,本发明还提供了一种基于QT的C/S架构消息路由的装置,提高了C/S架构下消息路由的稳定性,避免由于客户端的消息中心数据分发紊乱,导致客户端正常的业务功能紊乱,无法正常工作。
Description
技术领域
本发明涉及C/S架构消息路由领域,尤其是涉及一种基于QT的C/S架构消息路由方法及装置。
背景技术
在C/S(即Client/Server结构,是客户机和服务器结构)架构中,在客户端的各个模块发出数据请求,其中数据传递均以json(即JavaScript Object Notation,是一种轻量级的数据交换格式,易于人阅读和编写,也易于机器解析和生成)格式传递,这些请求都会汇集到客户端的消息中心,由消息中心调用通信接口发送数据到服务端;服务端收到数据请求后,应答客户端,向客户端返回应答数据,这些应答数据由客户端的通信接口接收,通信接口将应答数据交给消息中心,然后由消息中心识别应答数据,判断应答数据应该发送到那个模块,最终将应答数据分发到客户端相应模块,这个过程我们称为消息路由。现有技术中,在客户端的数据请求和应答的过程中,客户端消息中心往往无法将业务模块请求数据的应答数据准确的分发到该业务模块,将导致消息中心的数据分发紊乱,从而导致客户端正常的业务功能紊乱,无法正常工作。
发明内容
为了提高C/S架构下消息路由的稳定性,避免由于客户端的消息中心数据分发紊乱,导致客户端正常的业务功能紊乱,无法正常工作。本发明通过提供一种基于QT的C/S架构消息路由方法及装置,基于QT程序的信号与槽以及C++多态数据属性,将应答数据准确发送到相应的业务模块,从而保证数据收发的一一对应,提高了C/S架构下消息路由的稳定性,避免由于客户端的消息中心数据分发紊乱,导致客户端正常的业务功能紊乱,无法正常工作。
本发明第一方面提供了一种基于QT的C/S架构消息路由方法,实现客户端的消息中心调用通信接口发送请求数据到服务端,服务端做出应答后将应答数据通过通信接口交给客户端消息中心,还包括以下步骤:
将客户端的所有业务模块与消息中心通过QT的connect 函数绑定;
通过setProperty设置业务模块属性,使业务模块具有唯一标识符;
业务模块通过数据请求信号函数发送请求数据,消息中心的请求数据接收槽函数响应,接收请求数据;
客户端消息中心将接收到请求数据中msgid字段的值和业务模块的唯一标识符通过map集合实现对应绑定;
客户端消息中心接收应答数据,取出应答数据的resid 字段的值,将resid字段的值去全局map中匹配业务模块唯一标识符,然后将应答数据发送到相应的业务模块。
结合第一方面,在第一方面第一种可能的实现方式中,所述将客户端的所有业务模块通过QT的connect函数绑定其具体过程是:将客户端的所有业务模块的请求数据的信号函数与消息中心的业务模块请求数据接收槽函数通过QT的 connect函数绑定,将客户端消息中心应答业务模块的信号函数和客户端业务模块的应答数据接收槽函数通过QT的connect函数绑定。
结合第一方面,在第一方面第二种可能的实现方式中,所述通过setProperty设置的业务模块属性中,每个业务模块类拥有共同的父类,继承于QObject,通过setProperty方法设置,其具体是:每个业务模块类都继承于QObject (QObject类是所以QT类的基类,也是QT对象模型的核心, 这个模型中的核心特性就是能让对象键无缝通信的信号和槽的机制),拥有共同的父类,QObject拥有setProperty 方法,通过setProperty方法设置模块属性,使业务模块具有唯一标识符。
结合第一方面,在第一方面第三种可能的实现方式中,所述客户端消息中心将接收到请求数据中msgid字段的值和业务模块的唯一标识符通过map集合实现对应绑定,具体是:通过调用QObject类型的业务模块的对象指针的Property 函数(property函数用来在新式类中返回属性值),获得业务模块唯一标识符,并将请求数据中msgid字段的值和业务模块的唯一标识符通过map集合实现一一对应绑定。
结合第一方面,在第一方面第四种可能的实现方式中,所述QObject类型的业务模块的对象指针是通过sender() 函数(返回发送信号的对象的指针,返回类型为QObject)获取到发送数据的业务模块对象指针,然后将该对象指针转换为QObject类型的对象指针。
结合第一方面,在第一方面第五种可能的实现方式中,所述请求数据中msgid字段的值和业务模块的唯一标识符通过map集合实现对应绑定,具体为:将接收到的请求数据的msgid字段的值作为全局map的key(关键值),将获得的业务模块的唯一标识符作为全局map的value(影射值),通过map集合实现一一对应绑定。
结合第一方面,在第一方面第六种可能的实现方式中,所述客户端消息中心在全局map中匹配业务模块唯一标识符过程中,匹配依据是请求数据的msgid字段的值和应答数据的resid的值相同。
结合第一方面,在第一方面第七种可能的实现方式中,所述消息路由过程中数据传递均以json格式传递。
本发明第二方面提供了一种基于QT的C/S架构消息路由的装置,实现客户端的消息中心调用通信接口发送请求数据到服务端,服务端做出应答后将应答数据通过通信接口交给客户端消息中心,还包括:
第一绑定模块,将客户端的所有业务模块与消息中心通过QT的connect函数绑定;
标识符设置模块,通过setProperty设置业务模块属性,使业务模块具有唯一标识符;
请求数据发送模块,业务模块通过数据请求信号函数发送请求数据,消息中心的请求数据接收槽函数响应,接收请求数据;
第二绑定模块,客户端消息中心将接收到请求数据中msgid字段的值和业务模块的唯一标识符通过map集合实现对应绑定;
请求数据应答模块,客户端消息中心接收应答数据,取出应答数据的resid字段的值,将resid字段的值去全局map 中匹配业务模块唯一标识符,然后将应答数据发送到相应的业务模块。
本发明采用的技术方案包括以下技术效果:
本发明通过提供一种基于QT的C/S架构消息路由方法及装置,通过预先将所有业务模块与消息中心通过QT的connect函数绑定,通过setProperty方法设置业务模块属性,使业务模块具有唯一的标识符,客户端的消息中心将请求数据的msgid字段的值和相应业务模块的唯一标识符通过map 集合实现对应绑定对应绑定,客户端消息中心取出应答数据的resid字段的值,将resid字段的值去全局map中匹配业务模块唯一标识,将应答数据发送到相应的业务模块,从而保证数据收发的一一对应,本发明还提供了一种基于QT的 C/S架构消息路由的装置,提高了C/S架构下消息路由的稳定性,避免由于客户端的消息中心数据分发紊乱,导致客户端正常的业务功能紊乱,无法正常工作。
应当理解的是以上的一般描述以及后文的细节描述仅是示例性和解释性的,并不能限制本发明。
附图说明
为了更清楚说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单介绍,显而易见的,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1本发明方案中方法实施例一的结构示意图;
图2本发明方案中装置实施例二的结构示意图。
具体实施方式
为能清楚说明本方案的技术特点,下面通过具体实施方式,并结合其附图,对本发明进行详细阐述。下文的公开提供了许多不同的实施例或例子用来实现本发明的不同结构。为了简化本发明的公开,下文中对特定例子的部件和设置进行描述。此外,本发明可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。应当注意,在附图中所图示的部件不一定按比例绘制。本发明省略了对公知组件和处理技术及工艺的描述以避免不必要地限制本发明。
实施例一
如图1所示,本发明技术方案中一种基于QT的C/S架构消息路由方法,包括:
S11,将客户端的所有业务模块与消息中心通过QT的 connect函数绑定。
S12,通过setProperty设置业务模块属性,使业务模块具有唯一标识符。
S13,各个业务模块的通过数据请求信号函数发送请求数据,消息中心的请求数据接收槽函数响应,接收请求数据。
S14,客户端消息中心将接收到请求数据中msgid字段的值和业务模块的唯一标识符通过map集合实现对应绑定。
S15,客户端的消息中心调用通信接口发送请求数据到服务端,服务端做出应答后将应答数据通过通信接口交给客户端消息中心。
S16,客户端消息中心接收应答数据,取出应答数据的 resid字段的值,将resid字段的值去全局map中匹配业务模块唯一标识符,然后将应答数据发送到相应的业务模块。
在步骤S11中,将客户端的所有业务模块与消息中心通过QT的connect函数绑定包括:将客户端的所有业务模块的请求数据的信号函数与消息中心的请求数据接收槽函数通过QT的connect函数绑定;将客户端消息中心应答数据的信号函数和业务模块的应答数据接收槽函数通过QT的 connect函数绑定。
在步骤S12中,通过setProperty设置的业务模块属性,使业务模块具有唯一标识符包括:每个业务模块类都继承于 QObject,拥有共同的父类,QObject拥有setProperty方法,通过setProperty设置模块属性,并给业务模块属性赋值,使业务模块具有唯一标识符。
在步骤S14中,客户端消息中心将接收到请求数据中 msgid字段的值和业务模块的唯一标识符通过map集合实现对应绑定包括:通过sender()函数获取到发送数据的业务模块对象指针,将这个对象指针转换为QObject类型的对象指针,通过调用QObject类型的业务模块的对象指针的 Property函数,设置取出业务模块唯一标识符,并将接收请求数据中msgid字段的值作为全局map的key和取出业务模块的唯一标识符作为全局map的value,通过map集合实现一一对应绑定。
在步骤S16中,将resid字段的值去全局map中匹配业务模块唯一标识符,其匹配依据是请求数据的msgid字段的值和应答数据的resid的值相同。
在方法实施例一中,消息路由过程中数据传递均以json 格式传递。
如图2所示,一种基于QT的C/S架构消息路由的装置,实现客户端的消息中心调用通信接口发送请求数据到服务端,服务端做出应答后将应答数据通过通信接口交给客户端消息中心,还包括:
第一绑定模块101,将客户端的所有业务模块与消息中心通过QT的connect函数绑定;
标识符设置模块102,通过setProperty设置业务模块属性,使业务模块具有唯一标识符;
请求数据发送模块103,业务模块通过数据请求信号函数发送请求数据,消息中心的请求数据接收槽函数响应,接收请求数据;
第二绑定模块104,客户端消息中心将接收到请求数据中msgid字段的值和业务模块的唯一标识符通过map集合实现对应绑定;
请求数据应答模块105,客户端消息中心接收应答数据,取出应答数据的resid字段的值,将resid字段的值去全局 map中匹配业务模块唯一标识符,然后将应答数据发送到相应的业务模块。
上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。
Claims (9)
1.一种基于QT的C/S架构消息路由的方法,实现客户端的消息中心调用通信接口发送请求数据到服务端,服务端做出应答后将应答数据通过通信接口交给客户端消息中心,其特征是,还包括以下步骤:
将客户端的所有业务模块与消息中心通过QT的connect函数绑定;
通过setProperty设置业务模块属性,使业务模块具有唯一标识符;
业务模块通过数据请求信号函数发送请求数据,消息中心的请求数据接收槽函数响应,接收请求数据;
客户端消息中心将接收到请求数据中msgid字段的值和业务模块的唯一标识符通过map集合实现对应绑定;
客户端消息中心接收应答数据,取出应答数据的resid字段的值,将resid字段的值去全局map中匹配业务模块唯一标识符,然后将应答数据发送到相应的业务模块。
2.根据权利要求1所述的基于QT的C/S架构消息路由的方法,其特征是,所述将客户端的所有业务模块与消息中心通过QT的connect函数绑定,包括:
将客户端的所有业务模块的请求数据的信号函数与消息中心的请求数据接收槽函数通过QT的connect函数绑定;
将客户端消息中心应答数据的信号函数和业务模块的应答数据接收槽函数通过QT的connect函数绑定。
3.根据权利要求1所述的基于QT的C/S架构消息路由的方法,其特征是,所述通过setProperty设置的业务模块属性中,每个业务模块类拥有共同的父类,继承于QObject,通过setProperty方法设置。
4.根据权利要求1所述的基于QT的C/S架构消息路由的方法,其特征是,所述客户端消息中心将接收到请求数据中msgid字段的值和业务模块的唯一标识符通过map集合实现对应绑定,具体是:通过调用QObject类型的业务模块的对象指针的Property函数,获得业务模块唯一标识符,并将请求数据中msgid字段的值和业务模块的唯一标识符通过map集合实现一一对应绑定。
5.根据权利要求4所述的基于QT的C/S架构消息路由的方法,其特征是,所述QObject类型的业务模块的对象指针是通过sender()函数获取到发送数据的业务模块对象指针,然后将该对象指针转换为QObject类型的对象指针。
6.根据权利要求4所述的基于QT的C/S架构消息路由的方法,其特征是,所述请求数据中msgid字段的值和业务模块的唯一标识符通过map集合实现对应绑定,具体为:将接收到的请求数据的msgid字段的值作为全局map的key,将获得的业务模块的唯一标识符作为全局map的value,通过map集合实现一一对应绑定。
7.根据权利要求1所述的基于QT的C/S架构消息路由的方法,其特征是,所述客户端消息中心在全局map中匹配业务模块唯一标识符过程中,匹配依据是请求数据的msgid字段的值和应答数据的resid的值相同。
8.根据权利要求1至7任一所述的基于QT的C/S架构消息路由的方法,其特征是,所述消息路由过程中数据传递均以json格式传递。
9.一种基于QT的C/S架构消息路由的装置,实现客户端的消息中心调用通信接口发送请求数据到服务端,服务端做出应答后将应答数据通过通信接口交给客户端消息中心,其特征是,还包括:
第一绑定模块,将客户端的所有业务模块与消息中心通过QT的connect函数绑定;
标识符设置模块,通过setProperty设置业务模块属性,使业务模块具有唯一标识符;
请求数据发送模块,业务模块通过数据请求信号函数发送请求数据,消息中心的请求数据接收槽函数响应,接收请求数据;
第二绑定模块,客户端消息中心将接收到请求数据中msgid字段的值和业务模块的唯一标识符通过map集合实现对应绑定;
请求数据应答模块,客户端消息中心接收应答数据,取出应答数据的resid字段的值,将resid字段的值去全局map中匹配业务模块唯一标识符,然后将应答数据发送到相应的业务模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810955064.5A CN109150719A (zh) | 2018-08-21 | 2018-08-21 | 一种基于qt的c/s架构消息路由方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810955064.5A CN109150719A (zh) | 2018-08-21 | 2018-08-21 | 一种基于qt的c/s架构消息路由方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109150719A true CN109150719A (zh) | 2019-01-04 |
Family
ID=64790676
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810955064.5A Pending CN109150719A (zh) | 2018-08-21 | 2018-08-21 | 一种基于qt的c/s架构消息路由方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109150719A (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101068243A (zh) * | 2007-04-12 | 2007-11-07 | 北京邮电大学 | 处理网关层与业务层的消息交互系统以及发送、接收方法 |
CN102215243A (zh) * | 2010-04-12 | 2011-10-12 | 华为技术有限公司 | 事件同步的方法、系统、客户端和服务端 |
CN105357273A (zh) * | 2015-09-30 | 2016-02-24 | 山东乾云启创信息科技股份有限公司 | 异步通信模式下socket通信与进程管理通用平台及方法 |
US20160226979A1 (en) * | 2015-01-30 | 2016-08-04 | Calgary Scientific Inc. | Generalized proxy architecture to provide remote access to an application framework |
CN107329842A (zh) * | 2017-06-29 | 2017-11-07 | 福建新和兴信息技术有限公司 | 基于Qt信号槽机制的获取数据的方法及终端 |
-
2018
- 2018-08-21 CN CN201810955064.5A patent/CN109150719A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101068243A (zh) * | 2007-04-12 | 2007-11-07 | 北京邮电大学 | 处理网关层与业务层的消息交互系统以及发送、接收方法 |
CN102215243A (zh) * | 2010-04-12 | 2011-10-12 | 华为技术有限公司 | 事件同步的方法、系统、客户端和服务端 |
US20160226979A1 (en) * | 2015-01-30 | 2016-08-04 | Calgary Scientific Inc. | Generalized proxy architecture to provide remote access to an application framework |
CN105357273A (zh) * | 2015-09-30 | 2016-02-24 | 山东乾云启创信息科技股份有限公司 | 异步通信模式下socket通信与进程管理通用平台及方法 |
CN107329842A (zh) * | 2017-06-29 | 2017-11-07 | 福建新和兴信息技术有限公司 | 基于Qt信号槽机制的获取数据的方法及终端 |
Non-Patent Citations (1)
Title |
---|
熊董等: "基于QT Quick的消息分发模型研究", 《舰船电子工程》 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9501570B2 (en) | Dynamic routing system | |
EP2258082B1 (de) | Verfahren zur sicheren dynamischen bandbreitenallokation in tt-ethernet | |
CN104767714B (zh) | 一种用户标识与用户资源信息的关联方法、终端及系统 | |
CN103326901B (zh) | 一种电力系统宽带网络性能测试方法及系统 | |
CN106211056A (zh) | 一种行程信息的共享方法和装置 | |
CN104079665B (zh) | 终端间地理位置共享方法、应用服务器及其终端 | |
CN110109766A (zh) | 数据请求方法、装置、系统、数据转发装置及存储介质 | |
CN109995748A (zh) | 一种验证码处理方法、设备及系统 | |
CN110011893B (zh) | 具有电子航道图远程在线自动升级功能的ais装置及方法 | |
CN115314844A (zh) | 基于5g网络通信的铁路智能精准寻址系统和实现方法 | |
CN107529101A (zh) | 移动终端、无源光网络信息收集方法及装置 | |
CN106878260B (zh) | 单点登录实现方法及装置 | |
CN109587351A (zh) | 一种呼叫测试方法、装置、设备及存储介质 | |
CN109150719A (zh) | 一种基于qt的c/s架构消息路由方法及装置 | |
US20080267145A1 (en) | Methods and Apparatus for Managing Wireless Networks Using Geographical-Level and Site-Level Visualization | |
CN109495841A (zh) | 共享汽车、移动终端实时位置共享方法 | |
WO2010145598A1 (zh) | 下行优先级调度的配置方法、调度方法及装置 | |
CN109347914A (zh) | 一种基于Python Flask及装饰器的处理浏览器请求的方法及装置 | |
US10250477B2 (en) | Method and controller for announcing bandwidth of cluster system | |
CN106331027A (zh) | 信息推送方法、推送装置及系统 | |
CN106357478A (zh) | 一种服务器集群监控方法及系统 | |
CN107528928A (zh) | 一种专线用户上线管理的方法及装置 | |
US9483942B2 (en) | Transportation location and alert application for mobile device | |
CN105009659B (zh) | 用于在无线局域网上设置缺离期的方法、装置和系统 | |
CN103916719A (zh) | 操作管理维护消息优先发送方法、装置及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190104 |
|
RJ01 | Rejection of invention patent application after publication |