CN117749857A - 客户端和服务端的通信方法、装置及电子设备 - Google Patents
客户端和服务端的通信方法、装置及电子设备 Download PDFInfo
- Publication number
- CN117749857A CN117749857A CN202211124549.2A CN202211124549A CN117749857A CN 117749857 A CN117749857 A CN 117749857A CN 202211124549 A CN202211124549 A CN 202211124549A CN 117749857 A CN117749857 A CN 117749857A
- Authority
- CN
- China
- Prior art keywords
- service
- request
- client
- server
- call
- 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
- 238000000034 method Methods 0.000 title claims abstract description 73
- 230000006854 communication Effects 0.000 title claims abstract description 50
- 238000004891 communication Methods 0.000 title claims abstract description 48
- 230000004044 response Effects 0.000 claims abstract description 80
- 238000004590 computer program Methods 0.000 claims description 6
- 238000013507 mapping Methods 0.000 claims description 5
- 230000008878 coupling Effects 0.000 abstract description 8
- 238000010168 coupling process Methods 0.000 abstract description 8
- 238000005859 coupling reaction Methods 0.000 abstract description 8
- 238000010586 diagram Methods 0.000 description 13
- 239000011230 binding agent Substances 0.000 description 10
- 230000006870 function Effects 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 238000007726 management method Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
Abstract
本申请提供一种客户端和服务端的通信方法、装置、电子设备及存储介质,所述方法包括:客户端通过预先创建的请求组件中的连接服务发送连接请求;服务端通过预先创建的服务组件接收所述连接请求,并向客户端返回连接响应;所述客户端通过所述请求组件中的调用服务向所述服务端发送调用请求;所述服务端根据所述调用请求,在预设的键值表中查找与所述调用请求匹配的业务逻辑接口,并调用所述业务逻辑接口,以执行所述调用请求,并返回调用响应。可以实现将连接请求以及调用请求均封装至客户端中,通过客户端实现统一管理连接服务,服务端的业务管理可以独立成库,解除接口与业务之间的强耦合关系。
Description
技术领域
本申请涉及进程间通信优化领域,具体而言,涉及一种客户端和服务端的通信方法、装置、电子设备及存储介质。
背景技术
在安卓(Android)操作系统中,通常基于Binder通信机制实现进程间通讯,以用来处理事件或者请求的跨进程传递需求。
现有技术中,使用安卓接口定义语言(Android Interface DefinitionLanguage,简称AIDL)对Binder机制进行优化封装,可以在编译时自动生成代码,使用AIDL定义客户端和服务端的通信接口,在编译代码时可以按定义的接口生成相应的文件。
但是,AIDL语言存在可读性低以及接口强耦合问题,会导致在修改AIDL接口的同时影响服务端和客户端的接口实现,且接口与业务强相关,需要对不同的业务创建不同的文件,在业务增多时,可扩展性差。
发明内容
本申请的目的在于,针对上述现有技术中的不足,提供一种客户端和服务端的通信方法、装置、电子设备及存储介质,提高业务的可扩展性。
为实现上述目的,本申请实施例采用的技术方案如下:
第一方面,本申请实施例提供了一种客户端和服务端的通信方法,应用于跨进程框架系统,所述跨进程框架系统中包括:客户端以及服务端;所述方法包括:
客户端通过预先创建的请求组件中的连接服务发送连接请求;
服务端通过预先创建的服务组件接收所述连接请求,并向客户端返回连接响应;
所述客户端通过所述请求组件中的调用服务向所述服务端发送调用请求,所述调用请求包括:业务信息;
所述服务端根据所述调用请求,在预设的键值表中查找与所述调用请求匹配的业务逻辑接口,并调用所述业务逻辑接口,以执行所述调用请求,并返回调用响应,所述调用响应用于指示所述调用请求是否执行成功。
可选的,所述服务端根据接收到的所述调用请求,在预设的键值表中查找匹配所述调用请求的业务逻辑接口,包括:
所述服务端对,所述调用请求进行解析,得到所述业务信息;
根据所述业务信息,在所述键值表中查找所述业务逻辑接口。
可选的,根据所述业务信息,在所述键值表中查找所述业务逻辑接口,包括:
对所述键值表中的键进行遍历,若当前遍历到的键与所述业务信息匹配,则将当前遍历到的键对应的值作为所述业务逻辑接口。
可选的,客户端通过预先创建的请求组件中的连接服务发送连接请求,包括:
客户端根据业务连接指令生成连接字符串;
所述客户端将所述连接字符串作为所述连接请求的输入参数,并调用所述连接服务,以通过所述连接服务发送所述连接请求。
可选的,所述客户端通过所述请求组件中的调用服务向所述服务端发送调用请求,包括:
所述客户端根据业务调用指令生成调用字符串;
所述客户端将所述调用字符串作为所述调用服务的输入参数,并调用所述调用服务,以通过所述调用服务向所述服务端发送调用请求。
可选的,向客户端返回调用响应,包括:
所述服务端根据调用响应指令生成调用响应字符串;
所述服务端将所述调用响应字符串作为调用响应的输入参数,并向客户端返回调用响应。
可选的,所述服务端根据所述调用请求,在预设的键值表中查找与所述调用请求匹配的业务逻辑接口之前,还包括:
所述服务端获取多个待调用的业务需求信息;
根据所述多个待调用的业务需求信息在所述服务端注册所述多个待调用业务的逻辑接口,得到键值表,所述键值表用于指示各待调用业务的业务信息以及逻辑接口的映射关系。
第二方面,本申请实施例还提供了一种客户端和服务端的通信装置,所述装置包括:
发送模块,用于客户端通过预先创建的请求组件中的连接服务发送连接请求;
返回模块,用于服务端通过预先创建的服务组件接收所述连接请求,并向客户端返回连接响应;
发送模块,用于所述客户端通过所述请求组件中的调用服务向所述服务端发送调用请求,所述调用请求包括:业务信息;
查找模块,用于所述服务端根据所述调用请求,在预设的键值表中查找与所述调用请求匹配的业务逻辑接口,并调用所述业务逻辑接口,以执行所述调用请求,并返回调用响应,所述调用响应用于指示所述调用请求是否执行成功。
可选的,所述查找模块具体用于
所述服务端对,所述调用请求进行解析,得到所述业务信息;
根据所述业务信息,在所述键值表中查找所述业务逻辑接口。
可选的,所述查找模块具体用于:
对所述键值表中的键进行遍历,若当前遍历到的键与所述业务信息匹配,则将当前遍历到的键对应的值作为所述业务逻辑接口。
可选的,所述发送模块具体用于:
客户端根据业务连接指令生成连接字符串;
所述客户端将所述连接字符串作为所述连接请求的输入参数,并调用所述连接服务,以通过所述连接服务发送所述连接请求。
可选的,所述发送模块具体用于:
所述客户端根据业务调用指令生成调用字符串;
所述客户端将所述调用字符串作为所述调用服务的输入参数,并调用所述调用服务,以通过所述调用服务向所述服务端发送调用请求。
可选的,所述返回模块具体用于:
所述服务端根据调用响应指令生成调用响应字符串;
所述服务端将所述调用响应字符串作为调用响应的输入参数,并向客户端返回调用响应。
可选的,所述查找模块具体用于:
所述服务端获取多个待调用的业务需求信息;
根据所述多个待调用的业务需求信息在所述服务端注册所述多个待调用业务的逻辑接口,得到键值表,所述键值表用于指示各待调用业务的业务信息以及逻辑接口的映射关系。
第三方面,本申请实施例还提供了一种电子设备,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的程序指令,当应用程序运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述程序指令,以执行上述第一方面所述的客户端和服务端的通信方法的步骤。
第四方面,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被读取并执行上述第一方面所述的客户端和服务端的通信方法的步骤。
本申请的有益效果是:
本申请提供的一种客户端和服务端的通信方法、装置、电子设备及存储介质,客户端通过预先创建的请求组件中的连接服务发送连接请求;服务端通过预先创建的服务组件接收所述连接请求,并向客户端返回连接响应;所述客户端通过所述请求组件中的调用服务向所述服务端发送调用请求;所述服务端根据所述调用请求,在预设的键值表中查找与所述调用请求匹配的业务逻辑接口,并调用所述业务逻辑接口,以执行所述调用请求,并返回调用响应。通过客户端通过预先创建的请求组件发送连接请求以及调用请求,可以实现将连接请求以及调用请求均封装至客户端中,通过客户端实现统一管理连接服务;服务端通过在预设的键值表中查找与调用请求匹配的业务逻辑接口,从而调用该业务逻辑接口以执行调用请求,可以实现服务端的业务管理可以独立成库,不需要对于不同的业务创建不同的文件,可以解除接口与业务之间的强耦合关系。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的一种示例性场景示意图;
图2为本申请实施例提供的一种BinderBridge架构图;
图3为本申请实施例提供的一种客户端和服务端的通信方法的流程示意图;
图4为本申请实施例提供的一种客户端和服务端的通信方法的泳道图;
图5为本申请实施例提供的一种客户端和服务端的通信方法的装置示意图;
图6为本申请实施例提供的一种电子设备的结构框图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,应当理解,本申请中附图仅起到说明和描述的目的,并不用于限定本申请的保护范围。另外,应当理解,示意性的附图并未按实物比例绘制。本申请中使用的流程图示出了根据本申请的一些实施例实现的操作。应该理解,流程图的操作可以不按顺序实现,没有逻辑的上下文关系的步骤可以反转顺序或者同时实施。此外,本领域技术人员在本申请内容的指引下,可以向流程图添加一个或多个其他操作,也可以从流程图中移除一个或多个操作。
另外,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,本申请实施例中将会用到术语“包括”,用于指出其后所声明的特征的存在,但并不排除增加其它的特征。
基于Client-server的通信方式广泛应用于从互联网和数据库访问到嵌入式手持设备内部通信等各个领域,智能手机平台特别是安卓系统中,为了向应用开发者提供丰富多样的功能,例如媒体播放、音视频捕获等,应用程序只需作为client与这些服务建立连接便可以使用这些服务。
现有技术中,Binder的应用程序接口(Application Programming interface,简称API)有强烈的C语言风格,理解与使用推广有困难,谷歌使用安卓接口定义语言AIDL在编译时自动生成代码,使得进程间进行通信,但是AIDL语言的可读性低,需要学习AIDL的语言规范,还需要理解AIDL生成的各个类的关系,以至于学习成本高;另外,使用AIDL方法进行进程通信,需要对不同的业务创建不同的AIDL文件,每一个AIDL文件对应一个Java接口,每一个Java接口对应一个服务,因此,在修改AIDL接口的同时会影响客户端和服务端之间的接口实现,则,接口与业务强相关,使得接口的可扩展性差。
本申请考虑到上述问题,提供一种客户端和服务端的通信方法,通过对发送请求和接收请求进行重新封装,对服务端的业务接口进行扩展,在降低语言理解难度,增强可读性的同时可以实现接口的可扩展性。图1为本申请实施例提供的一种示例性场景示意图,如图1所示,该方法应用于跨进程框架系统中,该跨进程框架系统中可以包括客户端以及服务端。其中客户端可以指的是在跨进程通信过程中,发起请求的一端,服务端可以指的是在跨进程通信过程中接收处理请求的一端,例如对于一个音乐APP,有播放或者暂停等操作界面,也有后台音乐播放功能,当音乐APP界面退出后,音乐后台还可以继续控制音乐播放或者暂停,则,音乐界面在一个进程中,播放音乐的服务在另一个后台进程中,音乐界面可以向后台服务发送播放或者暂停的请求指令进行跨进程的通信,此时,音乐界面可以为该跨进程框架系统中的客户端,音乐后台服务可以为该跨进程框架系统中的服务端。对于不同的其他软件,软件的界面与该软件的系统服务之间的通信都属于跨进程通信,软件界面可以为客户端,软件的系统服务可以为服务端。客户端和服务端可以利用本申请实施例的方法进行通信。可选的,上述客户端和服务端所组成的上述跨进程通信系统可以是在同一电子设备中,该电子设备例如是手机、平板电脑等终端设备。
图2为本申请实施例提供的一种BinderBridge架构图,如图2所示,图中的底部是系统Binder基础,该基础为底层基础;BinderBridge是本申请中的客户端和服务端所在的系统,在该系统中存在客户端(BinderClient)以及服务端(Binderserver),其中,客户端用于向服务端发送请求,对连接请求(serviceConnection)和调用请求(BinderRequest)进行封装,实现连接服务和发送调用请求的能力;服务端用于接收请求以及处理业务;业务层是开发人员实际的业务处理层,也包括客户端以及服务端,业务层的客户端请求业务调用时,调用BinderBridge中的BinderClient连接服务以及发送调用请求;业务层的服务端用于注册具体的业务逻辑到服务端创建的Bindserver,bindserver则根据接收到的调用请求中的业务信息(path)进行分发,匹配到调用请求中的业务信息对应的业务逻辑接口,通过该业务逻辑接口处理具体的业务逻辑。
图3为本申请实施例提供的一种客户端和服务端的通信方法的流程示意图,该方法的执行主体如前述的客户端和服务端。如图3所示,该方法包括:
S101、客户端通过预先创建的请求组件中的连接服务发送连接请求。
可选的,客户端可以预先创建一个请求组件(Binder client),通过该预先创建的请求组件中的连接服务向服务端发送连接请求,其中,该连接请求可以包括需要连接的服务端的访问接入点或者地址,则,客户端可以向需要连接的服务端发送包含该服务端的地址等信息作为连接请求,该连接请求用于将客户端与所需要的服务端进行连接,从而可以进行正常的通信。
可选的,Binder使用Client-Server的通信方式,一个进程作为服务提供例如视频或者音频解码,视频捕获,地址本查询,网络连接等服务;多个进程作为client可以向服务发送连接请求以及服务请求,获取所需要的服务。
S102、服务端通过预先创建的服务组件接收连接请求,并向客户端返回连接响应。
可选的,服务端可以预先创建一个服务组件(Binder server),该服务组件可以提供多种服务,例如视频或者音频解码、视频捕获、网络连接等多种服务。
可选的,当该服务组件接收到客户端发送的连接请求(ServiceConnection)后,确定与发送连接请求的客户端可以进行连接时,则,向发送连接请求的客户端返回连接响应(BinderResponse),其中,该连接响应例如可以为连接成功等响应信息;若与发送连接请求的客户端无法连接时,此时,可能存在代码错误等问题,则不需要返回连接响应。
S103、客户端通过请求组件中的调用服务向服务端发送调用请求。
可选的,该请求组件指示的是上述S101中预先创建的请求组件,在创建该请求组件时,将连接请求与调用请求均封装至该请求组件中,通过该请求组件进行统一管理服务连接。
可选的,当客户端接收到服务端的服务组件发送的连接响应后,此时,说明客户端与服务端已经连接成功,可以进行通信,则客户端可以通过请求组件中的调用服务向服务端发送调用请求,其中,该调用请求可以包括业务信息,用于向服务端调用所需要的业务服务,该业务信息可以指示的是客户端所需要调用的具体的业务名称等,例如若客户端需要调用播放视频的请求时,则可以直接向服务端发送播放视频的业务调用请求。
S104、服务端根据调用请求,在预设的键值表中查找与调用请求匹配的业务逻辑接口,并调用业务逻辑接口以执行调用请求,并返回调用响应。
其中,该调用响应(BinderResponse)用于指示调用请求(BinderRequest)是否执行成功,若执行成功则返回执行成功的调用响应,若执行不成功,则返回执行失败的调用响应,同时,若在预设的键值表中未查找到与调用请求匹配的业务逻辑接口,也可以返回失败的调用响应。
可选的,服务端可以预先设置一个键值表,该键值表可以指示多种调用请求的业务以及请求的业务对应的业务逻辑接口,其中,键可以指示的是不同的业务,值可以指示的是不同业务对应的业务逻辑接口。
本实施例中,客户端通过预先创建的请求组件发送连接请求以及调用请求,可以实现将连接请求以及调用请求均封装至客户端中,通过客户端实现统一管理连接服务;服务端通过在预设的键值表中查找与调用请求匹配的业务逻辑接口,从而调用该业务逻辑接口以执行调用请求,可以实现在服务端中的业务独立成库,避免在修改接口的同时影响服务端和客户端的接口实现,同时,不需要对于不同的业务创建不同的文件,降低接口与业务之间的相关性,从而可以解除接口与业务之间的强耦合关系。
可选的,上述步骤S104中服务端根据调用请求,在预设的键值表中查找与调用请求匹配的业务逻辑接口,可以包括:
可选的,服务端对调用请求进行解析,得到业务信息,根据该业务信息,在键值表中查找业务逻辑接口。
其中,键值表可以使用map<string,onrequesthandler>,其中string可以指示的是业务信息,onrequesthandler可以指示的是业务信息对应的业务逻辑接口,该键值表中可以包括多个业务信息以及多个业务信息对应的业务逻辑接口。
可选的,调用请求中可以包括多个信息,例如业务信息,请求参数信息,其中,该请求参数信息可以指示的是客户端的地址信息、客户端的标识信息等,客户端将这些信息可以进行编译得到编译后的调用请求,服务端接收到调用请求后,对该调用请求进行解析,获取调用请求中的业务信息,也可以是具体的业务名称,根据解析得到的具体地业务名称在键值表中查找业务逻辑接口。
可选的,上述根据该业务信息,在键值表中查找业务逻辑接口,可以包括:
可选的,对键值表中的键进行遍历,若当前遍历到的键与业务信息匹配,则将当前遍历到的键对应的值作为业务逻辑接口。
可选的,如上述说明的,预先设置的键可以指示的是不同的业务信息,值可以指示的是不同业务信息对应的业务逻辑接口,则服务端中的服务组件根据上述解析得到的业务信息,在键值表中进行一一遍历,具体地,遍历查找键值表中的键,通过对比键中的业务信息,若当前遍历到的键的业务信息与解析到的业务信息匹配,则,可以获取到当前遍历到的键对应的值作为业务逻辑接口,服务端可以调用该业务逻辑接口以执行该业务逻辑,并返回调用响应。
本实施例中,通过服务端可以直接根据所需的调用请求在预设的键值表中查找所需要的业务信息得到对应的业务逻辑接口,以执行该业务逻辑,在服务端中的业务独立成库,避免在修改接口的同时影响服务端和客户端的接口实现,同时,不需要对于不同的业务创建不同的文件,降低接口与业务之间的相关性,从而可以解除接口与业务之间的强耦合关系。
可选的,上述步骤S101中客户端通过预先创建的请求组件中的连接服务发送连接请求,可以包括:
可选的,客户端根据业务连接指令生成连接字符串,将生成的字符串作为连接请求的输入参数,并调用连接服务,通过该连接服务发送连接请求。
示例性的,客户端可以根据连接指令生成lianjie的字符串,将生成的lianjie字符串作为连接请求的输入参数,另外,连接请求中的参数还可以包括需要连接的服务端的地址等信息,可以根据这些信息生成相应的字符串,并将生成的字符串作为连接请求的输入参数,最终得到连接请求,并调用连接服务,通过该连接服务发送连接请求。
可选的,上述步骤S103中客户端通过请求组件中的调用服务向服务端发送调用请求,可以包括:
可选的,客户端根据业务调用指令生成调用字符串。
其中,该业务调用可以指示的是客户端所需要调用的具体的业务服务,对于不同的业务可以生成该业务对应的字符串,可以使用路径的格式(path)来表示不同的业务服务,例如“/module/function”,其中,module可以指示的是业务所述的模块,function可以指示的是具体的业务,示例性的,若需要播放视频的业务调用服务时,则可以根据该播放视频的业务调用生成“/bofang/bofangshipin”的字符串,若需要暂停音乐的业务调用,则可以生成“/zanting/zantingyinyue”的字符串,其中该字符串也可以使用json格式的字符串来表示。
可选的,对于现有的AIDL语言,则是通过整数值(int code)对不同的业务调用进行区分,例如播放视频使用数值“1”来表示,暂停音乐使用数据“2”进行表示,则对于AIDL语言使用整数值进行业务区分,使得表示的调用请求不直观。
本实施例中,通过路径格式的字符串对调用请求进行约定,可以使得对业务的区分更明显,可读性更高。
可选的,上述S104中向客户端返回调用响应,可以包括:
可选的,服务端可以根据调用响应指令生成调用响应字符串,将生成的调用响应字符串作为调用响应的输入参数,并向客户端返回调用响应。
其中,该调用响应字符可以和调用请求的字符串格式一样,使用json字符串,若调用响应为成功调用时,则可以根据成功调用响应的指令生成该成功调用响应的json格式的字符串,将生成成功调用的json字符串作为调用响应的输入参数,并将成功调用的调用响应返回给客户端;若调用响应为失败调用时,则可以根据失败调用响应的指令生成该失败调用响应的json格式的字符串,将生成失败调用的json字符串作为调用响应的输入参数,并将失败调用的调用响应返回给客户端。
本实施例中,通过将服务端的调用响应与客户端的调用请求均使用相同格式的字符串进行设置,可以使得请求与响应之间实现更好的扩展性以及兼容性。
可选的,上述步骤S104中服务端根据调用请求,在预设的键值表中查找与调用请求匹配的业务逻辑接口,并调用业务逻辑接口,可以包括:
可选的,服务端获取多个待调用的业务需求信息。
可选的,服务端可以预先获取多个待调用的业务需要信息,其中,该业务需求信息可以包括具体的业务名称,例如播放音乐、播放视频、暂停音乐、暂停视频、快进音乐、快进视频、快退音乐、快退视频等。
可选的,根据多个待调用的业务需求信息在服务端注册多个待调用业务的逻辑接口,得到键值表,其中,该键值表用于指示各待调用业务的业务信息以及逻辑接口的映射关系。
可选的,当服务端获取到多个待调用的业务需求信息之后,可以在服务端预先创建的服务组件中注册多个待调用业务的逻辑接口,其中,可以将每一个待调用的业务名称直接作为键值表中的键,也可以使用每一个待调用业务名称的标识作为键值表中的键,例如播放音乐该具体业务的标识可以为bfyy,播放视频该具体业务的标识可以为bfsp等;将每一个待调用的业务的业务逻辑接口作为键值表中的值,每一个待调用的业务与该待调用业务的业务逻辑接口一一对应,根据键值表中的键可以找到该键对应的值,则可以根据键值表中的业务需求信息查找到该业务需求信息的业务逻辑接口,调用该业务逻辑接口并执行业务逻辑,得到调用请求的调用响应。
可选的,若某一调用请求中的业务信息在预设的键值表中未注册过,则可以在获取到该调用请求中的业务信息时,对该业务信息进行注册。
可选的,本申请实施例中在注册多个待调用业务的逻辑接口还可以在服务端返回连接响应之前进行注册,具体的注册方法同前述的注册方法一样,此处不作赘述。
本实施例中,通过向键值表中添加新的业务逻辑接口,可以实现动态的管理服务端的键值表,避免对不同的业务创建不同的业务,实现服务端的业务的可扩展性。
图4为本申请实施例提供的一种客户端和服务端的通信方法的泳道图,如图4所示,图中的客户端指示的是上述中的跨进程框架系统中的客户端,服务端指示的是上述中的跨进程框架系统中的服务端,中间的binder为底层的调用。
客户端创建请求组件(Binderclient),通过该请求组件中的连接服务中的连接方法连接服务端的服务组件(service),服务端在返回连接响应之前可以先注册业务逻辑接口,其中,注册业务逻辑接口也可以预先在服务端进行注册,客户端接收到连接响应时,说明客户端与服务端连接成功,则客户端可以向服务端发起调用请求,服务端中的服务组件接收到该调用请求后,会触发处理调用请求的方法(ontransact),则该方法为上述具体实施例中的根据该调用请求中的业务信息,在预设的键值表中查找与调用请求匹配的业务逻辑接口(onrequesthandler),若匹配成功,则调用匹配成功的业务逻辑接口执行该业务逻辑,若执行成功,则返回调用成功的调用响应;若执行失败,则返回调用失败的调用响应,若未匹配成功,则返回调用失败的调用响应给客户端,客户单接收服务端返回的调用响应。
另外,值得说明的是,若客户端与服务端在连接成功之后,客户端可以在连接成功之后可以发起多次调用请求,此时,客户端发起的调用请求时不需要再向服务端发起连接请求,也就是说,客户端与服务端连接一次则可,之后可以发起多次调用请求。
图5为本申请实施例提供的一种客户端和服务端的通信方法的装置示意图,如图5所示,该装置包括:
发送模块201,用于客户端通过预先创建的请求组件中的连接服务发送连接请求;
返回模块202,用于服务端通过预先创建的服务组件接收所述连接请求,并向客户端返回连接响应;
发送模块201,用于所述客户端通过所述请求组件中的调用服务向所述服务端发送调用请求,所述调用请求包括:业务信息;
查找模块203,用于所述服务端根据所述调用请求,在预设的键值表中查找与所述调用请求匹配的业务逻辑接口,并调用所述业务逻辑接口,以执行所述调用请求,并返回调用响应,所述调用响应用于指示所述调用请求是否执行成功。
可选的,查找模块203具体用于:
所述服务端对,所述调用请求进行解析,得到所述业务信息;
根据所述业务信息,在所述键值表中查找所述业务逻辑接口。
可选的,查找模块203具体用于:
对所述键值表中的键进行遍历,若当前遍历到的键与所述业务信息匹配,则将当前遍历到的键对应的值作为所述业务逻辑接口。
可选的,发送模块201具体用于:
客户端根据业务连接指令生成连接字符串;
所述客户端将所述连接字符串作为所述连接请求的输入参数,并调用所述连接服务,以通过所述连接服务发送所述连接请求。
可选的,发送模块201具体用于:
所述客户端根据业务调用指令生成调用字符串;
所述客户端将所述调用字符串作为所述调用服务的输入参数,并调用所述调用服务,以通过所述调用服务向所述服务端发送调用请求。
可选的,返回模块202具体用于:
所述服务端根据调用响应指令生成调用响应字符串;
所述服务端将所述调用响应字符串作为调用响应的输入参数,并向客户端返回调用响应。
可选的,查找模块203具体用于:
所述服务端获取多个待调用的业务需求信息;
根据所述多个待调用的业务需求信息在所述服务端注册所述多个待调用业务的逻辑接口,得到键值表,所述键值表用于指示各待调用业务的业务信息以及逻辑接口的映射关系。
图6为本申请实施例提供的一种电子设备300的结构框图,如图6所示,该电子设备可包括:处理器301、存储器302。
可选的,还可以包括总线303,其中,所述存储器302用于存储有所述处理器301可执行的机器可读指令,当电子设备300运行时,所述处理器301与所述存储器302存储之间通过总线303通信,所述机器可读指令被所述处理器301执行时执行上述方法实施例中客户端和服务端的通信方法的步骤。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述客户端和服务端的通信方法实施例中的方法步骤。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考方法实施例中的对应过程,本申请中不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。
Claims (10)
1.一种客户端和服务端的通信方法,其特征在于,应用于跨进程框架系统,所述跨进程框架系统中包括:客户端以及服务端;所述方法包括:
客户端通过预先创建的请求组件中的连接服务发送连接请求;
服务端通过预先创建的服务组件接收所述连接请求,并向客户端返回连接响应;
所述客户端通过所述请求组件中的调用服务向所述服务端发送调用请求,所述调用请求包括:业务信息;
所述服务端根据所述调用请求,在预设的键值表中查找与所述调用请求匹配的业务逻辑接口,并调用所述业务逻辑接口,以执行所述调用请求,并返回调用响应,所述调用响应用于指示所述调用请求是否执行成功。
2.根据权利要求1所述的客户端和服务端的通信方法,其特征在于,所述服务端根据接收到的所述调用请求,在预设的键值表中查找匹配所述调用请求的业务逻辑接口,包括:
所述服务端对,所述调用请求进行解析,得到所述业务信息;
根据所述业务信息,在所述键值表中查找所述业务逻辑接口。
3.根据权利要求2所述的客户端和服务端的通信方法,其特征在于,所述根据所述业务信息,在所述键值表中查找所述业务逻辑接口,包括:
对所述键值表中的键进行遍历,若当前遍历到的键与所述业务信息匹配,则将当前遍历到的键对应的值作为所述业务逻辑接口。
4.根据权利要求1所述的客户端和服务端的通信方法,其特征在于,所述客户端通过预先创建的请求组件中的连接服务发送连接请求,包括:
客户端根据业务连接指令生成连接字符串;
所述客户端将所述连接字符串作为所述连接请求的输入参数,并调用所述连接服务,以通过所述连接服务发送所述连接请求。
5.根据权利要求1所述的客户端和服务端的通信方法,其特征在于,所述客户端通过所述请求组件中的调用服务向所述服务端发送调用请求,包括:
所述客户端根据业务调用指令生成调用字符串;
所述客户端将所述调用字符串作为所述调用服务的输入参数,并调用所述调用服务,以通过所述调用服务向所述服务端发送调用请求。
6.根据权利要求1所述的客户端和服务端的通信方法,其特征在于,向客户端返回调用响应,包括:
所述服务端根据调用响应指令生成调用响应字符串;
所述服务端将所述调用响应字符串作为调用响应的输入参数,并向客户端返回调用响应。
7.根据权利要求1所述的客户端和服务端的通信方法,其特征在于,所述服务端根据所述调用请求,在预设的键值表中查找与所述调用请求匹配的业务逻辑接口之前,还包括:
所述服务端获取多个待调用的业务需求信息;
根据所述多个待调用的业务需求信息在所述服务端注册多个待调用业务的逻辑接口,得到键值表,所述键值表用于指示各待调用业务的业务信息以及逻辑接口的映射关系。
8.一种客户端和服务端的通信装置,其特征在于,包括:
发送模块,用于客户端通过预先创建的请求组件中的连接服务发送连接请求;
返回模块,用于服务端通过预先创建的服务组件接收所述连接请求,并向客户端返回连接响应;
发送模块,用于所述客户端通过所述请求组件中的调用服务向所述服务端发送调用请求,所述调用请求包括:业务信息;
查找模块,用于所述服务端根据所述调用请求,在预设的键值表中查找与所述调用请求匹配的业务逻辑接口,并调用所述业务逻辑接口,以执行所述调用请求,并返回调用响应,所述调用响应用于指示所述调用请求是否执行成功。
9.一种电子设备,其特征在于,包括存储器和处理器,所述存储器存储有所述处理器可执行的计算机程序,所述处理器执行所述计算机程序时实现上述权利要求1-7任一项所述的客户端和服务端的通信方法的步骤。
10.一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如权利要求1-7任一项所述的客户端和服务端的通信方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211124549.2A CN117749857A (zh) | 2022-09-15 | 2022-09-15 | 客户端和服务端的通信方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211124549.2A CN117749857A (zh) | 2022-09-15 | 2022-09-15 | 客户端和服务端的通信方法、装置及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117749857A true CN117749857A (zh) | 2024-03-22 |
Family
ID=90276303
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211124549.2A Pending CN117749857A (zh) | 2022-09-15 | 2022-09-15 | 客户端和服务端的通信方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117749857A (zh) |
-
2022
- 2022-09-15 CN CN202211124549.2A patent/CN117749857A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7734583B2 (en) | Transparent virtual machine for mobile applications | |
US8332520B2 (en) | Web server for managing session and method thereof | |
US7920852B2 (en) | Compression of data transmitted between server and mobile device | |
CN112596931B (zh) | 一种跨进程通信方法、装置、电子设备及存储介质 | |
CN107977260B (zh) | 任务提交方法及装置 | |
CN110019444B (zh) | 一种操作请求处理方法、装置、设备及系统 | |
CN107368339B (zh) | 容器入口程序运行方法、系统、设备及存储介质 | |
CN112688915A (zh) | 跨协议通信方法、装置及服务器 | |
CN113660307B (zh) | 一种算法综合集成服务系统 | |
CN109343970B (zh) | 基于应用程序的操作方法、装置、电子设备及计算机介质 | |
CN110633162B (zh) | 远程调用实现方法、装置、计算机设备及存储介质 | |
US8280950B2 (en) | Automatic client-server code generator | |
CN117749857A (zh) | 客户端和服务端的通信方法、装置及电子设备 | |
CN114265638B (zh) | 基于插件兼容的通信方法、装置、设备及存储介质 | |
CN110262912B (zh) | 一种过程调用gRPC的调用方法及装置 | |
US20050172034A1 (en) | Method and system for managing programs for web service system | |
CN113626001A (zh) | 一种基于脚本的api动态编排方法及装置 | |
CN113992644A (zh) | 一种基于无服务技术的物联网关系统及其数据处理方法 | |
CN113535239B (zh) | 底层驱动转发方法及基于uefi实现的多核系统 | |
CN106570143B (zh) | 一种发送响应对象的方法和装置 | |
WO2023230797A1 (zh) | 一种跨系统测试方法及装置 | |
CN110191141B (zh) | 服务调用信息处理方法、装置及计算机系统 | |
CN114579212A (zh) | 一种系统日志记录方法、装置、电子设备与存储介质 | |
CN112486591A (zh) | 一种电子设备配置方法和电子设备 | |
CN115982257A (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 |