CN117076160A - 组件调用方法、装置、设备和存储介质 - Google Patents
组件调用方法、装置、设备和存储介质 Download PDFInfo
- Publication number
- CN117076160A CN117076160A CN202311335532.6A CN202311335532A CN117076160A CN 117076160 A CN117076160 A CN 117076160A CN 202311335532 A CN202311335532 A CN 202311335532A CN 117076160 A CN117076160 A CN 117076160A
- Authority
- CN
- China
- Prior art keywords
- main process
- component
- program
- call
- communication
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 443
- 238000003860 storage Methods 0.000 title claims abstract description 33
- 230000008569 process Effects 0.000 claims abstract description 307
- 230000006854 communication Effects 0.000 claims abstract description 217
- 238000004891 communication Methods 0.000 claims abstract description 214
- 244000035744 Hura crepitans Species 0.000 claims abstract description 19
- 230000004044 response Effects 0.000 claims description 15
- 238000001514 detection method Methods 0.000 claims description 8
- 230000001360 synchronised effect Effects 0.000 claims description 8
- 238000006243 chemical reaction Methods 0.000 claims description 7
- 230000000903 blocking effect Effects 0.000 claims description 4
- 238000005516 engineering process Methods 0.000 abstract description 8
- 238000013473 artificial intelligence Methods 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 10
- 238000012545 processing Methods 0.000 description 9
- 238000004590 computer program Methods 0.000 description 6
- VYZAMTAEIAYCRO-UHFFFAOYSA-N Chromium Chemical compound [Cr] VYZAMTAEIAYCRO-UHFFFAOYSA-N 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000001960 triggered effect Effects 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 238000004806 packaging method and process Methods 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 239000011800 void material Substances 0.000 description 3
- 230000003190 augmentative effect Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 230000007175 bidirectional communication Effects 0.000 description 2
- 229910052804 chromium Inorganic materials 0.000 description 2
- 239000011651 chromium Substances 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000011112 process operation Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Stored Programmes (AREA)
Abstract
本申请提供了一种组件调用方法、装置、设备和存储介质,涉及计算机技术领域,可以应用于云技术、人工智能、智慧交通、辅助驾驶等各种场景,应用于嵌入有内置程序组件的应用程序,对应运行有程序主进程、组件主进程和服务进程;包括:响应于程序主进程针对组件主进程的调用请求,通过进程间通信组件中调用请求对应的第一通信接口和第一实现接口将调用请求传输至组件主进程;程序主进程和组件主进程的执行体不同,组件主进程和服务进程的执行体相同且于沙箱中运行;通过组件主进程执行调用请求,得到调用请求的调用反馈;通过进程间通信组件中调用反馈对应的第二通信接口和第二实现接口将调用反馈传输至程序主进程。本申请能够实现高效组件调用。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种组件调用方法、装置、设备和存储介质。
背景技术
应用程序中常内置有其它的程序组件以实现模块化服务,如通过内置浏览器框架组件实现即时通信软件的文档、云存储和第三方H5应用等。内置程序组件基于现有的多进程模型(如CEF(Chromium Embedded Framework,Chromium嵌入式框架))构建,但由于现有模型的开源性以及广泛应用,成为大量攻击者的重要攻击目标,为提升内置程序组件的安全性,以及降低漏洞被利用和攻击的可能性,需对相应的程序模块进行隔离运行,以限制程序行为的执行环境。但现有的存在内置程序组件的产品,需要将主程序作为组件主进程和相关服务进程的宿主,通过加载内置组件提供的动态库,调用内置组件提供的接口以及实现提供的回调,进而完成内置程序组件的接入,但该方式在多进程的组件调用场景中会引入很大的技术风险,且增加服务加载库的编译工作量。
发明内容
本申请提供了一种组件调用方法、装置、设备和存储介质,可以有效解耦组件主进程并实现其与程序主进程间的高效通信。
一方面,本申请提供了一种组件调用方法,所述应用程序对应运行有程序主进程,所述内置程序组件对应运行有组件主进程和服务进程;所述方法包括:
响应于所述程序主进程针对所述组件主进程的调用请求,通过进程间通信组件中所述调用请求对应的第一通信接口和第一实现接口将所述调用请求传输至所述组件主进程;所述程序主进程和所述组件主进程的执行体不同,所述组件主进程和所述服务进程的执行体相同且于沙箱中运行;
通过所述组件主进程执行所述调用请求,得到所述调用请求的调用反馈;
通过所述进程间通信组件中所述调用反馈对应的第二通信接口和第二实现接口将所述调用反馈传输至所述程序主进程;所述进程间通信组件采用预设接口定义语言进行所述调用请求或所述调用反馈对应的序列化操作,以生成所述程序主进程侧的第一通信接口和所述组件主进程侧的第二通信接口,所述第一实现接口为所述第一通信接口在所述组件主进程侧的实施,所述第二实现接口为所述第二通信接口在所述组件主进程侧的实施。
另一方面提供了一种组件调用装置,应用于嵌入有内置程序组件的应用程序,所述应用程序对应运行有程序主进程,所述内置程序组件对应运行有组件主进程和服务进程;所述装置包括:
调用模块:用于响应于所述程序主进程针对所述组件主进程的调用请求,通过进程间通信组件中所述调用请求对应的第一通信接口和第一实现接口将所述调用请求传输至所述组件主进程;所述程序主进程和所述组件主进程的执行体不同,所述组件主进程和所述服务进程的执行体相同且于沙箱中运行;
执行模块:用于通过所述组件主进程执行所述调用请求,得到所述调用请求的调用反馈;
回调模块:用于通过所述进程间通信组件中所述调用反馈对应的第二通信接口和第二实现接口将所述调用反馈传输至所述程序主进程;所述进程间通信组件采用预设接口定义语言进行所述调用请求或所述调用反馈对应的序列化操作,以生成所述程序主进程侧的第一通信接口和所述组件主进程侧的第二通信接口,所述第一实现接口为所述第一通信接口在所述组件主进程侧的实施,所述第二实现接口为所述第二通信接口在所述组件主进程侧的实施。
另一方面提供了一种计算机设备,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由所述处理器加载并执行以实现如上述的组件调用方法。
另一方面提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由处理器加载并执行以实现如上述的组件调用方法。
另一方面提供了一种服务器,所述服务器包括处理器和存储器,所述存储器中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由所述处理器加载并执行以实现如上述的组件调用方法。
另一方面提供了一种终端,所述终端包括处理器和存储器,所述存储器中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由所述处理器加载并执行以实现如上述的组件调用方法。
另一方面提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令被处理器执行时实现如上述的组件调用方法。
本申请提供的组件调用方法、装置、设备、存储介质、服务器、终端、计算机程序和计算机程序产品,具有如下技术效果:
本申请的技术方案响应于程序主进程针对组件主进程的调用请求,通过进程间通信组件中调用请求对应的第一通信接口和第一实现接口将调用请求传输至组件主进程;程序主进程和组件主进程的执行体不同,组件主进程和服务进程的执行体相同且于沙箱中运行;通过组件主进程执行调用请求,得到调用请求的调用反馈;通过进程间通信组件中调用反馈对应的第二通信接口和第二实现接口将调用反馈传输至程序主进程;以将组件主进程从程序主进程中剥离,与服务进程以相同的执行体运行于隔离环境中,提升程序运行安全性;并且进程间通信组件采用预设接口定义语言进行调用请求或调用反馈对应的序列化操作,以生成程序主进程侧的第一通信接口和组件主进程侧的第二通信接口,第一实现接口为第一通信接口在组件主进程侧的实施,第二实现接口为第二通信接口在组件主进程侧的实施,如此,通过进程间通信组件进行调用请求和调用反馈的接口化,解决组件主进程剥离后自定义结构和对象的传递问题,实现隔离运行的组件模块的跨进程高效通信和组件调用,无需针对内置程序组件中大量的自定义结构进行复杂包装和解析,降低维护和改造成本。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案和优点,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。
图1是本申请实施例提供的一种应用环境的示意图;
图2是本申请实施例提供的一种组件调用方法的流程示意图;
图3是本申请实施例提供的一种内置浏览器组件的架构示意图;
图4是本申请实施例提供的一种内置浏览器组件对应的异步通信方法示意图;
图5是本申请实施例提供的另一种组件调用方法的流程示意图;
图6是本申请实施例提供的另一种组件调用方法的流程示意图;
图7是本申请实施例提供的另一种组件调用方法的流程示意图;
图8是本申请实施例提供的一种不同线程类别的绑定示意图;
图9是本申请实施例提供的一种接口对象绑定的示意图;
图10是本申请实施例提供的一种热更新方法的流程示意图;
图11是本申请实施例提供一种组件调用装置的框架示意图;
图12是本申请实施例提供的一种组件调用方法的电子设备的硬件结构框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或子模块的过程、方法、系统、产品或服务器不必限于清楚地列出的那些步骤或子模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或子模块。
对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。
CEF:即Chromium Embedded Framework。是基于Google Chromium项目的开源Webbrowser控件,可以通过它嵌入一个兼容HTML5的浏览器控件到客户端应用中。CEF采用了多进程模型:主进程Browser,负责处理窗口的创建、绘制、网络交互等主要逻辑,Render进程负责网页的渲染。
请参阅图1,图1是本申请实施例提供的一种应用环境的示意图,如图1所示,该应用环境可以至少包括终端01和服务器02。在实际应用中,终端01和服务器02可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
本申请实施例中的服务器02可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器。
具体地,云技术(Cloud technology)是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。云技术能够应用于各种领域,如医疗云、云物联、云安全、云教育、云会议、人工智能云服务、云应用、云呼叫和云社交等,云技术基于云计算(cloud computing)商业模式应用,它将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和信息服务。提供资源的网络被称为“云”,“云”中的资源在使用者看来是可以无限扩展的,并且可以随时获取,按需使用,随时扩展,按使用付费。作为云计算的基础能力提供商,会建立云计算资源池(简称云平台,一般称为IaaS(Infrastructure as a Service,基础设施即服务))平台,在资源池中部署多种类型的虚拟资源,供外部客户选择使用。云计算资源池中主要包括:计算设备(为虚拟化机器,包含操作系统)、存储设备、网络设备。
按照逻辑功能划分,在IaaS层上可以部署PaaS(Platform as a Service,平台即服务)层,PaaS层之上再部署SaaS(Software as a Service,软件即服务)层,也可以直接将SaaS部署在IaaS上。PaaS为软件运行的平台,如数据库、web容器等。SaaS为各式各样的业务软件,如web门户网站、短信群发器等。一般来说,SaaS和PaaS相对于IaaS是上层。
具体地,上述涉及的服务器02可以包括实体设备,可以具体包括有网络通信子模块、处理器和存储器等等,也可以包括运行于实体设备中的软体,可以具体包括有应用程序等。
具体地,终端01可以包括智能手机、台式电脑、平板电脑、笔记本电脑、数字助理、增强现实(augmented reality,AR)/虚拟现实(virtual reality,VR)设备、智能语音交互设备、智能家电、智能可穿戴设备、车载终端设备等类型的实体设备,也可以包括运行于实体设备中的软体,例如应用程序等。
本申请实施例中,终端01可以运行有包含内置程序组件的应用程序,内置程序组件对应的组件主进程响应于程序主进程的调用,执行相应的调用请求,以直接调用服务器02端的方法,或者组件主进程响应于调用请求与相应的服务进程通信,以通过服务进程调用服务器02端的方法,进而得到调用反馈,并通过组件主进程将调用反馈发送至程序主进程,以实现反馈数据传递。
此外,可以理解的是,图1所示的仅仅是一种组件调用方法的应用环境,该应用环境可以包括更多或更少的节点,本申请在此不做限制。
本申请实施例涉及的应用环境,或应用环境中的终端01和服务器02等可以是由客户端、多个节点(接入网络中的任意形式的计算设备,如服务器、用户终端)通过网络通信的形式连接形成的分布式系统。分布式系统可以为区块链系统,该区块链系统可以提供上述的组件调用服务和数据存储服务等。
以下基于上述应用环境介绍本申请的一种组件调用方法,本申请实施例可应用于各种场景,包括但不限于云技术、人工智能、智慧交通、辅助驾驶等。请参考图2,图2是本申请实施例提供的一种组件调用方法的流程示意图,本说明书提供了如实施例或流程图的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的系统或服务器产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。具体地,方法应用于嵌入有内置程序组件的应用程序,应用程序对应运行有程序主进程,内置程序组件对应运行有组件主进程和服务进程;如图2所示,方法可以包括下述步骤S201-S205。
S201:响应于程序主进程针对组件主进程的调用请求,通过进程间通信组件中调用请求对应的第一通信接口和第一实现接口将调用请求传输至组件主进程。
具体地,程序主进程是指应用程序运行的主进程,是响应于应用程序启动而创建的,组件主进程为内置程序组件运行的主进程,是响应于内置程序组件的启动而创建的,服务进程与组件主进程通信,相当于组件主进程的子进程,以用于内置程序组件的运行。示例性地,应用程序可以为通信服务应用程序,内置程序组件可以为嵌入通信服务应用程序的内置浏览器组件。进程间通信组件用于程序主进程与组件主进程间的跨进程通信,接收主程序进程对组件主进程的调用以及将组件主进程的各种回调方法传输至主程序进程。
具体地,程序主进程和组件主进程的执行体不同,即执行文件也不同,组件主进程和服务进程的执行体相同,即执行文件相同,且组件主进程和服务进程于沙箱中运行,内置程序组件的执行文件链接至沙箱(如cef_sandbox)的静态库链接(MT)。沙箱是是一种按照安全策略限制程序行为的执行环境,通过开启沙箱可以提升组件的安全性,减少系统被漏洞攻击的可能性。若组件主程序和服务程序的执行体不同,会导致沙箱无法启动,本申请通过将组件主进程与程序主进程解耦分离,不以程序主进程作为宿主,以使组件主进程和服务进程满足沙箱运行条件,有效降低被攻击风险,同时,将内置程序组件的逻辑与程序主进程分离,便于内置程序组件的独立管理,不依赖应用程序的版本更新和配置,有利于内置程序组件的独立更新和版本的灵活控制,以应对0-day等攻击,并且解决了开启沙箱和内置程序组件热更新的前置障碍。一个示例中,以内置浏览器组件为例,本申请的内置组件架构如图3所示,AppWork.exe为程序主进程对应的执行文件,AppWorkweb.exe为浏览器组件主进程(Browser process)和服务进程(Render process)的可执行文件,程序主进程不再加载内置浏览器组件的动态库(如cef动态库),而是组件主进程进行动态库的引入和加载,程序主进程与组件主进程间通过进程间通信(IPC)组件连接,以实现组件调用和进程通信。并且无需对主程序的编译方式进行针对内置程序组件的链接适配,降低编译工作量。
具体地,进程间通信组件能够实现程序主进程和组件主进程间的双向通信,底层采用双向通信的消息管道,采用预设接口定义语言(IDL)进行调用请求或调用反馈对应的序列化操作,定义通信接口以生成接口类,以生成程序主进程侧的第一通信接口和组件主进程侧的第二通信接口,并在另一侧进程实现接口,第一实现接口为第一通信接口在组件主进程侧的实施,第二实现接口为第二通信接口在组件主进程侧的实施。第一通信接口和第一实现接口形成连接以用于程序主进程到组件主进程方向的数据传递,第二通信接口与第二实现接口间形成连接以用于组件主进程到程序主进程方向的数据传递。如此,在进程间通信组件内直接通过接口进行通信,其两侧无需进行原始字节流通信,进而无需进行大量的命令字定义和传递复杂数据类型来达到调用包装和解析,在接口或者传递的数据结构发生变化时,增加定义的接口类既能够实现双向通信,降低维护和改造成本。同时,预定义调用请求对应的接口通道,能够提升通信效率和可维护性。
具体地,第一通信接口是基于调用请求对应的接口类,结合预定义的对象创建方法对调用请求的调用方法进行定义对象创建所生成的,位于程序主进程侧。这里的将调用请求传输至组件主进程具体可以指将第一通信接口中创建的定义对象(如结构或对象)等信息传递至第一实现接口,通过第一实现接口将相应的调用方法等数据传递至组件主进程。
一些实施例中,在S201之前,方法还包括S301-S303:
S301:响应于组件主进程的启动,基于进程间通信组件创建双向通信的消息管道,消息管道持有成对设置的第一关联标识和第二关联标识;
S303:通过程序主进程以消息管道为通信通道向组件主进程发送第二关联标识,以使组件主进程基于第二关联标识建立与程序主进程间消息管道连接。
具体地,每一消息管道持有一对第一关联标识和第二关联标识,第一关联标识和第二关联标识间执行同一对象或资源的引用,其一用于接收写的数据,另一用于将写入的数据读出,以实现数据收发。创建消息管道后,程序主进程向组件主进程发送携带第二关联标识的邀请消息,以使组件主进程接收到邀请信息以后读取第二关联标识,并基于第二关联标识和第一关联标识间的关系建立与程序主进程的通信连接。后续的通信接口与实现接口间基于消息管道通信,如第一通信接口与第一实现接口,以及第二通信接口与第二实现接口。如此,通过双向消息管道通信,动态维护通信接口和实现接口,将程序主进程和组件主进程间的调用和回调相当于同一进程在执行,实现跨进程的高效通信。
S203:通过组件主进程执行调用请求,得到调用请求的调用反馈。
具体地,调用反馈可以为调用请求的回调。组件主进程获取到调用请求中所需执行的方法,以执行相应的操作,如与服务进程通信进行服务调用(如网页渲染),或直接向服务器端发送请求,如数据请求等,进而得到调用反馈。
S205:通过进程间通信组件中调用反馈对应的第二通信接口和第二实现接口将调用反馈传输至程序主进程。
具体地,第二通信接口是基于调用反馈对应的接口类,结合预定义的对象创建方法对调用反馈的回调方法进行定义对象创建所生成的,位于组件主进程侧。这里的将调用反馈传输至程序主进程,是指通过将第二通信接口中创建的定义对象等信息传递至第二实现接口,通过第二实现接口将相应的回调数据传递至程序主进程。
以内置浏览器组件为例,程序主进程(APP process)需要发起对组件主进程(browser process)的主动调用,如加载url;另一方面,browser process的回调需要传递到APP process,如网页的加载状态等。通过引入进程间通信组件,当APP process与browser process相互调用时,根据调用的方向,在两侧分别定义接口和实现接口,即可实现两侧的相互调用,并通过预设接口定义语言(如mojom IDL)将调用和回调的对象统一接口化,并根据调用方向,在通信双方的两侧分别定义通信接口(如图4中的第一通信接口(BrowserPtr)和第二通信接口(UIHandlerPtr)),以及实现接口(如图4中的第一实现接口(BrowserImpl)和第二实现接口(UIHandlerImpl)),以实现不同方向的调用和数据传输。
一些实施例中,进程间通信组件中默认为异步调用,参考图4,APP process将网页加载请求(LoadURL)发送至BrowserPtr并传递至BrowserImpl,进而通过browser process执行后生成OnLoadStart的加载状态反馈,并通过UIHandlerPtr传递至UIHandlerImpl,进而到达APP process。一个示例中,在Cef浏览器场景下,异步调用方法中针对OnLoadStart定义的第二通信接口可以为void OnLoadStart(CefRefPtr<CefBrowser>browse, inttype)。
一些实施例中,需在程序主进程和组件主进程间进行同步调用,相应地,在调用请求为同步调用请求的情况下,第一通信接口携带有同步调用标识,以指示进程间通信组件基于阻塞调用方式执行调用请求。同步调用标识可以例如为关键字[Sync],示例性地,同步方法为bool OnBeforeResourseLoad(CefRefPtr<CefBrowser>browser),在定义对应的第一通信接口时,携带关键字[Sync]即可转换为同步接口,在进程间通信组件的底层会以阻塞的方式来调用。如此,通过简单的定义标识既能够实现同步调用和异步调用的区分,提升进程间通信转换和组件调用的灵活性和便利性。
可以理解地,针对内置程序组件的调用或回调可能存在其自定义的数据类型或结构,若采用命令管道等方式通信,则需在命令管道的两边通过大量命令字的定义以及对传递的复杂数据类型进行包装和解析,进而引入很大的工作量,并且接口或者传递的数据结构发生变化时,维护和改造成本高,同时还需要设置复杂方法维护两侧对象的映射关系以及生命周期。本申请实施例中通过预先知晓的调用方法和回调方法的分析信息,基于分析信息中的方法调用请求和调用反馈的调用类型信息确定调用请求、调用反馈与通信接口类型间的关系和转换方式。相应地,若调用类型信息指示为基础调用类型,即调用请求和调用反馈为基础调用类型,第一通信接口和第二通信接口为基于预设接口定义语言定义的基础接口;基础调用类型是指不携带参数或只有基础类型参数的调用,该调用不存在返回,基础类型参数如int、string等,调用请求例如为void LoadUrl(const std::string url);则直接在进程间通信组件中将调用请求的内容创建为普通接口的定义对象,以实现调用请求的接口化,得到创建了定义对象的通信接口。
进一步地,若调用请求和调用反馈为包括沙箱自定义对象的特殊调用类型,第一通信接口和第二通信接口为基于预设接口定义语言对沙箱自定义对象进行预定义转换的特异性接口。沙箱自定义对象是指基于沙箱运行的内置程序组件所自定义的特殊数据类型、参数或结构等,如CefBrowser和CefRequestCallback,特殊调用类型的调用请求例如为void OnRequestPermission(CefRefPtr<CefBrowser>browser,CefRefPtr<CefRequestCallback>callback);对沙箱自定义对象进行基于预设接口定义语言的转换,以转换为结构或接口,参数中的接口也可以按照不同调用的方向在调用的两边进行定义或实现。如CefRequestCallback中提供了操作方法accept和reject,可以继续将CefRequestCallback定义为接口,作为参数进行传递,以在相应的接收端进程的实现中,对接口的方法进行调用。
如此,对于程序主进程和组件主进程间的调用和回调,都基于调用类型信息的划分进行模式化的转换,直接转为相应的IPC接口,不需要进行繁复的包装和转换,实现进程间的通信和调用,无需对原代码进行大规模的改动,保持了原先的业务代码结构和接口的定义,便于模式化地进行开发,同时提高了代码的可读性、可维护性和可扩展性。
一些实施例中,参考图5,方法还包括S401-S403:
S301:确定调用反馈对应的线程类别;
S303:基于线程类别对应的通信线程初始化第二通信接口,并发送绑定请求信息至程序主进程,以使程序主进程基于绑定请求信息将第二通信接口绑定至第二实现接口,建立第二通信接口与第二实现接口间的连接。
具体地,线程类别可以包括主线程和服务线程。示例性地,内置浏览器组件对应的线程类别可以包括TID_UI和TID_IO,TID_UI指示通信线程是浏览器的主线程,TID_IO 指示通信线程为负责处理IPC消息以及网络通信的服务线程。可以理解地,组件主进程侧的不同回调发生在不同的线程中,比如LifeSpanHandler中网页加载不同时间点的回调事件(如OnLoadStart)是在TID_UI线程,而RequestResourceHandler相关的回调(如OnBeforeResourceLoad)是在TID_IO线程进行的。
具体地,不同线程类别的通信线程服务于不同的消息管道,以在相应消息管道中进行通信接口与实现接口间的信息传输。
具体地,绑定请求信息携带有将第二通信接口与第二实现接口关联的指示信息,通过绑定请求信息实现第二通信接口、第二实现接口以及通信线程间的绑定。预定义调用请求的调用反馈所对应的线程类别,进而采用该线程类别的通信线程进行第二通信接口的初始化,创建接口中的定义对象,以及在程序主进程侧进行第二通信接口的实现以生成第二实现接口,并发送绑定请求信息发送至主程序进程,实现接口化的对象绑定,以使其在相应的通信线程中使用。示例性地,参考图8,在browser process侧,在内置程序组件(AppWorkWeb)的UI线程初始化UI_handler_ptr,在IO线程初始化IO_handler_ptr,并将相应的述绑定请求信息(request)发送到程序主进程侧,在应用程序的主程序(AppWork)中将browser侧不同线程的通信接口等处理对象与主程序侧的实现接口(UI_handler_Impl和IO_handler_Impl)、以及相应的线程绑定起来,以将不同线程的回调拆分到不用的通信接口中进行处理;如此,当组件主进程回调在不同的通信线程时,在组件主进程侧通过运行在不同线程的接口接收并分发,而在程序主进程中,直接在相应通信接口或实现接口处理即可,无需关心后续返回至组件主进程侧需要切换到哪一线程,以顺利实现组件主进程与程序主进程的消息循环融合,在组件主进程与程序主进程侧的都不需要再产生不同线程配位的维护开销,让组件主进程中不同线程的回调都可在主程序中正常运行。
以图9为例,在AppWorkWeb侧通过UI线程(Thread)初始化BrowserUIHanderptr,并绑定其相应的定义对象OnLoadStart和OnTitleChange,通过绑定请求消息绑定至AppWork侧的BrowserUIHanderImpl,以及通过IO线程初始化BrowserIOHanderptr,并绑定其相应的定义对象OnBeforeResourceLoad ,通过绑定请求消息绑定至Appwork侧的BrowserIOHanderImpl,实现两侧接口和相应对象、以及线程间的绑定,在AppWork侧只需通过绑定关系接收回调即可,无需关系线程匹配。
一些实施例中,调用反馈携带有线程标识;具体地,线程标识用于指示通信线程的线程类别,相应地,S205可以包括:
S2051:基于线程标识确定调用反馈对应的目标通信线程;
S2052:通过目标通信线程将调用反馈分发至调用反馈对应的第二通信接口,以通过第二通信接口与第二实现接口间的连接将调用反馈传输至程序主进程。
具体地,通过绑定后可以知晓各接口对应的目标通信线程,结合线程标识确定调用反馈对应的目标通信线程,并结合前述的绑定关系确定其所关联的第二通信接口,以及其相应的第二实现接口,进而实现回调。如此,在跨进程调用中确保相关调用能够在预期的线程中进行,避免调用异常。
一些实施例中,参考图6,方法还包括S401-S403:
S401:在程序主进程和组件主进程间的通信过程中,响应于第二通信接口或第一实现接口中定义对象的对象引用,组件主进程向程序主进程发送对象引用信息,以使程序主进程对对象引用对应的定义对象进行引用计数;
S403:响应于定义对象的引用计数为零,通过组件主进程析构定义对象。
具体地,在调用反馈的各回调方法中,均需在组件主进程侧创建定义对象到第二通信接口,主程序进程通过进程间通信组件对该定义对象进行各种相应的操作;在调用过程中,程序主进程侧也需创建定义对象至第一通信接口,并在第一实现接口实现,组件主进程侧通过进程间通信组件对该定义对象进行操作,通过定义一组模板,通过引用计数的方式,在组件主进程中的进行定义对象的被引用或者去引用时,在程序主进程中该定义对象的原始对象进行引用计数增加,在完成调用反馈并释放该定义对象时,向程序主进程发送对象释放信息,以使其减少引用计数,以保持对象生命周期的一致性,在对象的引用计数为0后,在进行对象析构,释放接口,能够避免程序主进程还需要对定义对象操作的时候,在组件主进程侧已被析构的问题发生。
可以理解地,响应于第一通信接口或第二实现接口中定义对象的对象引用,程序主进程向组件主进程发送对象引用信息,以使组件主进程对对象引用对应的定义对象进行引用计数;响应于定义对象的引用计数为零,通过程序主进程析构定义对象。
一些实施例中,参考图7,方法还包括S501-S505:
S501:响应于内置程序组件的更新检测事件,获取内置程序组件的更新配置文件;
S503:若确定更新配置文件中存在与应用程序匹配的更新包信息,基于更新包信息进行本地文件检测;
S505:若未检测到本地存在与更新包信息对应的目标更新文件,下载目标更新文件并基于目标更新文件进行内置程序组件的更新。
具体地,内置程序组件与应用程序的主程序解耦,以通过不同的执行文件进行进程运行和独立管理,相应能够实现内置程序组件的单独更新,进而通过热更新方式触发和实现独立模块的下载更新,无需依赖主程序版本,当发生安全问题或者功能升级时,可独立进行更新和替换,更加灵活。
具体地,参考图10,更新检测事件可以响应于组件主进程启动触发,或者也可以在主进程启动后的预设时间后触发,如10min后,进而下载更新配置文件到设置的路径中;然后对更新配置文件进行校验,以校验更新配置文件是否合法,示例性地,校验方式可以为遍历更新配置文件中所有节点以生成字符串,将其与更新配置文件中的签名字符串对比,若一致则确定合法,反之不合法;进一步地,判断是否更新配置文件中是否存在匹配的更新包信息,示例性地,判断当前应用程序的本是否在热更新模块配置的最大最小范围内,以及判断当前vid是否在vid配置范围内,若是,则获取可下载的热更新模块版本的更新包信息,如存在多个更新文件的情况下返回json列表中第一个更新包信息;进一步地,检测本地是否存在与更新包信息相应的目标更新文件,若存在,则执行文件的完整性校验,通过遍历目标更新文件的文件目录,根据文件名、大小、文件版本和修改时间等生成快速校验信息,与本地存储的快速校验信息进行对比,若对比结果一致,即确定完整则结束热更新流程,在一定周期时长后再次循环触发更新检测事件,若对比结果不一致,即不完整,则下载目标更新文件,解压安装到热更新目录,然后生成快速校验信息并存储,结束热更新流程。若不存在匹配的更新包信息,则结束热更新流程。本申请的技术方案能够应用于大型项目的内置浏览器架构改造,便捷地进行数据结构转换以及解决调用与回调的线程问题,从而为浏览器沙箱开启创造条件。
本申请实施例还提供了一种组件调用装置12,应用于嵌入有内置程序组件的应用程序,应用程序对应运行有程序主进程,内置程序组件对应运行有组件主进程和服务进程;如图11所示,图11示出了本申请实施例提供的一种组件调用装置的结构示意图,装置可以包括下述模块。
调用模块10于响应于程序主进程针对组件主进程的调用请求,通过进程间通信组件中调用请求对应的第一通信接口和第一实现接口将调用请求传输至组件主进程;程序主进程和组件主进程的执行体不同,组件主进程和服务进程的执行体相同且于沙箱中运行;
执行模块20:用于通过组件主进程执行调用请求,得到调用请求的调用反馈;
回调模块30:用于通过进程间通信组件中调用反馈对应的第二通信接口和第二实现接口将调用反馈传输至程序主进程;进程间通信组件采用预设接口定义语言进行调用请求或调用反馈对应的序列化操作,以生成程序主进程侧的第一通信接口和组件主进程侧的第二通信接口,第一实现接口为第一通信接口在组件主进程侧的实施,第二实现接口为第二通信接口在组件主进程侧的实施。
一些实施例中,若调用请求和调用反馈为基础调用类型,第一通信接口和第二通信接口为基于预设接口定义语言定义的基础接口;
若调用请求和调用反馈为包括沙箱自定义对象的特殊调用类型,第一通信接口和第二通信接口为基于预设接口定义语言对沙箱自定义对象进行预定义转换的特异性接口。
一些实施例中,在调用请求为同步调用请求的情况下,第一通信接口携带有同步调用标识,以指示进程间通信组件基于阻塞调用方式执行调用请求。
一些实施例中,回调模块30包括:
线程确定子模块:用于基于线程标识确定调用反馈对应的目标通信线程;
反馈子模块:用于通过目标通信线程将调用反馈分发至调用反馈对应的第二通信接口,以通过第二通信接口与第二实现接口间的连接将调用反馈传输至程序主进程。
一些实施例中,装置还包括:
线程类别确定模块:用于确定调用反馈对应的线程类别;
连接建立模块:用于基于线程类别对应的通信线程初始化第二通信接口,并发送绑定请求信息至程序主进程,以使程序主进程基于绑定请求信息将第二通信接口绑定至第二实现接口,建立第二通信接口与第二实现接口间的连接。
一些实施例中,装置还包括:
管道创建模块:用于在响应于程序主进程针对组件主进程的调用请求,通过进程间通信组件中调用请求对应的第一通信接口和第一实现接口将调用请求传输至组件主进程之前,响应于组件主进程的启动,基于进程间通信组件创建双向通信的消息管道,消息管道持有成对设置的第一关联标识和第二关联标识;
管道连接模块:用于通过程序主进程以消息管道为通信通道向组件主进程发送第二关联标识,以使组件主进程基于第二关联标识建立与程序主进程间消息管道连接,通信接口与实现接口间基于消息管道通信。
一些实施例中,装置还包括:
引用计数模块:用于在程序主进程和组件主进程间的通信过程中,响应于第二通信接口或第一实现接口中定义对象的对象引用,组件主进程向程序主进程发送对象引用信息,以使程序主进程对对象引用对应的定义对象进行引用计数;
析构模块:用于响应于定义对象的引用计数为零,通过组件主进程析构定义对象。
一些实施例中,装置还包括:
配置文件获取模块:用于响应于内置程序组件的更新检测事件,获取内置程序组件的更新配置文件;
本地文件检测模块:用于若确定更新配置文件中存在与应用程序匹配的更新包信息,基于更新包信息进行本地文件检测;
更新模块:用于若未检测到本地存在与更新包信息对应的目标更新文件,下载目标更新文件并基于目标更新文件进行内置程序组件的更新。
需要说明的是,上述装置实施例与方法实施例基于相同的实施方式。
本申请实施例提供了一种组件调用设备,该调度设备可以为终端或服务器,包括处理器和存储器,该存储器中存储有至少一条指令或至少一段程序,该至少一条指令或该至少一段程序由该处理器加载并执行以实现如上述方法实施例所提供的组件调用方法。
存储器可用于存储软件程序以及模块,处理器通过运行存储在存储器的软件程序以及模块,从而执行各种功能应用以及组件调用。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、功能所需的应用程序等;存储数据区可存储根据设备的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器还可以包括存储器控制器,以提供处理器对存储器的访问。
本申请实施例所提供的方法实施例可以在移动终端、计算机终端、服务器或者类似的运算装置等电子设备中执行。图12是本申请实施例提供的一种组件调用方法的电子设备的硬件结构框图。如图12所示,该电子设备900可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(Central Processing Units,CPU)910(处理器910可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器930,一个或一个以上存储应用程序923或数据922的存储介质920(例如一个或一个以上海量存储设备)。其中,存储器930和存储介质920可以是短暂存储或持久存储。存储在存储介质920的程序可以包括一个或一个以上模块,每个模块可以包括对电子设备中的一系列指令操作。更进一步地,中央处理器910可以设置为与存储介质920通信,在电子设备900上执行存储介质920中的一系列指令操作。电子设备900还可以包括一个或一个以上电源960,一个或一个以上有线或无线网络接口950,一个或一个以上输入输出接口940,和/或,一个或一个以上操作系统921,例如Windows ServerTM,Mac OS XTM,UnixTM, LinuxTM,FreeBSDTM等等。
输入输出接口940可以用于经由一个网络接收或者发送数据。上述的网络具体实例可包括电子设备900的通信供应商提供的无线网络。在一个实例中,输入输出接口940包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,输入输出接口940可以为射频(RadioFrequency,RF)模块,其用于通过无线方式与互联网进行通讯。
本领域普通技术人员可以理解,图12所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,电子设备900还可包括比图12中所示更多或者更少的组件,或者具有与图12所示不同的配置。
本申请的实施例还提供了一种计算机可读存储介质,存储介质可设置于电子设备之中以保存用于实现方法实施例中一种组件调用方法相关的至少一条指令或至少一段程序,该至少一条指令或该至少一段程序由该处理器加载并执行以实现上述方法实施例提供的组件调用方法。
可选地,在本实施例中,上述存储介质可以位于计算机网络的多个网络服务器中的至少一个网络服务器。可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各种可选实现方式中提供的方法。
由上述本申请提供的组件调用方法、装置、设备、服务器、终端、存储介质和程序产品的实施例可见,本申请的技术方案响应于程序主进程针对组件主进程的调用请求,通过进程间通信组件中调用请求对应的第一通信接口和第一实现接口将调用请求传输至组件主进程;程序主进程和组件主进程的执行体不同,组件主进程和服务进程的执行体相同且于沙箱中运行;通过组件主进程执行调用请求,得到调用请求的调用反馈;通过进程间通信组件中调用反馈对应的第二通信接口和第二实现接口将调用反馈传输至程序主进程;以将组件主进程从程序主进程中剥离,与服务进程以相同的执行体运行于隔离环境中,提升程序运行安全性;并且进程间通信组件采用预设接口定义语言进行调用请求或调用反馈对应的序列化操作,以生成程序主进程侧的第一通信接口和组件主进程侧的第二通信接口,第一实现接口为第一通信接口在组件主进程侧的实施,第二实现接口为第二通信接口在组件主进程侧的实施,如此,通过进程间通信组件进行调用请求和调用反馈的接口化,解决组件主进程剥离后自定义结构和对象的传递问题,实现隔离运行的组件模块的跨进程高效通信和组件调用,无需针对内置程序组件中大量的自定义结构进行复杂包装和解析,降低维护和改造成本。
需要说明的是:上述本申请实施例先后顺序仅仅为了描述,不代表实施例的优劣。且上述对本申请特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本申请中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、设备和存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指示相关的硬件完成,的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (11)
1.一种组件调用方法,应用于嵌入有内置程序组件的应用程序,所述应用程序对应运行有程序主进程,所述内置程序组件对应运行有组件主进程和服务进程;其特征在于,所述方法包括:
响应于所述程序主进程针对所述组件主进程的调用请求,通过进程间通信组件中所述调用请求对应的第一通信接口和第一实现接口将所述调用请求传输至所述组件主进程;所述程序主进程和所述组件主进程的执行体不同,所述组件主进程和所述服务进程的执行体相同且于沙箱中运行;
通过所述组件主进程执行所述调用请求,得到所述调用请求的调用反馈;
通过所述进程间通信组件中所述调用反馈对应的第二通信接口和第二实现接口将所述调用反馈传输至所述程序主进程;所述进程间通信组件采用预设接口定义语言进行所述调用请求或所述调用反馈对应的序列化操作,以生成所述程序主进程侧的第一通信接口和所述组件主进程侧的第二通信接口,所述第一实现接口为所述第一通信接口在所述组件主进程侧的实施,所述第二实现接口为所述第二通信接口在所述组件主进程侧的实施。
2.根据权利要求1所述的方法,其特征在于,若所述调用请求和所述调用反馈为基础调用类型,所述第一通信接口和所述第二通信接口为基于所述预设接口定义语言定义的基础接口;
若所述调用请求和所述调用反馈为包括沙箱自定义对象的特殊调用类型,所述第一通信接口和所述第二通信接口为基于所述预设接口定义语言对所述沙箱自定义对象进行预定义转换的特异性接口。
3.根据权利要求1所述的方法,其特征在于,在所述调用请求为同步调用请求的情况下,所述第一通信接口携带有同步调用标识,以指示所述进程间通信组件基于阻塞调用方式执行所述调用请求。
4.根据权利要求1所述的方法,其特征在于,所述调用反馈携带有线程标识;所述通过所述进程间通信组件中所述调用反馈对应的第二通信接口和第二实现接口将所述调用反馈传输至所述程序主进程包括:
基于所述线程标识确定所述调用反馈对应的目标通信线程;
通过所述目标通信线程将所述调用反馈分发至所述调用反馈对应的第二通信接口,以通过所述第二通信接口与所述第二实现接口间的连接将所述调用反馈传输至所述程序主进程。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
确定所述调用反馈对应的线程类别;
基于所述线程类别对应的通信线程初始化所述第二通信接口,并发送绑定请求信息至所述程序主进程,以使所述程序主进程基于所述绑定请求信息将所述第二通信接口绑定至所述第二实现接口,建立所述第二通信接口与所述第二实现接口间的连接。
6.根据权利要求1-5中任一项所述的方法,其特征在于,在所述响应于所述程序主进程针对所述组件主进程的调用请求,通过进程间通信组件中所述调用请求对应的第一通信接口和第一实现接口将所述调用请求传输至所述组件主进程之前,所述方法还包括:
响应于所述组件主进程的启动,基于所述进程间通信组件创建双向通信的消息管道,所述消息管道持有成对设置的第一关联标识和第二关联标识;
通过所述程序主进程以所述消息管道为通信通道向所述组件主进程发送所述第二关联标识,以使所述组件主进程基于所述第二关联标识建立与所述程序主进程间消息管道连接,通信接口与实现接口间基于所述消息管道通信。
7.根据权利要求1-5中任一项所述的方法,其特征在于,所述方法还包括:
在所述程序主进程和所述组件主进程间的通信过程中,响应于所述第二通信接口或所述第一实现接口中定义对象的对象引用,所述组件主进程向所述程序主进程发送对象引用信息,以使所述程序主进程对所述对象引用对应的定义对象进行引用计数;
响应于所述定义对象的引用计数为零,通过所述组件主进程析构所述定义对象。
8.根据权利要求1-5中任一项所述的方法,其特征在于,所述方法还包括:
响应于所述内置程序组件的更新检测事件,获取所述内置程序组件的更新配置文件;
若确定所述更新配置文件中存在与所述应用程序匹配的更新包信息,基于所述更新包信息进行本地文件检测;
若未检测到本地存在与所述更新包信息对应的目标更新文件,下载所述目标更新文件并基于所述目标更新文件进行所述内置程序组件的更新。
9.一种组件调用装置,应用于嵌入有内置程序组件的应用程序,所述应用程序对应运行有程序主进程,所述内置程序组件对应运行有组件主进程和服务进程;其特征在于,所述装置包括:
调用模块:用于响应于所述程序主进程针对所述组件主进程的调用请求,通过进程间通信组件中所述调用请求对应的第一通信接口和第一实现接口将所述调用请求传输至所述组件主进程;所述程序主进程和所述组件主进程的执行体不同,所述组件主进程和所述服务进程的执行体相同且于沙箱中运行;
执行模块:用于通过所述组件主进程执行所述调用请求,得到所述调用请求的调用反馈;
回调模块:用于通过所述进程间通信组件中所述调用反馈对应的第二通信接口和第二实现接口将所述调用反馈传输至所述程序主进程;所述进程间通信组件采用预设接口定义语言进行所述调用请求或所述调用反馈对应的序列化操作,以生成所述程序主进程侧的第一通信接口和所述组件主进程侧的第二通信接口,所述第一实现接口为所述第一通信接口在所述组件主进程侧的实施,所述第二实现接口为所述第二通信接口在所述组件主进程侧的实施。
10.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由处理器加载并执行以实现如权利要求1-8中任一项所述的组件调用方法。
11.一种计算机设备,其特征在于,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由所述处理器加载并执行以实现如权利要求1-8中任一项所述的组件调用方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311335532.6A CN117076160B (zh) | 2023-10-16 | 2023-10-16 | 组件调用方法、装置、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311335532.6A CN117076160B (zh) | 2023-10-16 | 2023-10-16 | 组件调用方法、装置、设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117076160A true CN117076160A (zh) | 2023-11-17 |
CN117076160B CN117076160B (zh) | 2024-01-26 |
Family
ID=88715656
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311335532.6A Active CN117076160B (zh) | 2023-10-16 | 2023-10-16 | 组件调用方法、装置、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117076160B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102685303A (zh) * | 2011-03-09 | 2012-09-19 | 腾讯科技(深圳)有限公司 | 通信方法和装置 |
CN104317605A (zh) * | 2014-11-18 | 2015-01-28 | 东方网力科技股份有限公司 | 一种组件运行方法及装置 |
US20160294738A1 (en) * | 2013-11-22 | 2016-10-06 | Beijing Qihoo Technology Company Limited | Method and device for implementing instant messaging |
CN110708366A (zh) * | 2019-09-24 | 2020-01-17 | 深圳市迅雷网络技术有限公司 | 一种插件进程的管理方法及相关方法和相关装置 |
CN111381903A (zh) * | 2020-03-18 | 2020-07-07 | 支付宝(杭州)信息技术有限公司 | 程序运行方法、装置、设备及介质 |
WO2021190469A1 (zh) * | 2020-03-24 | 2021-09-30 | 广州华多网络科技有限公司 | 终端设备及其应用程序接口调用控制方法 |
CN114490266A (zh) * | 2022-01-29 | 2022-05-13 | 北京博睿宏远数据科技股份有限公司 | 一种数据采集方法、装置、设备及存储介质 |
-
2023
- 2023-10-16 CN CN202311335532.6A patent/CN117076160B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102685303A (zh) * | 2011-03-09 | 2012-09-19 | 腾讯科技(深圳)有限公司 | 通信方法和装置 |
US20160294738A1 (en) * | 2013-11-22 | 2016-10-06 | Beijing Qihoo Technology Company Limited | Method and device for implementing instant messaging |
CN104317605A (zh) * | 2014-11-18 | 2015-01-28 | 东方网力科技股份有限公司 | 一种组件运行方法及装置 |
CN110708366A (zh) * | 2019-09-24 | 2020-01-17 | 深圳市迅雷网络技术有限公司 | 一种插件进程的管理方法及相关方法和相关装置 |
CN111381903A (zh) * | 2020-03-18 | 2020-07-07 | 支付宝(杭州)信息技术有限公司 | 程序运行方法、装置、设备及介质 |
WO2021190469A1 (zh) * | 2020-03-24 | 2021-09-30 | 广州华多网络科技有限公司 | 终端设备及其应用程序接口调用控制方法 |
CN114490266A (zh) * | 2022-01-29 | 2022-05-13 | 北京博睿宏远数据科技股份有限公司 | 一种数据采集方法、装置、设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
解绍词 等: "对带有中间主进程CORBA分布式模型的研究", 《计算机工程与设计》, vol. 26, no. 3, pages 740 - 742 * |
Also Published As
Publication number | Publication date |
---|---|
CN117076160B (zh) | 2024-01-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11409949B2 (en) | Mobile device resource provisioning system and method | |
US20070005734A1 (en) | Generically extensible client application | |
CN104636122A (zh) | 一种能力组件的共享方法和设备 | |
CN109683992B (zh) | 用于管理对象的方法和装置 | |
CN117093286A (zh) | 插件生成方法、装置、设备及计算机可读存储介质 | |
CN110457132B (zh) | 一种功能对象的创建方法、装置和终端设备 | |
CN109343970B (zh) | 基于应用程序的操作方法、装置、电子设备及计算机介质 | |
CN108681491B (zh) | 一种文件解耦方法及系统 | |
CN117076160B (zh) | 组件调用方法、装置、设备和存储介质 | |
Liu et al. | A context-aware reflective middleware framework for distributed real-time and embedded systems | |
CN117194068A (zh) | 一种跨进程数据传输方法、系统、设备及存储介质 | |
Mostinckx et al. | Mirror‐based reflection in AmbientTalk | |
CN115658165A (zh) | 用于启动租户插件以及实现进程内通信的方法和装置 | |
KR100494827B1 (ko) | 하드웨어 독립적인 통신 인터페이스를 가지는 분산객체모델 기반의 라디오 서버와 이를 이용한 통신제어방법 | |
CN112631638A (zh) | 终端应用更新方法、装置、存储介质及电子设备 | |
CN117056317B (zh) | 数据处理方法、装置、设备及计算机可读存储介质 | |
CN116719627B (zh) | 数据处理方法、装置、设备及存储介质 | |
CN112256326B (zh) | 信息的处理方法、装置、设备及存储介质 | |
CN116627535A (zh) | 基于规则引擎的任务执行方法、计算机设备和存储介质 | |
CN117194074A (zh) | 实现h5与原生通信的方法、装置和电子设备 | |
CN117389567A (zh) | 多端应用开发方法、装置、介质及设备 | |
CN112099767A (zh) | 一种应用程序的开发方法、服务器及计算机可读存储介质 | |
CN116820626A (zh) | 动态调用原生js的方法及相关设备 | |
CN117793174A (zh) | 基于Netty的声明式长连接双向非阻塞通信方法及系统 | |
Dong | Service oriented architecture for mobile cloud computing |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |