发明内容
本申请提出一种基于SDK组件的业务执行方法,应用于客户端,该方法包括:
当调用客户端内置的SDK组件执行业务时,接收所述SDK组件发出的业务请求;
基于建立的长连接将所述业务请求发送至与所述客户端对应的业务服务端,以由所述业务服务端将所述业务请求转发至对应的SDK服务端;
基于所述长连接接收所述SDK服务端返回的与所述业务请求对应的业务执行结果,并将该业务执行结果返回给所述SDK组件。
可选的,所述长连接为所述客户端与所述业务服务端之间保持的长连接。
可选的,所述业务包括支付业务;所述SDK组件包括电商APP中内置的SDK支付组件。
本申请还提出一种基于SDK组件的业务执行方法,所述方法包括:
基于建立的长连接接收客户端发送的业务请求;其中,所述业务请求由所述客户端在调用内置的SDK组件执行业务时,由所述SDK组件发出;
将所述业务请求转发至对应的SDK服务端;
接收所述SDK服务端返回的与所述业务请求对应的业务执行结果,并将所述业务执行结果通过所述长连接返回给所述客户端。
可选的,所述长连接为所述业务服务端与所述客户端之间保持的长连接;
所述将所述业务请求转发至对应的SDK服务端包括:
向所述SDK服务端发送远程调用消息,所述远程调用消息携带所述业务请求,以触发所述SDK服务端执行与所述业务请求对应的业务。
本申请还提出一种基于SDK组件的业务执行装置,其特征在于,该装置包括:
第一接收模块,用于在调用客户端内置的SDK组件执行业务时,接收所述SDK组件发出的业务请求;
发送模块,用于基于建立的长连接将所述业务请求发送至与所述客户端对应的业务服务端,以由所述业务服务端将所述业务请求转发至对应的SDK服务端;
第二接收模块,用于基于所述长连接接收所述SDK服务端返回的与所述业务请求对应的业务执行结果,并将该业务执行结果返回给所述SDK组件。
可选的,所述长连接为所述客户端与所述业务服务端之间保持的长连接。
可选的,所述业务包括支付业务;所述SDK组件包括电商APP中内置的SDK支付组件。
本申请还提出一种基于SDK组件的业务执行装置,所述装置包括:
第三接收模块,用于基于建立的长连接接收客户端发送的业务请求;其中,所述业务请求由所述客户端在调用内置的SDK组件执行业务时,由所述SDK组件发出;
转发模块,用于将所述业务请求转发至对应的SDK服务端;
返回模块,用于接收所述SDK服务端返回的与所述业务请求对应的业务执行结果,将所述业务执行结果通过所述长连接返回给所述客户端。
可选的,所述长连接为所述业务服务端与所述客户端之间保持的长连接;
所述转发模块具体用于:
向所述业务服务端发送远程调用消息,所述远程调用消息携带所述业务请求,以触发所述SDK服务端执行与所述业务请求对应的业务。
本申请中,在客户端调用内置的SDK组件执行业务时,可以将该SDK组件发出的业务请求,基于与业务服务端之间保持的长连接发送至业务服务端,再由业务服务端将该业务请求转发至对应的SDK服务端来完成业务。由于SDK组件在执行业务时,不再需要实时的与SDK服务端建立短连接,而是复用客户端与业务服务端之间已有的长连接与SDK服务端进行交互,因此可以提升业务执行的速度,降低业务响应的时间。
具体实施方式
在相关技术中,APP(Application,应用程序)中通常可以通过内置SDK(Software Development Kit,软件开发工具包)组件,将一些特定的功能封装在该APP中,并通过SDK组件提供的API(Application ProgrammingInterface,应用程序编程接口)接口来直接调用这些功能。
其中,SDK组件,是指一些可以实现特定功能的模块化的软件包,即APP中内置的SDK组件,可以作为“组装”APP的“配件”,开发者可以基于一些现有的“配件”将一些特定的功能直接移植到APP中,从而可以不必再对这些功能进行单独开发,以简化开发过程。
例如,开发人员在开发一些电商的APP时,该APP中内置的SDK组件,通常可以包括支付SDK组件、推送SDK组件、客服SDK组件以及图片标注SDK组件等等,其中,每一类型的组件均对应该APP的一种基础功能。
通过这种方式,虽然某种程度上可以简化APP的开发过程,但APP中内置的SDK组件被调用后,SDK组件通常会主动的与该SDK对应的业务服务端建立短连接,然后基于建立的短连接来完成业务交互,而建立短连接的过程非常耗时,尤其是当用户处在2g网络环境或者是弱网环境下尤为明显,从而可能会导致业务响应不够及时,造成用户体验差的问题。
有鉴于此,本申请提出一种基于内置SDK组件的业务执行方法,在客户端调用内置的SDK组件执行业务时,可以将该SDK组件发出的业务请求,基于与业务服务端之间保持的长连接发送至业务服务端,再由业务服务端将该业务请求转发至对应的SDK服务端来完成业务。由于SDK组件在执行业务时,不再需要实时的与SDK服务端建立短连接,而是复用客户端与业务服务端之间已有的长连接与SDK服务端进行交互,因此可以提升业务执行的速度,降低业务响应的时间。
下面通过具体实施例并结合具体的应用场景对本申请进行描述。
请参考图1,图1是本申请一实施例提供的一种基于SDK组件的业务执行方法,应用于客户端和面向该客户端提供服务端的业务服务端,其中客户端和业务服务端相互配合,执行以下步骤:
步骤101,当调用客户端内置的SDK组件执行业务时,接收所述SDK组件发出的业务请求;
步骤102,基于建立的长连接将所述业务请求发送至与所述客户端对应的业务服务端;
步骤103,业务服务端将所述业务请求转发至对应的SDK服务端;
步骤104,业务服务端接收所述SDK服务端返回的与所述业务请求对应的业务执行结果,将所述业务执行结果通过所述长连接返回给客户端;
步骤105,客户端将所述业务执行结果返回给所述SDK组件。
上述客户端可以包括加载在用户的便携式智能终端上的(比如用户的智能手机)APP应用,该APP应用中内置了SDK组件,该APP可以通过该SDK组件提供的API接口调用该SDK组件,来执行与该SDK对应的业务;例如,该APP应用可以是电商APP,该SDK组件可以是该电商APP中内置的支付组件,用于实现支付功能;比如,该APP可以是淘宝APP,该SDK组件可以是淘宝APP中内置的支付宝SDK组件。
上述业务服务端,为面向上述APP提供服务的服务端;该服务端可以包括服务器、服务器集群或者基于服务器集群构建的云平台。例如,当该APP为淘宝APP时,该APP可以是面向淘宝APP提供服务端的淘宝服务器、淘宝服务器集群或者基于服务器集群构建的淘宝服务平台。
其中,上述APP与上述业务服务端之间通常可以建立并保持长连接,上述APP和上述业务服务端均可以通过该长连接持续向对方发送数据包,当没有数据包发送,即该长连接空闲时,上述APP与上述业务服务端可以互相发送链路检测包,来保持该长连接不断开。
上述SDK服务端,为面向上述APP中内置的SDK组件提供服务的服务端;该服务端也可以包括服务器、服务器集群或者基于服务器集群构建的云平台。例如,当该SDK组件为淘宝APP中内置的支付宝SDK组件时,该业务服务器可以是面向该SDK提供服务的支付宝服务器、支付宝服务器集群或者基于服务器集群构建的支付宝服务平台。
其中,由于SDK组件与上述SDK服务端之间,通常不存在持续发送数据包的需求,因此SDK组件与上述SDK服务端之间通常并不需要维持长连接,而是当SDK组件被APP调用后,与上述SDK服务端建立临时的短连接,然后基于短连接进行业务交互,并在业务执行完毕后,再断开该短连接。
在本例中,上述APP可以实时的检测用户在前台的业务操作,并通过检测到的用户的业务操作来调用对应的SDK组件,以执行对应的业务。
例如,假设上述APP为电商APP,在该APP中内置了支付SDK组件,该APP在前台检测到用户的支付操作时,比如检测到用户在某商品界面中点击了支付按钮,此时APP可以立即在后台调用内置的支付SDK组件,以触发该支付SDK组件对其对应的服务端进行交互来完成支付。
其中,在相关技术中,当APP调用内置的SDK组件来执行对应的业务时,SDK组件通常需要与对应的SDK服务端之间建立临时的短连接,然后基于该临时的短连接与SDK服务端进行业务交互,当业务执行完毕后,再断开该短连接。
然而,通过这种方式,如果用户处于2G网络覆盖或者处于弱网环境中,网络速度受到限制时,如果APP频繁调用内置的SDK组件执行对应的业务时,SDK组件将不得不频繁的与SDK服务器建立临时的短连接,因此可能会导致业务响应速度下降的问题。
因此,在本例中,当APP调用内置的SDK组件来执行对应的业务时,SDK组件可以复用该APP与该APP的业务服务端之间的长连接,将该APP的业务服务端作为中转,与该SDK的SDK服务端进行业务交互来执行业务,从而可以省去与该SDK的SDK服务端建立临时的短连接的过程,因此可以提升业务的响应速度。
请参见图2,图2为本例中示出的一种SDK组件复用APP与该APP的业务服务端之间的长连接与SDK服务端完成业务交互的示意图。
在初始状态下,APP与该APP的业务服务端之间建立并保持长连接。
当SDK组件被APP调用时,此时可以触发SDK组件将发往SDK服务端的业务请求,通过内部的API接口提交给该APP。
该APP在收到SDK发出的业务请求后,可以通过与业务服务端之间保持的长连接,将该业务请求发送至业务服务端。
业务服务端在接收到APP发送的业务请求后,可以解析该业务请求,获取该业务请求对应的业务类型,并判断获取到的业务类型是否为本地的业务类型。此时,该业务请求为APP内置的SDK组件发起的业务请求,因此该业务请求对应的业务类型为非本地的业务类型,因此业务服务端可以基于该业务请求中携带的信息,获取与该业务请求对应的SDK服务端的地址信息;例如该SDK服务端的IP地址以及端口号等信息。
当业务服务端获取到与该业务请求对应的SDK服务端的地址信息后,可以基于该地址信息,将接收到的由APP发送的业务请求转发至对应的SDK服务端。
其中,在示出的一种实施方式中,业务服务端将接收到的由APP发送的业务请求转发至对应的SDK服务端时,可以通过远程调用SDK服务端来实现。例如,业务服务端和上述SDK服务端可以基于RPC(Remote ProcedureCall Protocol,远程过程调用协议)架构来完成远程调用。
在RPC的架构中,通常包括调用客户端和被调用的远程服务端。在调用客户端一侧可以运营一个调用进程,在远程服务端一侧可以运行一个对应的服务进程。当调用客户端需要调用该远程服务端时,调用客户端可以基于运行的上述调用进程,向远程服务端发送一个远程调用消息,其中在该远程调用消息中可以携带本次调用上述远程服务端所要执行的进程参数。当调用客户端发送该远程调用消息后,可以等待远程服务端的应答信息。
当远程服务端接收到该远程调用信息后,可以唤醒本地运行的上述服务进程,并解析该远程调用消息获取该消息中携带的进程参数。当获取到进程参数后,远程服务端可以基于该进程参数进行业务计算,得到计算结果,然后将计算结果携带在应答信息中返回给调用客户端,此时本次调用完成。
在本例中,上述APP的业务服务端和上述SDK服务端之间,可以基于以上架构进行远程调用。
在实现时,上述业务服务端可以作为调用客户端,可以在本地运行一个调用进程。上述SDK服务端作为被调用的服务端,可以在本地运行一个对应的服务进程。
当上述业务服务端收到APP发送的业务请求,并且检查到该业务请求对应的业务不是本地的业务时,可以获取与该业务请求对应的SDK服务端的地址信息,然后通过本地运行的调用进程,向上述SDK服务端发送一个远程调用消息。此时,上述业务服务端可以将接收到的由上述APP发送的业务请求作为进程参数,携带在该远程调用消息中。
当上述SDK服务端接收到该远程调用信息后,可以唤醒本地运行的上述服务进程,然后解析该远程调用消息,获取该远程调用消息中携带的作为上述进程参数的业务请求。当上述SDK服务端获取到该业务请求后,由于该业务请求的发送方为上述APP内置的SDK发出的业务请求,此时该业务请求对应的业务为该SDK服务端本地的业务类型,因此该SDK服务端在获取到该业务请求后,可以直接基于该业务请求执行对应的业务。当业务执行完毕后,上述SDK服务端可以将业务执行结果作为应答信息,返回给上述APP的业务服务端,此时远程调用结束。
当上述APP的业务服务端接收到上述SDK服务端返回的业务执行结果,仍然可以通过与上述APP之间保持的长连接,将该业务执行结果返回给上述APP。上述APP在收到该业务执行结果后,可以将业务执行结果返回给内置的SDK组件进行后续业务处理,当后续处理完成后,此时业务执行完毕。
可见,通过这种方式,当APP调用内置的SDK组件来执行对应的业务时,SDK组件可以不再需要与对应的SDK服务端建立临时的短连接,而是可以复用该APP与该APP的业务服务端之间的长连接,将该APP的业务服务端作为中转,与该SDK的SDK服务端进行业务交互来执行业务,由于省去了建立短连接的过程,因此可以提升业务的响应速度。
以下通过一个具体的示例并结合应用场景对以上实施例中的技术方案进行详细描述。
在示出的一种应用场景中,上述APP可以是电子商务APP,在该电子商务APP中可以预先内置支付SDK组件,上述APP可以通过支付SDK组件提供的API接口来调用支付SDK组件,来完成对应的支付业务。
其中,该支付SDK组件可以是与该电子商务APP合作的第三方支付机构提供的SDK组件。例如,上述电子商务APP可以是淘宝APP,上述支付SDK组件可以是支付宝SDK组件。
在该场景中,上述业务服务端可以是面向该电子商务APP提供服务的电子商务服务平台。上述SDK服务端可以是面向该电子商务APP中内置的支付SDK组件提供服务的支付服务平台。另外,该电子商务APP与电子商务服务平台之间可以建立并保持长连接,电子商务服务平台可以通过该长连接定期向电子商务APP推送消息。
在初始状态下,电子商务APP可以在前台实时的检测用户的支付操作,当检测到用户在前台执行的支付操作时,比如检测到用户在某商品界面中点击了支付按钮,此时电子商务APP可以立即在后台调用内置的该支付SDK组件。
当支付SDK组件被调用后,可以将发往支付服务平台的支付请求通过电子商务APP与电子商务服务平台之间的长连接,发送至电子商务服务平台。其中,该支付请求中可以携带需要支付的金额等信息,付款方的账户信息,以及收款方的账户信息。
当电子商务服务平台接收到该支付请求后,由于支付业务为非本地业务,此时电子商务服务平台可以远程调用支付服务平台,向支付服务平台发送一个远程调用消息,并在该远程调用消息中携带该支付请求。
当支付平台接收到电子商务服务平台发送的远程调用消息后,可以解析该消息获取该消息中的支付请求,由于支付业务为支付服务平台的本地业务,因此支付服务平台可以读取该支付请求中携带的支付金额,在付款方的账户中扣除对应的金额后,向收款方的账户中支付对应的金额。
当完成支付后,支付服务平台可以向电子商务服务平台应答支付结果。当电子商务服务平台收到支付服务平台的应答后,可以将支付结果再次基于与电子商务APP之间的长连接返回至电子商务APP。电子商务APP在收到该支付结果后,可以将该支付结果在APP内部提交给内置的支付SDK组件,以完成整个支付业务。
可见,通过这种方式,由于支付SDK组件与支付服务平台进行业务交互时,不再需要与支付服务平台建立临时的短连接来进行业务交互,而是通过复用电子商务APP与电子商务服务平台之间的长连接,将电子商务服务平台作为中转,与支付服务平台进行业务交互来完成支付,因此可以支付的响应速度,即时用户处于2g环境下或者弱网环境下,仍然能够快速的完成支付。
在以上实施例中,在客户端调用内置的SDK组件执行业务时,可以将该SDK组件发出的业务请求,基于与业务服务端之间保持的长连接发送至业务服务端,再由业务服务端将该业务请求转发至对应的SDK服务端来完成业务。由于SDK组件在执行业务时,不再需要实时的与SDK服务端建立短连接,而是复用客户端与业务服务端之间已有的长连接与SDK服务端进行交互,因此可以提升业务执行的速度,降低业务响应的时间。
与上述方法实施例相对应,本申请还提供了装置的实施例。
请参见图3,本申请提出一种基于SDK组件的业务执行装置30,应用于客户端;其中,请参见图4,作为承载所述基于SDK组件的业务执行装置30的客户端所涉及的硬件架构中,通常包括CPU、内存、非易失性存储器、网络接口以及内部总线等;以软件实现为例,所述基于SDK组件的业务执行装置30通常可以理解为加载在内存中的计算机程序,通过CPU运行之后形成的软硬件相结合的逻辑装置,所述装置30包括:
第一接收模块301,用于在调用客户端内置的SDK组件执行业务时,接收所述SDK组件发出的业务请求;
发送模块302,用于基于建立的长连接将所述业务请求发送至与所述客户端对应的业务服务端,以由所述业务服务端将所述业务请求转发至对应的SDK服务端;
第二接收模块303,用于基于所述长连接接收所述SDK服务端返回的与所述业务请求对应的业务执行结果,并将该业务执行结果返回给所述SDK组件。
在本例中,上述客户端与上述业务服务端之间通常可以保持长连接,上述客户端和上述业务服务端均可以通过该长连接持续向对方发送数据包,当没有数据包发送,即该长连接空闲时,上述APP与上述本地服务端可以互相发送链路检测包,来保持该长连接不断开。
当客户端调用内置的SDK组件来执行对应的业务时,SDK组件可以复用该客户端与上述业务服务端之间的长连接,将该客户端的业务服务端作为中转,与该SDK的SDK服务端进行业务交互来执行业务,从而可以省去与该SDK的SDK服务端建立临时的短连接的过程,因此可以提升业务的响应速度。
在本例中,上述业务可以包括支付业务;上述SDK组件可以包括电商APP中内置的SDK支付组件。例如,上述APP可以是淘宝APP,上述SDK组件可以是淘宝APP中预先内置的支付宝SDK组件,上述APP可以通过支付宝SDK组件提供的API接口来调用支付宝SDK组件,来完成对应的支付业务。
请参见图5,本申请提出一种基于SDK组件的业务执行装置50,应用于业务服务端;其中,请参见图6,作为承载所述基于SDK组件的业务执行装置30的业务服务端所涉及的硬件架构中,通常包括CPU、内存、非易失性存储器、网络接口以及内部总线等;以软件实现为例,所述基于SDK组件的业务执行装置50通常可以理解为加载在内存中的计算机程序,通过CPU运行之后形成的软硬件相结合的逻辑装置,所述装置50包括:
第三接收模块501,用于基于建立的长连接接收客户端发送的业务请求;其中,所述业务请求由所述客户端在调用内置的SDK组件执行业务时,由所述SDK组件发出;
转发模块502,用于将所述业务请求转发至与所述业务请求对应的SDK服务端;
返回模块503,用于接收所述SDK服务端返回的与所述业务请求对应的业务执行结果,并将所述业务执行结果通过所述长连接返回给所述客户端。
在本例中,上述客户端与上述业务服务端之间通常可以保持长连接,上述客户端和上述业务服务端均可以通过该长连接持续向对方发送数据包,当没有数据包发送,即该长连接空闲时,上述APP与上述本地服务端可以互相发送链路检测包,来保持该长连接不断开。
当客户端调用内置的SDK组件来执行对应的业务时,SDK组件可以复用该客户端与上述业务服务端之间的长连接,将该客户端的业务服务端作为中转,与该SDK的SDK服务端进行业务交互来执行业务,从而可以省去与该SDK的SDK服务端建立临时的短连接的过程,因此可以提升业务的响应速度。
在本例中,所述转发模块502具体用于:
向所述业务服务端发送远程调用消息,所述远程调用消息携带所述业务请求,以触发所述SDK服务端执行与所述业务请求对应的业务。
在本例中,上述业务也可以包括支付业务;上述SDK组件也可以包括电商APP中内置的SDK支付组件。例如,上述APP可以是淘宝APP,上述SDK组件可以是淘宝APP中预先内置的支付宝SDK组件,上述APP可以通过支付宝SDK组件提供的API接口来调用支付宝SDK组件,来完成对应的支付业务。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。