[发明专利]一种基于C++实现控制反转的方法及服务端在审
| 申请号: | 201910703365.3 | 申请日: | 2019-07-31 |
| 公开(公告)号: | CN110471651A | 公开(公告)日: | 2019-11-19 |
| 发明(设计)人: | 黄凯;张翔;谭梦迪;华龙宇;徐鑫;刘爱娣;张巍 | 申请(专利权)人: | 北京速通科技有限公司 |
| 主分类号: | G06F8/30 | 分类号: | G06F8/30;G06F8/41 |
| 代理公司: | 11572 北京卓特专利代理事务所(普通合伙) | 代理人: | 陈变花<国际申请>=<国际公布>=<进入 |
| 地址: | 100073 北京市丰台区*** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 服务端 反转 访问请求 动态库 客户端 子模块 计算机技术领域 服务 参数实例化 通讯管理层 工作处理 可扩展性 平台框架 业务逻辑 管理层 实例化 耦合性 加载 可控 主控 封装 申请 编译 发送 返回 灵活 | ||
1.一种基于C++实现控制反转的方法,其特征在于,包括如下步骤:
通过C++将业务逻辑根据不同功能拆分为不同的子模块;
将各个子模块封装为相互独立的动态库;
当接收到客户端发送的访问请求时,依靠C++实现的平台框架使用访问请求参数实例化动态库中的服务,将实例化后的服务返回给客户端,实现依赖注入控制反转。
2.如权利要求1所述的基于C++实现控制反转的方法,其特征在于,将各子模块封装为相互独立的动态库具体包括如下子步骤;
对各个子模块的源代码文件进行预编译;
将各个子模块预编译完成的文件进行编译,生成相应的汇编代码文件;
将汇编代码文件链接成一个可执行命令,并在工程目录下生成动态链接库和静态库。
3.如权利要求1或2所述的基于C++实现控制反转的方法,其特征在于,将各个子模块封装成独立的动态库后,还包括为每个动态库分配唯一的索引,预先设定根据接收到的外部设备访问请求参数能够确定唯一的动态库,即能够查找到对应的唯一的业务。
4.如权利要求3所述的基于C++实现控制反转的方法,其特征在于,依靠C++实现的平台框架使用访问请求参数实例化动态库中的服务,具体为根据访问请求的参数查找对应的动态库,将动态库中的服务实例化。
5.一种服务端,其特征在于,包括主控管理层、通讯管理层和工作处理层;
通讯管理层作为服务端与客户端的通信媒介,负责客户端访问请求的接入/接出;
主控管理层用于管理与之连接的通讯管理层和工作处理层,监控通讯进程和工作进程存活状态;
工作处理层执行如权利要求1-4中任意一项所述的基于C++实现控制反转的方法,将处理结果返回通讯管理层。
6.如权利要求5所述的服务端,其特征在于,主控管理层监控通讯进程和工作进程存活状态,当通讯进程或工作进程中存在意外挂掉的进程时,重新启动该进程。
7.如权利要求5所述的服务端,其特征在于,主控管理层还用于监控服务的启动,当接收到客户端访问请求时,主控管理层负责监控与该访问请求对应的服务的处理时长,并根据该服务的特定服务类型和预设超时阈值,确定超时后的处理方法。
8.如权利要求5所述的服务端,其特征在于,通讯管理层当接收到客户端访问请求时,建立服务端和客户端的通信连接,基于I/O多路复用采用多线程技术对访问请求进行解析,根据访问请求中的业务类型分配给对应职责的进程处理,通过消息队列机制与线程锁保证线程安全,然后通过共享内存传递消息,线程之间并行处理访问请求,并将访问请求转发至工作处理层。
9.如权利要求5所述的服务端,其特征在于,工作处理层中包括有多个独立的工作进程,每一个工作进程用于根据通讯管理层转发的访问请求调用动态库中的对应服务,当工作处理层接收到通讯管理层的访问请求后,根据访问请求中的业务类型调用动态库,通过动态库中对应的服务处理相关业务逻辑,处理完毕后将处理结果回传至通讯管理层。
10.如权利要求5所述的服务端,其特征在于,还包括数据库,所述数据库与工作处理层连接,用于将工作处理层的业务数据进行持久化处理,即将内存中的瞬时业务数据持久化为数据库的持久数据进行长期保存。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京速通科技有限公司,未经北京速通科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910703365.3/1.html,转载请声明来源钻瓜专利网。





