CN116431141A - Sdk调用方法、设备及存储介质 - Google Patents

Sdk调用方法、设备及存储介质 Download PDF

Info

Publication number
CN116431141A
CN116431141A CN202310212872.3A CN202310212872A CN116431141A CN 116431141 A CN116431141 A CN 116431141A CN 202310212872 A CN202310212872 A CN 202310212872A CN 116431141 A CN116431141 A CN 116431141A
Authority
CN
China
Prior art keywords
sdk
calling
execution
called
api request
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
Application number
CN202310212872.3A
Other languages
English (en)
Inventor
张浩龙
陈其友
于雄雄
周瑞亮
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Kuangshi Technology Co Ltd
Original Assignee
Beijing Kuangshi Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Kuangshi Technology Co Ltd filed Critical Beijing Kuangshi Technology Co Ltd
Priority to CN202310212872.3A priority Critical patent/CN116431141A/zh
Publication of CN116431141A publication Critical patent/CN116431141A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本申请公开了一种SDK调用方法、设备及存储介质,该方法包括:调用SDK进程基于进程间通信接口获取调用方发送的应用程序接口API请求;API请求包括待调用SDK的标识;调用SDK进程根据待调用SDK的标识从SDK进程对应的资源库中获取待调用SDK的执行逻辑;调用SDK进程运行执行逻辑获得执行结果,根据执行结果响应API请求。能够在不增加额外维护成本的同时提高SDK调用的成功率,从而提高了对SDK的调用效率。

Description

SDK调用方法、设备及存储介质
技术领域
本发明一般涉及计算机技术领域,具体涉及一种SDK调用方法、设备及存储介质。
背景技术
随着软件开发工具包(software development kit,简称为SDK)技术的不断发展,SDK提供方(例如,服务器)可以给SDK资源库(静态库或动态库)定义头文件,并基于应用程序编程接口(application programming interface,简称为API)执行头文件以调用SDK资源库中的SDK文件。但SDK提供方自身运行代码和SDK调用的相关代码之间彼此耦合,当SDK提供方自身运行代码存在缺陷时,会影响SDK调用的相关代码的执行,从而导致SDK调用失败。
目前,为了正常实现SDK的调用,SDK提供方可以提供SDK维护以保障SDK调用的相关代码的执行。但维护时间过长、成本过高,因此仍存在SDK调用效率低的问题。
发明内容
鉴于现有技术中的上述缺陷或不足,期望提供一种SDK的调用方法、设备及存储介质,能够在不增加额外维护成本的同时提高SDK调用的成功率,从而提高对SDK的调用效率。
所述技术方案如下:
根据本申请的一个方面,提供了一种SDK的调用方法,该方法包括:
调用SDK进程基于进程间通信接口获取调用方发送的应用程序接口API请求;API请求包括待调用SDK的标识;
调用SDK进程根据待调用SDK的标识从SDK进程对应的资源库中获取待调用SDK的执行逻辑;
调用SDK进程运行执行逻辑获得执行结果,根据执行结果响应API请求。
根据本申请的另一方面,提供了一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,该处理器执行该程序时实现如上述的SDK调用方法。
根据本申请的另一方面,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序用于实现如上述的SDK调用方法。
根据本申请的另一方面,提供了一种计算机程序产品,其上包括指令,该指令被执行时实现如上述的SDK调用方法。
本申请实施例中提供的SDK调用方法、设备及存储介质,基于进程间通信IPC接口获取SDK的调用请求,并根据待调用SDK的标识从SDK进程所对应的资源库中获取待调用SDK的执行逻辑进行执行。一方面,基于专有的进程执行SDK调用流程,可以将SDK的调用进程与调用方的其他进程进行隔离,保证SDK程序代码和用户程序代码运行在不同的进程空间中,使得调用方无需再部署额外的SDK守护进程,避免了调用方的资源浪费;另一方面,根据待调用SDK的标识从SDK调用进程对应资源库中获取待调用SDK的执行逻辑执行获得执行结果,可以将SDK代码的运行环境进行隔离,从而减少了SDK代码出现异常的情况,降低了SDK提供者的维护成本,提高了对SDK的调用效率。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1为本申请实施例的一种SDK调用方法的实施环境架构图;
图2为本申请实施例的一种SDK调用方法的流程示意图;
图3为本申请实施例的一种SDK调用方法的框架示意图;
图4为本申请实施例的一种SDK提供方进程隔离的示意图;
图5为本申请实施例的一种调用SDK进程的框架示意图;
图6为本申请实施例的SDK调用方法中资源库的信息示意图;
图7为本申请实施例的另一种SDK调用方法的流程示意图;
图8为本申请实施例的一种SDK调用装置的方框示意图;
图9为本申请实施例的提供的计算机设备的结构框图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
(1)软件开发工具包(software development kit,简称为SDK):是各种开发工具的集合。其中,开发工具可以是软件工程师为特定的软件包、软件框架、硬件平台、操作系统等建立的应用软件。SDK不仅可以为特定的程序设计语言提供应用程序接口API的相关文件,还可以为加速开发、减少BUG(错误)以及提升易维护性提供巨大的帮助。
(2)进程间通信(interprocess communication,简称为ipc):是一组编程接口。可以使程序员协调不同的进程,使不同进程能够在一个操作系统中同时运行,并相互传递、交换信息。从而使得一个程序能够在同一时间内处理许多用户的要求。
(3)应用程序编程接口(application programming interface,简称为API):是一种接口。可以是将软件系统中不同组成部分衔接起来的一种协议约定。良好的应用程序编程接口可以提高软件系统中各组成部分之间的内聚性,降低各组成部分之间的耦合程度,从而提高软件系统的维护性和扩展性。
(4)静态库/动态库:是两种共享程序代码的方式。可以是通过将反复使用的公共程序代码编译为“库”文件而构成。相较于静态库方式,使用动态库方式更加节省内存。
(5)守护进程(daemon):是运行在后台且生存期长的一种特殊进程。它独立于控制终端,既可以在系统引导装入时启动,在系统关闭时终止;又可以在不需要用户输入的情况下,周期性地执行某种任务或等待处理某些发生的事件。
图1是本申请实施例提供的一种SDK调用方法的实施环境架构图。如图1所示,该实施环境架构包括:SDK提供方10和SDK调用方20。SDK提供方10可以维护多种SDK文件,对外提供SDK调用服务。SDK调用方20可以调用SDK提供方10对外提供的SDK。参考图1(a),SDK提供方10和SDK调用方20可以集成部署在一个计算机设备中;参考图1(b),SDK提供方10和SDK调用方20也可以分别独立部署于不同的计算机设备。在独立部署的场景下,部署SDK提供方10的计算机设备可以称为服务端(server),部署SDK调用方20的计算机设备可以称为客户端(client)。当然服务端和客户端也可以是同一计算机设备中的功能模块。
上述计算机设备可以是各类应用场景中的终端设备。具体可以是智能电视、智能手机、平板电脑、电视机、笔记本电脑、台式电脑等,本申请实施例对此不进行具体限定。
具体实现中,可以在计算机设备上基于应用程序API接口的方式,运行在SDK资源库的基础上定义的头文件,从而完成对SDK文件的调用,并将完成SDK文件调用后的结果显示在计算机设备上。
目前,SDK调用方可以基于API头文件的方式实现对SDK的调用。在此类方式中,SDK提供方的自身运行代码与SDK调用的相关代码运行在同一进程空间内,因此当SDK提供方自身运行代码存在缺陷时,会影响到SDK调用的相关代码的运行环境,导致SDK调用的相关代码出现逻辑错误、运行崩溃以及OOM(out of memory)等异常,从而导致SDK调用失败。为了避免上述SDK调用的相关代码的运行环境出现问题,一方面SDK提供方可以提供SDK运行环境的维护;另一方面SDK调用方可以额外配置SDK守护进程信息,比如启动信息、安全策略等。但SDK提供方进行环境维护时存在维护成本较高,耗费时间过长的问题;SDK调用方部署守护进程时存在步骤复杂繁琐的问题。因此SDK调用的成功率不高,仍存在SDK调用效率低的问题。
基于此,本申请提出了一种SDK调用方法、设备及存储介质,能够在不增加额外维护成本的同时提高SDK调用的成功率,从而提高对SDK的调用效率。
图2是本申请实施例提供的一种SDK调用方法的流程示意图,该方法可以由上述计算机设备10执行。如图2所示,该方法包括以下步骤:
S201、调用SDK进程基于进程间通信接口获取调用方发送的应用程序接口API请求;API请求包括待调用SDK的标识。
目前,在对SDK的调用中,SDK提供方的自身运行代码与SDK调用的相关代码运行在同一进程空间内,仍存在代码运行环境之间相互影响导致SDK调用失败的问题。本申请实施例中为了保障SDK调用相关代码的执行环境,在SDK提供方和SDK调用方分别创建相应的进程,从而利用进程间通信接口通过提供方与调用方之间的进程交互完成SDK的调用进程。示例性的,参考图3,提供方可以创建进程A,可以通过进程A实现SDK的调用;调用方可以创建进程B,可以通过进程B发送SDK的调用请求。
一种可能的实现方式中,SDK的调用方与提供方在进程隔离的基础上,可以通过进程间通信进行SDK调用信息的传播与交换,从而实现SDK的调用。示例性的,SDK调用进程的提供方可以基于进程间通信IPC接口,从SDK的调用方获取SDK调用请求。
需要说明的是,进程间通信的方式可以包括管道(无名管道/命名管道)、消息队列、信号量、共享存储、Socket、Streams等。当上述SDK提供方和SDK调用方分别部署于不同的计算机设备时,进程间通信的方式为Socket或Streams。
一种可能的实现方式中,SDK调用请求可以是应用程序接口API请求,可以由调用方最终所要实现的功能或所要呈现的效果决定。其中,API请求包括待调用SDK的标识。
示例性的,API请求可以是预先定义的函数,可以用来提供运行接口。本申请实施例中包括待调用SDK标识的API请求可以理解为调用方调用SDK的接口。
示例性的,待调用SDK的标识可以用于表示待调用的SDK。具体可以包括名称、编号、应用或服务等。例如,可以是美颜功能中的大眼特效、瘦脸特效、小头特效等。
S202、调用SDK进程根据待调用SDK的标识从SDK调用进程对应的资源库中获取待调用SDK的执行逻辑。
本申请实施例中,为了避免SDK调用过程中需要SDK调用方额外配置SDK守护进程,提高SDK调用的成功率,创建与SDK调用进程相对应的资源库,将SDK调用的相关代码等放置于资源库中进行保护。从而保证了SDK代码的准确性与完整性。
一种可能的实现方式中,当获取到SDK调用方发送的API请求时,SDK提供方可以调用SDK进程根据待调用SDK的标识从创建的资源库中获取待调用SDK的执行逻辑。
示例性的,待调用SDK的标识与待调用SDK的执行逻辑相对应。例如,可以是一个待调用SDK的标识对应一个待调用SDK的执行逻辑;也可以是多个待调用SDK的标识对应一个待调用SDK的执行逻辑。
一种可能的实现方式中,可以由调用SDK进程的提供方创建包含待调用SDK执行逻辑的资源库。示例性的,资源库可以表示为共享空间或共享资源。
示例性的,SDK的执行逻辑可以是待调用SDK的内部处理过程。例如,调用方所要调用的SDK标识为求出两数之间的和,则SDK的执行逻辑可以是将两数相加。
S203,调用SDK进程运行执行逻辑获得执行结果,根据执行结果响应API请求。
本申请实施例中,为了进一步保障SDK调用相关代码的运行环境,将SDK执行逻辑的获取过程与执行逻辑的执行过程进行隔离,在不增加额外维护成本的同时提高了对SDK的调用效率。
一种可能的实现方式中,可以根据对待调用SDK执行逻辑的运行,获得调用SDK的执行结果,并利用此执行结果响应由调用方发送的API请求。示例性的,执行结果可以是数字格式、文件格式、图片格式等,本申请实施例对此格式不进行具体限定。
本申请实施例提供的SDK调用方法中,基于进程间通信IPC接口获取SDK的调用请求,并根据待调用SDK的标识从SDK进程所对应的资源库中获取待调用SDK的执行逻辑进行执行。一方面,基于专有的进程执行SDK调用流程,可以将SDK的调用进程与调用方的其他进程进行隔离,保证SDK程序代码和用户程序代码运行在不同的进程空间中,使得调用方无需再部署额外的SDK守护进程,避免了调用方的资源浪费;另一方面,根据待调用SDK的标识从SDK调用进程对应资源库中获取待调用SDK的执行逻辑执行获得执行结果,可以将SDK代码的运行环境进行隔离,从而减少了SDK代码出现异常的情况,降低了SDK提供者的维护成本,提高了对SDK的调用效率。
在本申请中除了创建专有的进程将SDK调用方与提供方自身代码解耦,在本申请的另一实施例中,还可以为SDK进程创建独立的执行环境,从而进一步确保SDK调用进程与除SDK调用进程之外的其他进程隔离。示例性的,具体包括:SDK进程的执行环境与其他进程的执行环境相互隔离。
本申请实施例中,利用进程间通信IPC接口将SDK进程的调用方与提供方的运行环境进行隔离,在此基础上将SDK进程提供方实际调用SDK进程的执行环境与其他进程的执行环境也相互隔离,进一步加强了调用方进程环境与SDK进程环境的隔离效果,保障了SDK调用的成功率。
需要说明的是,进程可以是正在进行的一个过程或一个任务,指的是程序的运行过程。因此,在SDK进程的执行环境中可以同时进行多个SDK的调用进程以及除SDK调用进程之外的其他进程。
一种可能的实现方式中,调用SDK进程的执行环境可以利用进程间通信IPC接口与其他进程的执行环境相互隔离,进程间互不影响。
示例性的,参考图4,每一个方框可以是一个进程,①②③可以分别表示三个不同的SDK调用进程,④可以表示SDK进程提供方除SDK调用进程之外的其他进程。进程①②③为同一个执行环境,进程④为另一个执行环境,两个执行环境之间通过IPC方式进行信息交互。
需要说明的是,执行环境可以是一种机制,每个执行环境中都有一个与之关联的变量对象,环境中定义的所有变量和函数都保存在这个对象中。本申请实施例,在SDK进程提供方的执行环境中,变量对象可以是SDK进程;在SDK进程调用方的执行环境中,变量对象可以是SDK调用请求。
在本申请的另一实施例中,还可以为SDK进程所需要的SDK相关文件创建独立的资源库,从而保证SDK代码文件的完整性与准确性,进一步提高了SDK的调用效率。示例性的,具体包括:在SDK进程的执行环境中创建资源库;资源库包括多个SDK的代码文件以及多个SDK文件的标识;代码文件包括SDK执行逻辑。
一种可能的实现方式中,参考图5,SDK提供方可以提供client组件、进程间通信基础类IPC helper组件以及server组件,而本申请实施例则是在上述组件构成的执行环境中完成SDK调用进程。
一种可能的实现方式中,可以通过IPC helper组件创建SDK进程对应的资源库。示例性的,可以在IPC helper组件上通过mmap函数创建资源库。
需要说明的是,通过使用mmap函数可以建立共享映射区,从而实现两个不相干的进程之间进行通讯。而本申请实施例中mmap函数创建的资源库可以包括多个SDK的代码文件以及多个SDK文件的标识。其中,SDK的代码文件可以包括API头文件、SDK源代码以及SDK执行逻辑等。示例性的,资源库创建成功后,参考图6,当需要调用的SDK信息为A时,相对应的代码文件可直接显示为API头文件x1与源代码y1;当需要调用的SDK信息为B时,相对应的代码文件可直接显示为API头文件x2与源代码y2。
本申请实施例中,IPC helper组件可以为各个IPC进程提供服务。示例性的,可以通过Promise向进程发送方提供响应,并且可以确保进程的处理效率。其次,IPC helper组件还可以管理SDK API wrapper(API包装器)从而在无需实时交互的情况下调用各种API。
需要说明的是,上述API wrapper可以是用于屏蔽或包装另一个项目的任何框架或实体,是特定于语言的包或工具包。由于封装了多个API调用,可以帮助开发人员调用各种API且无需实时交互。
一种可能的实现方式中,执行环境中的client组件可以利用管理的SDK APIwrapper接收来自调用方的API请求,并将接受到的API请求转发至IPC helper组件。IPChelper组件基于API请求在创建资源库中获取待调用SDK的执行逻辑并发送至server组件。server组件运行执行逻辑从而获得执行结果。
在本申请的另一实施例中,还提供了开启SDK进程的一种具体实现方式。示例性的,具体包括:从调用方获取SDK进程的使能信息,根据使能信息开启SDK进程。
本申请实施例中,根据SDK进程的使能信息决定是否开启SDK进程与用户进程之间的隔离,从而当SDK程序代码出现问题时,可以快速判断诱导因素为用户进程的执行环境出现异常或SDK进程的执行环境出现异常。
一种可能的实现方式中,可以由SDK进程的调用方产生SDK进程的使能信息。当SDK的使能信息表示为开启SDK进程时,可以通过调试API的方式或环境变量(env)监测的方式开启SDK进程。示例性的,SDK调用进程的使能信息可以为“0”、“1”、“enable”、“disable”,其中,用于表示开启SDK进程的使能信息可以为“enable”或“0”。
一种可能的实现方式中,当使能信息为“enable”时,调试API的方式可以是将“enable”编入原始调试代码中,从而开启SDK进程,例如可以是API is_enable_debug_fork;而环境变量监测的方式则是自动识别使能信息“enable”,在无需编译代码的情况下开启SDK进程,例如可以是ENV ENABLE_C_API_WITH_FORK_MODE。
需要说明的是,在利用调试API的方式或环境变量监测的方式开启SDK进程之前,需要调用方发送开始执行的指令。
另一种可能的实现方式中,可以由SDK进程的提供方产生SDK进程的使能信息。
在本申请中由调用方发送的API请求除了包括待调用SDK的标识,还包括了待调用SDK的输入参数;前文涉及的“调用SDK进程运行执行逻辑获得执行结果”的具体实现包括:调用SDK进程基于输入参数运行执行逻辑获得执行结果。
一种可能的实现方式中,由调用方向提供方发送的API调用请求不仅包括待调用SDK的标识,还包括待调用SDK的输入参数。示例性的,待调用SDK的输入参数可以是调用方的基础参数。例如,当调用方需要计算数字1与数字2的和时,SDK调用请求不仅包括待调用SDK的名称为“求和”,还包括调用方的基础参数数字1与数字2。
另一种可能的实现方式中,由调用方向提供方发送的API调用请求仅包括调用SDK的标识,并不包括调用方的基础参数。例如,当调用方需要对添加在相册中某一张照片上的贴纸或表情进行选择时,首先需要获取到贴纸库或表情库,此时相册中的某一张照片即为调用方的基础参数;贴纸库或表情库的显示即为用户所要调用的SDK进程。需要说明的是,贴纸库或表情库的显示与相册中原照片无关,因此并不需要调用方的基础参数。
一种可能的实现方式中,在API调用请求包含待调用SDK输入参数的情况下,调用SDK进程可以基于输入参数运行执行逻辑获得执行结果。示例性的,参考图5,执行环境中的server组件可以基于由client组件接收并转发的输入参数,运行SDK进程资源库中与待调用SDK标识相对应的执行逻辑,获得执行结果。例如,上述调用方需要计算数字1和数字2之和时,server组件可以基于基础参数数字1和数字2运行实质为加法运算的SDK执行逻辑,运行后的结果即为最终的执行结果。
需要说明的是,当server组件运行执行逻辑获得执行结果之后,可以将执行结果由server组件发送至IPC helper组件,IPC helper组件转发至client组件,再由client组件将最终的执行结果返回至SDK调用方。
在本申请的另一实施例中,还提供了进程间通信接口的具体实现方式。示例性的,具体包括:进程间通信接口与调用方的操作系统匹配。
本申请实施例中,SDK调用方可以配置不同的操作系统,示例性的,操作系统可以是Windows系统、mac OS系统、linux-like OS系统等。为了使进程间通信接口与调用方的操作系统相匹配,可以针对调用方不同的操作系统封装不同的进程间通信接口。
一种可能的实现方式中,当调用方的操作系统为linux-like OS系统时,可以利用封装进程间通信接口fork创建进程;当调用方的操作系统为Windows系统时,可以利用封装进程间通信接口CreateProcess创建进程。
需要说明的是,当调用方的操作系统为linux-like OS系统时,调用方发送的应用程序接口API需要遵循应用编程界面标准-POSIX标准;当调用方的操作系统为Windows系统时,调用方发送的应用程序接口API则包括在Windows系统目录下的动态连接库文件中。
在本申请的另一实施例中,还提供了一种响应API请求的具体表现方式。示例性的,前文涉及的“根据执行结果响应API请求”的具体实现包括:调用SDK进程根据执行结果生成API请求的响应消息,并通过进程间通信接口向调用方发送响应消息。
一种可能的实现方式中,调用SDK进程可以基于运行执行逻辑后得到的执行结果生成API请求的响应消息。示例性的,API请求的响应消息可以是SDK进程的提供方完成SDK进程后响应给SDK调用方的消息内容。
一种可能的实现方式中,API请求的响应消息可以通过进程间通信接口返回发送至SDK调用方。示例性的,参考图5,可以由client组件根据server组件产生的执行结果生成API请求的响应消息,并由client组件通过进程间通信接口的方式发送至SDK调用方。
为了更好的理解本申请实施例,下面来进一步说明本申请提出的另一种SDK调用方法的具体流程。
如图7所示,该方法可以包括以下步骤:
步骤701,获取调用SDK进程的使能信息,根据使能信息开启SDK进程。
一种可能的实现方式中,可以从SDK的调用方或提供方获取调用SDK进程的使能信息,并根据使能信息开启SDK进程。
示例性的,在SDK的调用方获取使能信息时,当使能信息表示为开启SDK进程时,可以通过调试API的方式或环境变量(env)监测的方式开启SDK进程。
步骤702,响应于SDK进程开启,获取由SDK调用方发送的调用请求。
一种可能的实现方式中,当SDK进程开启时,SDK调用方可以基于进程间通信接口向SDK进程的提供方发送SDK调用请求。
示例性的,SDK调用请求的形式为应用程序接口API请求。其中,API请求可以包括待调用SDK的标识,还可以包括调用方的输入参数。
步骤703,SDK进程的提供方根据调用请求运行SDK执行逻辑获得执行结果。
一种可能的实现方式中,参考图5,可以由SDK进程执行环境中的client组件接收SDK调用请求并将SDK调用请求转发至IPC helper组件。IPC helper组件根据调用请求中待调用SDK的标识信息从自身创建的资源库中对待调用SDK的执行逻辑进行获取,并将获取到的执行逻辑转发至server组件。server组件通过运行获取到的执行逻辑,从而获得SDK进程的执行结果。
步骤704,将执行结果返回至SDK调用方。
一种可能的实现方式中,server组件获得SDK进程的执行结果后,可以将执行结果发送至IPC helper组件,IPC helper组件转发至client组件,再由client组件返回至SDK调用方从而完成SDK进程的调用。
需要说明的是,将执行结果返回至SDK调用方仍是通过进程间通信接口的方式进行的。
前文所述的实施例中,介绍了另一种SDK调用方法的具体流程。图8为本申请实施例的SDK调用装置的方框示意图,该装置可以部署于前文所述的计算机设备。参考图8,该装置包括第一获取单元801、第二获取单元802以及处理单元803。
第一获取单元801,用于调用SDK进程基于进程间通信接口获取调用方发送的应用程序接口API请求;API请求包括待调用SDK的标识;
第二获取单元802,用于调用SDK进程根据待调用SDK的标识从SDK进程对应的资源库中获取待调用SDK的执行逻辑;
处理单元803,用于调用SDK进程运行执行逻辑获得执行结果,根据执行结果响应API请求。
在一种可能的实施例中,装置还用于,SDK进程的执行环境与其他进程的执行环境相互隔离。
在一种可能的实施例中,装置还用于,在SDK进程的执行环境中创建资源库;资源库包括多个SDK的代码文件以及多个SDK文件的标识;代码文件包括SDK执行逻辑。
在一种可能的实施例中,装置还用于,从调用方获取SDK调用进程的使能信息,根据使能信息开启SDK调用进程。
在一种可能的实施例中,处理单元803还用于,调用SDK进程基于输入参数运行执行逻辑获得执行结果。
在一种可能的实施例中,装置还用于,进程间通信接口与调用方的操作系统匹配。
在一种可能的实施例中,处理单元803还用于,调用SDK进程根据执行结果生成API请求的响应消息,并通过进程间通信接口向调用方发送响应消息。
综上所述,本申请实施例提供的SDK调用装置,基于进程间通信接口获取SDK的调用请求,并根据待调用SDK的标识从SDK进程所对应的资源库中获取待调用SDK的执行逻辑进行执行。一方面,基于专有的进程执行SDK调用流程,可以将SDK的调用进程与调用方的其他进程进行隔离,保证SDK程序代码和用户程序代码运行在不同的进程空间中,使得调用方无需再部署额外的SDK守护进程,避免了调用方的资源浪费;另一方面,根据待调用SDK的标识从SDK调用进程对应资源库中获取待调用SDK的执行逻辑执行获得执行结果,可以将SDK代码的运行环境进行隔离,从而减少了SDK代码出现异常的情况,降低了SDK提供者的维护成本,提高了对SDK的调用效率。
在一个实施例中,提供了一种计算机设备。图9为本申请实施例提供的计算机设备的结构框图,参考图9。该计算设备包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
调用SDK进程基于进程间通信接口获取调用方发送的应用程序接口API请求;API请求包括待调用SDK的标识;调用SDK进程根据待调用SDK的标识从SDK进程对应的资源库中获取待调用SDK的执行逻辑;调用SDK进程运行执行逻辑获得执行结果,根据执行结果响应API请求。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种软件开发工具包SDK调用方法,其特征在于,所述方法包括:
调用SDK进程基于进程间通信接口获取调用方发送的应用程序接口API请求;所述API请求包括待调用SDK的标识;
调用所述SDK进程根据所述待调用SDK的标识从所述SDK进程对应的资源库中获取所述待调用SDK的执行逻辑;
调用所述SDK进程运行所述执行逻辑获得执行结果,根据所述执行结果响应所述API请求。
2.根据权利要求1所述的方法,其特征在于,
所述SDK进程的执行环境与其他进程的执行环境相互隔离。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
在所述SDK进程的执行环境中创建所述资源库;所述资源库包括多个SDK的代码文件以及所述多个SDK文件的标识;所述代码文件包括所述SDK执行逻辑。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
从所述调用方获取所述SDK进程的使能信息,根据所述使能信息开启所述SDK进程。
5.根据权利要求1所述的方法,其特征在于,所述API请求还包括所述待调用SDK的输入参数;
调用所述SDK进程运行所述执行逻辑获得执行结果,包括:
调用所述SDK进程基于所述输入参数运行所述执行逻辑获得所述执行结果。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述进程间通信接口与所述调用方的操作系统匹配。
7.根据权利要求1所述的方法,其特征在于,所述根据所述执行结果响应所述API请求,包括:
调用所述SDK进程根据所述执行结果生成所述API请求的响应消息,并通过所述进程间通信接口向所述调用方发送所述响应消息。
8.一种计算机设备,其特征在于,所述计算机设备包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器用于执行所述程序时实现如权利要求1-7任一项所述的SDK调用方法。
9.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序用于实现如权利要求1-7任一项所述的SDK调用方法。
10.一种计算机程序产品,其特征在于,所述计算机程序产品中包括指令,当所述指令被执行时实现如权利要求1-7任一项所述的SDK调用方法。
CN202310212872.3A 2023-03-06 2023-03-06 Sdk调用方法、设备及存储介质 Pending CN116431141A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310212872.3A CN116431141A (zh) 2023-03-06 2023-03-06 Sdk调用方法、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310212872.3A CN116431141A (zh) 2023-03-06 2023-03-06 Sdk调用方法、设备及存储介质

Publications (1)

Publication Number Publication Date
CN116431141A true CN116431141A (zh) 2023-07-14

Family

ID=87082338

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310212872.3A Pending CN116431141A (zh) 2023-03-06 2023-03-06 Sdk调用方法、设备及存储介质

Country Status (1)

Country Link
CN (1) CN116431141A (zh)

Similar Documents

Publication Publication Date Title
WO2022016848A1 (zh) 一种根据服务角色的进行应用部署的方法及装置
CN107203419B (zh) 应用程序中的模块间调用方法、装置及系统
US20120084864A1 (en) System and method for a mobile cross-platform software system
US11456914B2 (en) Implementing affinity and anti-affinity with KUBERNETES
Ghezzi et al. Programming language support to context-aware adaptation: a case-study with Erlang
US11216343B1 (en) System and method for accelerating processing in event-driven server-less computing
CN114077423A (zh) 基于移动跨平台的机场app开发容器架构
WO2020199594A1 (zh) 业务组件加载方法、装置、计算机设备和存储介质
CN108376066B (zh) 代码处理装置及代码处理方法
US11271895B1 (en) Implementing advanced networking capabilities using helm charts
CN113407362A (zh) 基于车载Android系统SOA架构SOMEIP通信中间层实现方法及系统
CN112860457A (zh) 软件开发工具包调用方法、装置、计算机设备和存储介质
CN107368339B (zh) 容器入口程序运行方法、系统、设备及存储介质
CN111865978A (zh) 一种微服务的请求标识更新方法、装置、设备及介质
CN108681491B (zh) 一种文件解耦方法及系统
US11347630B1 (en) Method and system for an automated testing framework in design pattern and validating messages
CN114222003A (zh) 服务调用方法、系统、装置、设备及存储介质
CN112199151B (zh) 一种应用程序的运行方法及装置
CN109445960B (zh) 应用的路由方法、装置及存储介质
WO2021093671A1 (zh) 任务处理方法、系统、装置、设备及计算机可读存储介质
CN116431141A (zh) Sdk调用方法、设备及存储介质
CN116342283A (zh) 可信智能合约实现方法、装置、设备及可读存储介质
CN113938527B (zh) Api网关的扩展处理方法、计算设备及存储介质
WO2022179101A1 (zh) 存储架构下的软件存储方法
CN115442372A (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