CN112882709A - 基于容器引擎系统的渲染方法、装置、设备以及存储介质 - Google Patents
基于容器引擎系统的渲染方法、装置、设备以及存储介质 Download PDFInfo
- Publication number
- CN112882709A CN112882709A CN202110260854.3A CN202110260854A CN112882709A CN 112882709 A CN112882709 A CN 112882709A CN 202110260854 A CN202110260854 A CN 202110260854A CN 112882709 A CN112882709 A CN 112882709A
- Authority
- CN
- China
- Prior art keywords
- container
- module
- rendering
- rendered data
- instruction
- 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
- 238000009877 rendering Methods 0.000 title claims abstract description 265
- 238000000034 method Methods 0.000 title claims abstract description 140
- 238000013515 script Methods 0.000 claims description 93
- 238000012545 processing Methods 0.000 claims description 77
- 230000008569 process Effects 0.000 claims description 17
- 238000004590 computer program Methods 0.000 claims description 11
- 230000001419 dependent effect Effects 0.000 claims description 8
- 230000000694 effects Effects 0.000 abstract description 47
- 238000004364 calculation method Methods 0.000 abstract description 9
- 238000004891 communication Methods 0.000 description 35
- 238000010586 diagram Methods 0.000 description 26
- 238000004458 analytical method Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 6
- 238000009434 installation Methods 0.000 description 5
- 230000006978 adaptation Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 4
- 230000003993 interaction Effects 0.000 description 4
- 239000011230 binding agent Substances 0.000 description 3
- 230000010354 integration Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000008034 disappearance Effects 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 230000001747 exhibiting effect Effects 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000003825 pressing Methods 0.000 description 1
- 239000000047 product Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/38—Creation or generation of source code for implementing user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/36—Software reuse
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/20—Perspective computation
- G06T15/205—Image-based rendering
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computing Systems (AREA)
- Geometry (AREA)
- Computer Graphics (AREA)
- Stored Programmes (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本公开提供了一种基于容器引擎系统的渲染方法、装置、设备以及存储介质,涉及智能设备、云服务、渲染等计算机技术领域。具体实现方案为:容器引擎系统设置于设备端,所述容器引擎系统包括渲染模块和容器模块。所述渲染模块向容器模块发送所述已渲染数据;所述容器模块基于所述已渲染数据获取容器引擎,利用所述容器引擎基于所述已渲染数据构建容器视图以及生成显示页面。本公开实施例中,利用设备端的容器引擎系统,可以基于已渲染数据获取容器引擎、构建容器视图,进而生成设备端的显示页面,显示所需的渲染效果。由于设备端的容器引擎等可以复用,可以减少渲染所需的计算量,提高渲染速度,优化渲染效果。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及智能设备、云服务、渲染领域。
背景技术
相关技术中,渲染过程主要包括对需要渲染的文件进行编译后转化为用户可见的结果。可以在云端对文件进行编译,再将编译后的代码发送至设备端显示渲染效果。在此过程中,云端和设备端之间需要传输大量的数据,网络、传输速度、数据丢失等因素会影响渲染效果。而设备端进行渲染需要的计算量大,也可能影响渲染效果。
发明内容
本公开提供了一种基于容器引擎系统的渲染方法、装置、设备以及存储介质。
根据本公开的一方面,提供了一种容器引擎系统,设置于设备端,所述系统包括:渲染模块,用于向容器模块发送已渲染数据;容器模块,用于基于所述已渲染数据获取容器引擎,利用所述容器引擎基于所述已渲染数据构建容器视图以及生成显示页面。
根据本公开的另一方面,提供了一种基于容器引擎系统的渲染方法,所述容器引擎系统设置于设备端,所述容器引擎系统包括渲染模块和容器模块,所述方法包括:所述渲染模块向容器模块发送所述已渲染数据;所述容器模块基于所述已渲染数据获取容器引擎,利用所述容器引擎基于所述已渲染数据构建容器视图以及生成显示页面。
根据本公开的另一方面,提供了一种电子设备,包括:
至少一个处理器;以及
与该至少一个处理器通信连接的存储器;其中,
该存储器存储有可被该至少一个处理器执行的指令,该指令被该至少一个处理器执行,以使该至少一个处理器能够执行本公开任一实施例中的方法。
根据本公开的另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,该计算机指令用于使计算机执行本公开任一实施例中的方法。
根据本公开的另一方面,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现本公开任一实施例中的方法。
根据本公开的技术,利用设备端的容器引擎系统,可以基于已渲染数据获取容器引擎,构建容器视图,进而生成设备端的显示页面,显示所需的渲染效果。由于设备端的容器引擎等可以复用,可以减少渲染所需的计算量,提高渲染速度,优化渲染效果。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本公开的限定。其中:
图1是根据本公开一实施例的容器引擎系统的结构示意图;
图2是根据本公开另一实施例的容器引擎系统的结构示意图;
图3是根据本公开一实施例的基于容器引擎系统的渲染方法的流程示意图;
图4是根据本公开另一实施例的基于容器引擎系统的渲染方法的流程示意图;
图5是本公开一实施例的ACE系统设置于智能设备的示意图;
图6是本公开一实施例的跨进程渲染管理模块与客户端通信的示意图;
图7是本公开一实施例的连接流程的一个示意图;
图8是本公开一实施例的请求处理流程的示意图;
图9是本公开一实施例的连接流程的另一示意图;
图10是本公开一实施例的初始化过程的示意图;
图11是本公开一实施例的执行脚本过程的示意图;
图12是本公开一实施例的指令收发服务的一个示意图;
图13是本公开一实施例的指令收发服务的另一个示意图;
图14是本公开一实施例的指令收发服务的另一个示意图;
图15是本公开一实施例的端能力模块与系统服务的关系的示意图;
图16是本公开一实施例的调用端能力的示例的流程示意图;
图17是本公开一实施例的页面容器引擎的工作流程的一个示意图;
图18是本公开一实施例的页面容器引擎的工作流程的另一个示意图;
图19是本公开一实施例的对话框容器引擎的工作流程的示意图;
图20是本公开一实施例的小程序容器引擎的工作流程示意图;
图21是本公开一实施例的组件的示意图;
图22是本公开一实施例的渲染模块的示意图;
图23是本公开一实施例的渲染流程的示意图;
图24是用来实施本公开的实施例的示例电子设备的示意性框图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
图1是根据本公开一实施例的容器引擎系统的结构示意图。该系统可以设置于设备端,该系统可以包括:
渲染模块101,用于向容器模块102发送已渲染数据;
容器模块102,用于基于所述已渲染数据获取容器引擎,利用所述容器引擎基于所述已渲染数据构建容器视图以及生成显示页面。
示例性地,设备端可以包括能够显示的智能设备。例如,带有屏幕各种语音智能设备。设备端的操作系统中可以包括容器引擎系统,该系统可以包括渲染模块和容器模块。渲染模块可以获取已渲染数据。例如,渲染模块接收已渲染数据,或者渲染模块执行接收到的脚本生成已渲染数据。容器模块可以获取多种类型的容器引擎。例如,页面(Page)容器引擎、对话框(Dialog)容器引擎、小程序(Mini App)容器引擎等。容器引擎可以提供脚本运行环境等。容器引擎还可以称为应用容器引擎、应用容器、容器实例、应用容器实例、引擎实例、容器、引擎等。客户端可以包括应用程序、小程序等。
本公开实施例中,利用设备端的容器引擎系统,可以基于已渲染数据获取容器引擎,构建容器视图,进而生成设备端的显示页面,显示所需的渲染效果。由于设备端的容器引擎等可以复用,可以减少渲染所需的计算量,提高渲染速度,优化渲染效果。
图2是根据本公开另一实施例的容器引擎系统的结构示意图。该实施例的系统可以包括上述实施例的系统中的各模块。在一种实施方式,该系统还可以包括:指令处理模块201,用于接收来自云端的渲染指令,对所述渲染指令进行解析得到所述已渲染数据。
例如,云端可以将需要渲染的内容编译成各个渲染指令,发送给设备端的指令收发服务。指令收发服务可以与云端通信,从云端接收渲染指令。渲染指令中可以包括已编译代码,主要包括布局相关的信息等,数据量较少。指令收发服务将来自云端的渲染指令发送至指令处理模块。指令处理模块收到渲染指令后,可以对渲染指令进行解析,得到已渲染数据。这样,云端与设备端之间通过渲染指令实现渲染效果,不需要传输大量的数据内容,通过渲染指令传输较少的数据量即可实现所需的渲染效果。类似的,客户端也可通过渲染指令,传输较少的数据量在设备端实现所需渲染效果。
指令处理模块可以对从云端或客户端接收到的渲染指令(commands)进行解析,并对解析得到的已渲染数据(或称为预渲染数据)进行分发。例如,指令处理模块可以将已渲染数据分发至容器模块;或者分发至渲染模块,通过渲染模块透传至容器模块。
如果指令处理模块收到的渲染指令中包括有效载荷(payload),可以对有效载荷进行拆分得到已渲染数据。有效载荷可以包括需要显示的文字、形状等具体数据。除了解析并拆分得到有效载荷之外,从渲染指令中还可以得到其他需要渲染的内容,进而得到包括有效载荷和其他需要渲染的内容的已渲染数据。渲染指令中的有效载荷可以包括渲染所需的主要信息,例如容器视图信息、布局信息、组件信息等。如果收到的指令中具有有效载荷则对有效载荷进行拆分能够得到渲染所需的主要信息。如果收到的指令中不具有有效载荷,则不需要进行拆分等后续的操作。因此,基于有效载荷能够快速准确地得到渲染所需的主要信息,提高渲染速度,优化渲染效果。
解析得到已渲染数据后,指令处理模块还可以校验已渲染数据的结构完整性。如果已渲染数据的结构完整,并未有缺失,可以将校验通过的已渲染数据分发至容器模块或渲染模块。如果已渲染数据的结构不完整,可以不分发校验未通过的已渲染数据。这样有利于利用完整的已渲染数据展现更好的渲染效果。
已渲染数据可能是经过编码的和/或进行压缩的,对已渲染数据进行解码和/或解压缩后,可以使得容器引擎能够快速准确地确定数据的含义,利用容器引擎创建容器视图,进而生成能够在设备屏幕上展现的显示页面。
本公开实施例,指令处理模块对渲染指令进行解析后,可以得到已渲染数据,进而复用设备端的容器引擎等,实现所需的渲染效果,可以减少渲染所需的计算量,提高渲染速度,优化渲染效果。
在一种实施方式,所述系统还包括:
跨进程处理模块202,用于接收来自客户端的请求,所述请求中包括需要渲染的脚本。
该ACE系统的通信模块可以称为跨进程处理模块,能够与客户端通信。客户端中可以包括通信模块、组件的描述信息的集合等。跨进程处理模块可以与客户端的通信模块建立连接例如安卓接口定义语言(Android Interface Definition Language,AIDL)连接,实现进程间通信。进而,可以复用设备端的容器引擎等,利用设备端的容器引擎实现客户端所需的渲染效果,可以减少渲染所需的计算量,提高渲染速度,优化渲染效果。
在一种实施方式,所述跨进程处理模块还用于向指令处理模块201发送所述脚本;所述指令处理模块201还用于向所述渲染模块101发送所述脚本;所述渲染模块101还用于执行所述脚本生成所述已渲染数据。
示例性地,跨进程处理模块可以调用指令处理模块向渲染模块发送脚本。渲染模块中的脚本引擎例如V8可以执行该脚本得到已渲染数据。渲染模块可以向容器模块发送已渲染数据。容器模块可以利用已渲染数据绘制显示页面。该系统基于脚本具有灵活性,能够提供更好的操作体验。
在一种实施方式,所述跨进程处理模块202还用于基于调用者进程标识、调用者包名、用户身份证明(User Identification,UID)中的至少之一进行鉴权;在鉴权通过的情况下,获取所述调用者类型对应权限的远程操作对象;向所述客户端返回所述远程操作对象。例如,跨进程处理模块向客户端返回的远程操作对象可以为绑定(binder)对象或interface接口实例等。在鉴权失败的情况下,跨进程处理模块可以向客户端返回鉴权失败的通知,可以不继续执行客户端本次的请求。
通过鉴权能够保证系统安全性,主要处理鉴权通过的客户端的请求,减少不必要的处理,提高渲染速度。此外,客户端与设备端可以利用远程操作对象进行进程之间的通信(可以简称进程间通信或进程通信)。
在操作系统中,客户端与应用容器引擎系统建立AIDL连接后,可以使的程序实现进程之间的通信(Inter-Process Communication,IPC,简称进程间通信或进程通信)。PID可以是操作系统中的进程识别号。操作系统中每打开一个程序会创建一个进程ID,即PID。跨进程处理模块可以判断调用者PID是否是已经验证过的PID。如果是,可以判定鉴权成功。在利用调用者PID鉴权成功的情况下,可以获取调用者类型。如果调用者PID是没有验证过的PID,可以判定鉴权失败,也可以继续采用其他方式进行鉴权。调用者PID可以是客户端的PID,基于调用者进程标识可以快速准确的进行鉴权。调用者类型可以包括客户端应用、云端应用等。
示例性地,可以先利用PID进行鉴权,在PID鉴权失败后,再利用包名进行鉴权。也可以不利用PID进行鉴权,而是直接利用包名进行鉴权。从获取远程操作对象的请求中获取调用者包名例如CallerPackageName。从包名中可以解析得到客户端的应用签名,可以验证该应用签名是否合法。如果合法,判定鉴权成功;如果不合法,判定鉴权失败。可以预先设置白名单,如果应用签名在白名单中,则表示合法,否则表示不合法。利用包名中的应用签名进行鉴权,可以保证调用者的合法性,有利于对调用者进行灵活地管理,保证系统安全性。
此外,也可以利用其它信息进行鉴权,例如用户身份证明(User Identification,UID)等。
在鉴权通过后,跨进程处理模块可以利用调用者类型获取远程操作对象,例如binder对象或interface实例等。跨进程处理模块基于调用者类型可以确定端能力的权限等级,将调用者类型对应的权限等级的远程操作对象返回给客户端。客户端可以通过远程操作对象初始化渲染所需的容器引擎。
在一种实施方式,所述系统还包括:
设备端能力模块203,用于接收来自所述渲染模块101的端能力调用指令,所述端能力调用指令用于调用所述设备端的服务能力;
所述渲染模块101还用于运行所述脚本生成所述端能力调用指令,和/或从所述已渲染数据中获取所述端能力调用指令。
示例性地,设备端能力模块可以提供各种端能力(也可以称为技能),支持设备端在渲染过程中各种调用端能力。例如麦克风、扬声器、摄像机、人脸识别、语音识别、手势识别、注视识别、云服务等。设备端系统服务中可以支持各种端能力,例如麦克风、扬声器、摄像机、人脸识别、语音识别、手势识别、注视识别、云服务等。
例如,如果需要在渲染某个网站页面时,播放音乐,可以向扬声器发送调用指令。
再如,如果需要在渲染某个小程序时打开摄像机,可以向摄像机发送调用指令。
再如,如果需要在渲染某个对话框时实现人脸识别,可以向人脸识别服务发送调用指令。
本实施例设备端能力模块可以基于来自渲染模块的调用指令调用对应的服务能力,在设备端进行渲染时支持端能力的调用,可以展现丰富的渲染效果。
在一种实施方式,所述设备端能力模块203还用于基于所述端能力调用指令所调用的服务能力,向所述渲染模块101返回所述服务能力对应的已渲染数据;
所述渲染模块101,还用于向所述容器模块102发送所述服务能力对应的已渲染数据;
所述容器模块102,还用于基于所述服务能力对应的已渲染数据获取所述服务能力的容器引擎,利用所述服务能力的容器引擎构建所述服务能力的容器视图,以及生成所述服务能力的显示页面。
示例性地,如果设备端能力模块基于端能力调用指令所调用的设备端的服务能力具有特定的渲染效果,可以向渲染模块返回所调用的设备端的服务能力对应的脚本、渲染指令或已渲染数据等信息中至少之一。渲染模块可以对收到的信息进行相应的处理后发送至容器模块。由容器模块基于已渲染数据获取所调用的服务能力的容器引擎,利用该容器引擎构建所调用的服务能力的容器视图,以及生成所调用的服务能力的显示页面。例如,打开麦克风的调用命令的渲染效果包括带有麦克风图像的局部显示的动画,设备端能力模块可以向渲染模块发送该动画对应的已渲染数据。渲染模块可以获取该动画所需的容器引擎例如对话框容器引擎。在对话框容器引擎中可以基于已渲染数据中的视图信息构建容器视图,并基于组件信息运行组件的可执行代码,得到显示页面。
本实施例能够利用设备端的容器引擎,在设备端显示端能力对应的渲染效果,提高资源利用率,展现丰富的渲染效果。
在一种实施方式,所述系统还包括:
客户端204,用于向跨进程处理模块202发送以下请求的至少之一:
连接请求,用于请求对所述客户端204进行鉴权和建立连接;
初始化请求,用于请求初始化所述脚本的运行环境和引用依赖资源;
脚本执行请求,用于请求执行所述脚本得到所述已渲染数据。
示例性地,在本公开实施例中,客户端可以包括能够在操作系统中运行的应用程序(APP)、小程序(Mini App或Applet)等。客户端的安装包例如APK可以保存在云端。如果需要在设备端运行该客户端,可以从云端下载该客户端的安装包后,在设备端安装后运行或直接运行。客户端可以与跨进程处理模块相通信,向跨进程处理模块发送需要渲染的脚本、渲染指令、已渲染数据的至少之一。
示例性地,在客户端与容器引擎系统的交互过程中,客户端可以向容器引擎系统发送多种类型的请求。对于不同的请求,容器引擎系统可以进行不同的处理,示例如下:
示例1、客户端向容器引擎系统的跨进程处理模块发送连接请求,请求跨进程处理模块对客户端进行鉴权和建立连接。鉴权通过并且建立连接之后,客户端和跨进程处理模块可以进行进程间通信。
示例2、客户端向容器引擎系统的跨进程处理模块发送初始化请求,请求容器模块初始化客户端需要渲染的脚本的运行环境和引用依赖资源。例如,在客户端与跨进程处理模块建立连接后,如果跨进程处理模块接收到初始化请求,跨进程处理模块可以调用容器引擎系统的容器模块来初始化容器引擎,或者通过渲染模块向容器引擎系统的容器模块发送初始化请求以初始化容器引擎。容器模块初始化容器引擎,可以得到客户端需要渲染的脚本的运行环境和引用依赖资源。初始化之后,可以利用容器引擎实现更好的渲染效果。
示例3、客户端向容器引擎系统的跨进程处理模块发送脚本执行请求,请求渲染模块执行客户端需要渲染的脚本得到已渲染数据。例如,如果从客户端接收到需要选的脚本和/或脚本执行请求,跨进程处理模块可以向容器引擎系统的渲染模块发送包括需要渲染的脚本和/或脚本执行请求。渲染模块可以执行脚本得到已渲染数据,并向设备端的容器模块发送已渲染数据。容器模块基于已渲染数据获取容器引擎,得到客户端需要渲染的脚本的运行环境和引用依赖资源,进而实现更好的渲染效果。
在一种实施方式,所述已渲染数据中包括引擎标识、容器视图信息和组件信息;
所述容器模块102具体用于基于所述引擎标识查找对应的容器引擎,利用所述容器引擎基于所述容器视图信息构建容器视图,执行所述组件信息对应的可执行代码,以在所述容器视图中加载所述组件信息对应的图形组件,生成显示页面。
例如,已渲染数据中包括引擎标识、容器视图信息、组件信息以及脚本的业务逻辑等的一项或者多项。容器模块可以基于引擎标识查找对应的容器引擎;基于容器视图信息构建容器视图;执行组件信息对应的可执行代码,以在容器视图中加载所述组件信息对应的图形组件,生成显示页面。容器视图信息可以包括容器视图的尺寸、颜色、位置等信息。组件信息可以包括需要在显示页面展现的各个图形组件的尺寸、颜色、位置、文字、形状等信息。例如,圆形按钮、方形输入框等。脚本的业务逻辑可以包括多种,例如组件的显示顺序、消失顺序等。容器模块利用设备端的容器引擎系统,可以基于引擎标识获取容器引擎,基于容器视图信息构建容器视图,基于组件信息在构建的容器视图中加载图形组件,进而生成设备端的显示页面,显示所需的渲染效果。由于容器引擎、容器视图、组件等可以复用,可以减少渲染所需的计算量,提高渲染速度,优化渲染效果。
图3是根据本公开一实施例的基于容器引擎系统的渲染方法的流程示意图。所述容器引擎系统设置于设备端,所述容器引擎系统包括渲染模块和容器模块。该方法可以包括:
S301、渲染模块向容器模块发送已渲染数据;
S302、容器模块基于所述已渲染数据获取容器引擎,利用所述容器引擎基于所述已渲染数据构建容器视图以及生成显示页面。
图4是根据本公开另一实施例的基于容器引擎系统的渲染方法的流程示意图。该实施例的方法可以包括上述方法实施例的各步骤。在一种实施方式中,所述方法还包括:S401、指令处理模块接收来自云端的渲染指令,对所述渲染指令进行解析得到所述已渲染数据。
在一种实施方式中,所述方法还包括:S402、跨进程处理模块接收来自客户端的请求,所述请求中包括需要渲染的脚本。
在一种实施方式中,所述方法还包括:
S403、跨进程处理模块向指令处理模块发送所述脚本;
S404、指令处理模块向所述渲染模块发送所述脚本;
S405、渲染模块执行所述脚本生成所述已渲染数据。
在一种实施方式中,所述方法还包括:
所述跨进程处理模块基于调用者进程标识、调用者包名、UID中的至少之一进行鉴权,在鉴权通过的情况下,获取所述调用者类型对应权限的远程操作对象;向所述客户端返回所述远程操作对象。
在一种实施方式中,所述方法还包括:设备端能力模块接收来自所述渲染模块的端能力调用指令,所述端能力调用指令用于调用所述设备端的服务能力。其中,所述渲染模块可以运行所述脚本生成所述端能力调用指令,和/或从所述已渲染数据中获取所述端能力调用指令。
在一种实施方式中,所述方法还包括:
所述设备端能力模块基于所述端能力调用指令所调用的服务能力,向所述渲染模块返回所述服务能力对应的已渲染数据;
所述渲染模块向所述容器模块发送所述服务能力对应的已渲染数据;
所述容器模块基于所述服务能力对应的已渲染数据获取所述服务能力的容器引擎,利用所述服务能力的容器引擎构建所述服务能力的容器视图,以及生成所述服务能力的显示页面。
在一种实施方式中,所述方法还包括:
客户端向跨进程处理模块发送以下请求的至少之一:
连接请求,用于请求对所述客户端进行鉴权和建立连接;
初始化请求,用于请求初始化所述脚本的运行环境和引用依赖资源;
脚本执行请求,用于请求执行所述脚本得到所述已渲染数据。
在一种实施方式中,所述已渲染数据中包括引擎标识、容器视图信息和组件信息;
所述容器模块基于所述已渲染数据获取容器引擎,包括:所述容器模块基于所述引擎标识查找对应的容器引擎;
利用所述容器引擎基于所述已渲染数据构建容器视图以及生成显示页面,包括:利用所述容器引擎基于所述容器视图信息构建容器视图,执行所述组件信息对应的可执行代码,以在所述容器视图中加载所述组件信息对应的图形组件,生成显示页面。
本公开实施例各方法中的步骤可以参见上述系统实施例中各模块的对应描述,在此不再赘述。
在一种应用示例中,带有屏幕的智能设备例如:智能音箱等语音智能设备中可以包括应用容器引擎(Application Container Engine,ACE)系统。ACE系统可以是嵌入式应用系统。如图5所示,该系统主要包括以下几个部分:
一、客户端通信管理模块。例如图5的有屏语音智能设备中,客户端通信管理模块可以为跨进程渲染管理模块(也可以称为客户端渲染管理模块、客户端管理模块、跨进程管理模块等,是上述方法实施例中跨进程处理模块的示例)。该跨进程渲染管理模块可以与客户端进行通信。
可选地,该ACE系统也可以包括客户端(可以称为ACE系统客户端、客户端插件、客户端模块等)。ACE系统客户端可以设置在其他需要动态渲染内容的应用程序中。例如,第三方接入的应用(APP)的安装包例如APK中可以集成ACE系统客户端,该客户端可以安装或下载到设备端运行。客户端可以通过ACE系统的跨进程渲染管理模块与其他模块进行交互。客户端中可以包括通信模块(例如指令接收端)、组件集(组件的描述信息的集合)、指令执行模块(例如指令执行器)等。
二、指令解析分发模块(或者称为指令解析分发子系统、协议解析分发子系统等,是上述方法实施例中指令处理模块的示例),用于基于系统协议进行指令的解析与分发。例如,通过指令收发服务模块可以从云端(也可以称为云服务、云端服务等)或客户端接收渲染指令。指令解析分发模块对渲染指令进行解析得到已渲染数据后,可以将已渲染数据分发给容器模块进行处理。指令解析分发模块也可以通过渲染模块向容器模块透传已渲染数据。
例如,云端可以将需要渲染的内容编译成各个渲染指令,发送给设备端的指令收发服务模块。指令收发服务模块可以与云端通信,从云端接收渲染指令。渲染指令中可以为已编译代码,主要包括布局相关的信息等,数据量较少。指令收发服务模块将来自云端的渲染指令发送至指令处理模块。指令处理模块收到渲染指令后,可以对渲染指令进行解析,得到已渲染数据。这样,云端与设备端之间通过渲染指令实现渲染效果,不需要传输大量的数据内容,通过渲染指令传输较少的数据量即可实现所需的渲染效果。类似的,客户端也可以通过渲染指令,通过传输较少的数据量在设备端实现所需渲染效果。
三、设备端能力模块(或者称为端能力模块、设备端能力子系统、端能力子系统等)。渲染过程中,可能需要调用设备端的各种能力(也可以称为技能)。端能力模块可以从指令解析分发模块接收端能力调用指令,根据端能力调用指令向设备端系统服务模块发送对应的调用指令。例如,打开麦克风的指令,打开摄像头的指令等。端能力可以包括多种,例如硬件能力、智能服务和云端服务等。
进一步地,如果设备端能力模块基于端能力调用指令所调用的设备端的服务能力具有特定的渲染效果,可以向渲染模块返回所调用的设备端的服务能力对应的脚本、渲染指令或已渲染数据等信息中至少之一。渲染模块可以对收到的信息进行相应的处理后发送至容器模块。由容器模块基于已渲染数据获取所调用的服务能力的容器引擎,利用该容器引擎构建所调用的服务能力的容器视图,以及生成所调用的服务能力的显示页面。例如,打开麦克风的调用指令的渲染效果包括带有麦克风图像的局部显示的动画,设备端能力模块可以向渲染模块发送该动画对应的已渲染数据。渲染模块可以获取该动画所需的容器引擎例如对话框容器引擎。在对话框容器引擎中可以基于已渲染数据中的视图信息构建容器视图,并基于组件信息运行组件的可执行代码,得到显示页面。
此外,在设备端能力模块调用设备端系统服务时,设备端系统服务可以按照调用指令执行相应的操作。设备端系统服务可以通过设备端能力模块向云端上报所调用的服务能力执行相应的操作后,出现的状态和/或事件等。例如,响应于调用指令,音乐播放器开启并播放音乐。音乐播放器可以向设备端能力模块返回音乐播放记录等,由设备端能力模块上报至云端。
四、容器模块(或者称为容器子系统),用于对各种容器引擎进行管理。容器引擎可以包括页面容器引擎、对话框容器引擎、小程序容器引擎等。容器模块可以基于来自渲染模块、指令解析分发模块或跨进程渲染管理模块的已渲染数据,获取所需的容器引擎。例如,如果存在已经打开的页面容器引擎,可以使用该页面容器引擎构建容器页面。如果不存在已经打开的容器引擎,可以启动新的页面容器引擎,使用该新的页面容器引擎构建容器页面。再如,如果存在已经打开的对话框容器引擎,可以先关闭该对话框容器引擎,再基于已渲染数据启动新的对话框容器引擎构建容器页面。如果不存在已经打开的对话框容器引擎,可以直接启动新的对话框容器引擎。使用该新的对话框容器引擎构建容器页面。再如,如果存在已经打开的小程序容器引擎,可以使用该小程序容器引擎构建容器页面。如果不存在已经打开的小程序容器引擎,可以启动新的小程序容器引擎,使用该新的小程序容器引擎构建容器页面。
利用容器引擎构建容器页面后,在容器页面中加载渲染所需的组件的可执行代码,生成能够在设备端的屏幕上展现渲染效果的显示页面。进而,在设备端的屏幕上,可以展现该显示页面。
五、渲染模块(或者称为渲染子系统),用于实现设备的屏幕渲染。
渲染模块可以执行脚本得到已渲染数据,或者从指令解析分发模块接收已渲染数据。然后,渲染模块可以向容器模块发送已渲染数据。
此外,渲染模块还可以从已渲染数据中解析确定是否需要调用端能力。如果需要调用端能力,可以向设备端能力模块发送端能力调用指令,以调用设备端的服务能力。如果设备端能力模块向渲染模块返回了基于端能力调用指令所调用的服务能力对应的已渲染数据,则设备端能力模块可以将该已渲染数据发送至容器模块进行处理。
此外,ACE系统中可以包括组件集。ACE系统的组件集中可以包括各组件的可执行代码的集合。ACE系统客户端中也可以包括组件集,客户端的组件集中可以包括部分自定义组件的描述信息的集合。客户端需要渲染的脚本中,可以包括容器引擎的标识、容器组件信息、组件的描述信息等。如果需要在ACE系统中注册自定义组件,客户端需要渲染的脚本中可以包括各自定义组件的描述信息。例如,某个视频网站的APP中,除了包括自身的各种组件、布局之外,还可以包括用于显示“新年快乐”、“中秋快乐”的渲染效果的自定义组件。
在一种示例中,该ACE系统可以应用于带有屏幕的语音智能设备,为设备的系统应用及第三方应用的内容展现提供高效的处理方式,作为智能语音交互的有益补充,能够提高语音智能设备的表现力,达到更好的用户体验。
该ACE系统可以提供多种通信方式的服务:1)基于客户端插件的第三方通信服务;2)基于注册协议的云服务通信;3)基于设备端本地系统的服务通信。具有约定的通信内容,应用容器引擎系统分配相应的容器,在容器中通过组件集及相关指令组织相关内容,完成屏幕内容的渲染,从而完成各个调用方(调用者)的服务目标。此外,该ACE系统还可以对相应服务的生命周期进行管理。
该ACE系统可以在语音智能设备中完成渲染,减少与外部例如云端需要传输的数据量;通过复用容器能够提高渲染处理速度和显示效果。
目前ACE系统可以支持以下类型的容器视图:Page(页面),Dialog(对话框)和小程序。其中,Page和Dialog的容器视图类似,可以是全屏幕、局部屏幕和悬浮窗口的视图显示。小程序的容器视图类似于微件(widget)或者其他类型的小程序的显示效果。例如,小程序可以包括时钟、记事本、天气预报、地图、游戏等。
如图6所示,跨进程渲染管理模块可以包括鉴权模块、脚本运行环境(V8)调用模块、端能力调用模块和指令收发模块等。在接入方APP中可以集成ACE系统客户端。该客户端可以包括通信模块(例如指令接收端)、组件集(例如包括组件的描述信息的集合)、指令执行模块(例如指令执行器)等。其中,云端可以保存APP的安装包等数据,从云端下载APP后,可以在设备端运行该APP。APP中的ACE系统客户端的通信模块可以与ACE系统的跨进程渲染管理模块连接,实现进程间通信。ACE系统客户端的组件集中可以包括注册自定义组件得到的组件的描述信息。此外,ACE系统客户端还可以包括布局管理器,提供容器视图所需的布局信息等。ACE系统客户端的指令执行器可以解析和/或执行收到的各种指令,例如对从云端接收的渲染指令进行解析。
如图7所示,在连接流程中,客户端向跨进程渲染管理模块发送连接请求。跨进程渲染管理模块对连接请求进行鉴权。如果鉴权失败,返回失败的通知。如果鉴权成功,向客户端返回对应权限的远程操作对象例如binder对象,例如内存引用地址。
如图8所示,在请求处理流程中,客户端向跨进程渲染管理模块发起渲染请求或其他事件。例如,跨进程渲染管理模块接收到处理请求后,可以分别对各种处理请求进行处理。例如,对于初始化客户端请求,初始化脚本运行环境以及其他引用依赖资源,获得容器引擎。再如,对于脚本执行请求,查找对应的脚本运行环境实例例如容器引擎。运行代码,产生渲染指令和/或已渲染数据。通过容器引擎构建容器页面,生成显示页面,以显示客户端所需的渲染效果。再如,对于其他端能力请求,可以向设备端能力模块发送(或通过渲染模块向端能力模块发送)端能力调用指令,请求对应的端能力。此外,设备端能力模块还可以产生回执,将该端能力所需的渲染指令和/或已渲染数据等发送给渲染模块。由渲染模块发送给容器模块实现渲染效果。
如图9所示,在连接流程中,可以通过PID(进程标识)、包名等进行鉴权。鉴权过程的示例如下:
客户端向跨进程渲染管理模块请求建立AIDL连接。通过AIDL实现进程间通信。
客户端向跨进程渲染管理模块请求获取远程操作对象。跨进程渲染管理模块判断调用者PID是否是已经验证过的PID。如果是,获取对应权限等级的调用者类型。否则,利用调用者包名进行鉴权。具体可以根据调用者包名获取应用签名,然后判断应用签名是否在预先设置的白名单中。如果是,则获取对应权限等级的调用者类型。否则,返回空(Null),表示鉴权失败。
鉴权成功后,跨进程渲染管理模块可以根据调用者类型获取对应权限的远程操作对象实例,向客户端返回远程操作对象例如interface实例。
如图10所示,在初始化过程中,客户端可以通过远程操作对象实例请求跨进程渲染管理模块初始化脚本引擎(或容器引擎)。跨进程渲染管理模块创建线程、初始化脚本引擎(或容器引擎),注册指令(commands)监听。指令可以包括渲染指令、端能力调用指令等。跨进程渲染管理模块向客户端返回引擎标识。客户端可以通过引擎标识找到对应的容器实例,运行容器实例的代码实现渲染。
如图11所示,在执行脚本过程中,客户端可以向跨进程渲染管理模块请求执行脚本。跨进程渲染管理模块可以根据请求中的引擎标识获取容器引擎(或称为引擎实例)。例如,跨进程渲染管理模块调用容器模块查找引擎标识对应的容器引擎。此外,跨进程渲染管理模块也可以调用渲染模块运行脚本(或称为执行脚本),产生渲染指令和/或已渲染数据。向客户端返回渲染指令和/或已渲染数据的执行结果和状态等,可以操作客户端的组件,更新用户界面。
对于有客户端运行在有屏音箱设备上的第三方应用,想接入动态渲染能力,如一些交互广告等,只需要通过接入轻量级的ACE客户端ACE Client SDK(softwaredevelopment kit,指软件开发工具包)。该SDK可以主要包含基本组件集、渲染指令执行器、布局引擎等,而不包括脚本例如JS的v8引擎,不包括端能力实现等等。通过ACE的客户端管理模块(即跨进程渲染管理模块)使用应用容器引擎的提供的服务,实现在屏幕上的相关展示。
在一种示例中,如图12所示,指令收发服务可以将来自云端(或称为云服务)的指令发送至指令解析分发模块。指令解析分发模块可以包括指令收发适配模块(例如收发服务适配器)、指令拆包校验模块、指令分发模块等。指令解析分发模块可以基于系统协议等解析渲染指令,向容器模块发送解析得到的已渲染数据。容器模块可以利用已渲染模块驱动渲染。此外,容器模块也可以透传指令。例如,动态脚本(例如JavaScript,简称JS)可以订阅一些指令来完成业务逻辑,容器模块可以向动态脚本中透传该脚本订阅的指令。此外,容器模块可以向指令解析分发模块进行事件上报、状态同步等。指令解析分发模块可以将这些事件、状态等打包上传至云端。
如图13和图14所示,指令收发服务例如DCS(DuerOS Conversation System)是设备与DuerOS(度秘操作系统)云服务之间进行通信的子系统。指令收发服务通过进程通信将渲染指令发送至指令收发适配模块例如DcsServiceClientlmpl。指令收发适配模块可以根据指令类型判断是否需要解析有效载荷(Payload)。如果是具有有效载荷的指令,则拆包校验模块拆分有效载荷,并校验拆分后的数据的结构完整性。如果校验通过,可以将校验通过的数据发送至指令分发模块例如DirectiveDispatcher进行解码、解压缩等处理。指令分发模块可以进行指令分发,向容器模块分发页面渲染所需的已渲染数据。已渲染数据可以包括已编译代码。容器模块可以利用收到的已渲染数据构建容器引擎(容器实例)或重用容器引擎(容器实例),进而利用容器引擎构建容器视图。其中容器模块可以使用的容器引擎可以包括页面容器引擎、对话框容器引擎、小程序容器引擎等。例如,在安卓系统中页面容器引擎可以包括活动页面(Activity)。容器模块也可以通过跨进程渲染管理模块向客户端返回渲染相关的信息。
该指令解析分发模块协议解析子系统通过适配模块,与数据源类型解耦,只关注数据本身,根据不同指令类型,动态驱动容器模块构建相应的容器完成渲染。因此,云端可以不用下发渲染数据而是下发渲染指令,即可在设备上完成渲染。
如图15所示,设备端能力模块(可以称为端能力集成模块、端能力集成应用、端能力集成子系统等)是设备侧系统服务与应用容器引擎的桥梁。例如设备端能力模块中的设备硬件能力可以调用设备侧系统服务(或称为)中设备端提供的设备硬件能力(例如音视频能力),智能设备服务可以调用设备侧系统服务中的端智能服务(例如人脸识别,手势识别等),云端服务可以调用设备侧系统服务中的云端指令收发服务(例如设备端的状态、事件上报与同步)等。设备端能力模块提供的设备硬件能力可以调用设备侧系统服务中的操作系统接口,提供音视频能力。智能设备服务可以调用设备侧系统服务中的端智能服务,提供音视频能力。通过跨进程渲染管理模块、渲染模块、指令解析模块中的至少之一可以调用端能力,并且能够生成端能力对应的渲染指令,实现端能力对应的渲染效果。
在一种示例中,如图16所示,调用端能力的流程可以包括:基于脚本或脚本解析得到的已渲染数据,确定需要调用注视识别的端能力。经过引擎脚本函数调用映射成命令,该步骤可以由本地代码执行。通过页面状态封装模块请求显示设备例如DuerShowDevice设置注视识别状态。显示设备通过跨进程接口请求智能设备服务例如Launcher设置注视识别状态。
端能力模块可以与应用容器引擎的其他几个部分结合,在保持高性能即时执行的同时,提高资源利用率,简化了第三方调用的流程与步骤,有利于轻量级应用的开发与使用。
如图17所示,页面(page)容器引擎的工作流程的示例可以包括:判断是否有已经打开的页面容器引擎例如Activity。如果是,则使用已经打开的页面容器引擎构建容器视图。如果否,则启动页面容器引擎例如Activity后再构建容器视图。构建容器视图后,可以执行页面压栈,将之前显示的页面保存到栈中。然后,页面容器引擎可以载入已渲染数据,构建页面,已渲染数据中可以包括脚本(例如JS)的业务逻辑等。
此外,参见图18,在页面(page)容器引擎的工作流程中,可以增加对背景属性的判断。例如在判断出有已经打开的页面容器引擎后,再判断当前已经打开的页面容器引擎的背景属性中的透明属性是否和收到的指令(例如渲染指令或基于渲染指令得到的已渲染数据)中的透明属性是否一致。如果不一致,需要启动新的页面容器引擎例如Activity。如果一致,则可以使用已经打开的页面容器引擎构建页面容器视图。构建页面容器视图后,可以执行页面压栈,将之前显示的页面保存到栈中。然后,页面容器引擎可以载入已渲染数据,构建网站页面,已渲染数据中可以包括脚本(例如JS)的业务逻辑等。
如图19所示,对话框(Dialog)容器引擎的工作流程的示例可以包括:判断是否有已经打开的对话框容器引擎。如果是,则使用已经打开的对话框容器引擎构建容器视图。如果否,则关闭之前的对话框容器引擎,再启动新的对话框容器引擎构建容器视图。将构建的容器视图添加到窗口管理模块例如WindowManager。注册组件集(或称为组件库)。对话框容器引擎载入编译后的渲染数据和脚本(例如JS),构建对话框页面。
如图20所示,小程序容器引擎的工作流程的示例可以包括:设备端可能响应于对小程序进行点击、语音询问例如DCS指令(DCS Directive)、导航等操作,判断需要显示的小程序是否是当前已经打开的小程序容器引擎。其中,DCS(DuerOS Conversation System)是设备与DuerOS(度秘操作系统)云服务之间进行通信的子系统。
如果需要显示的小程序是当前已经打开的小程序容器引擎,则可以跳转到当前打开的小程序容器引擎,向小程序框架发出路由消息,以传入页面对应的URL,获得经过编译的脚本(例如JS)页面代码。脚本页面代码可以包含在已渲染数据中。然后,还可以判断脚本页面代码中是否已有对应的缓存页面,如果是,则展现小程序页面。如果否,则进入页面资源加载态,可以向云端发出页面加载请求。判断需要加载的对应页面本地是否已有缓存。如果有缓存,则向小程序框架发出加载完成消息(例如onLoadComplete),以传入脚本页面代码,展现小程序页面。如果没有缓存,则向下载脚本页面代码,再向小程序框架发出加载完成消息,以传入脚本页面代码,展现小程序页面。
如果需要显示的小程序不是当前已经打开的小程序容器引擎,则打开新的小程序容器引擎,进入小程序加载态。使用新的小程序容器引擎获取小程序信息例如m1。然后,根据小程序信息判断本地是否已有缓存的小程序。小程序可以为包装好特定格式的脚本代码和数据的包(package)。如果本地存在某个小程序的包(package),表示本地已有缓存的小程序。如果本地已有缓存的小程序,可以展现小程序页面。也可以再判断是否需要更新,如果不需要更新再展现小程序页面。在本地没有缓存小程序或者需要更新小程序的情况下,下载小程序(例如从云端下载小程序的包),加载小程序(例如通过渲染模块对小程序的包进行处理后,加载到容器引擎中),展现小程序页面。
上述的网站页面、对话框页面或小程序页面中可以包括各种组件。参见图21为组件的示例。每个组件可以包括自身的各种属性的名称、类型、含义以及必要性等属性信息。例如,列表组件(List)可以包括的属性名称为direction(方向)、item(s)(列表项)、firstitem(列表头)、lastitem(列表尾)、numbered(是否设置索引)以data(数据源)等。再如,页面组件(List)可以包括的属性名称为width(宽度)、height(高度)、direction(方向)、item(s)(展示项)等。可以运行脚本中包括的组件的代码(目标代码)编译得到已渲染数据(执行代码)。
本公开的实施例,提供了不同类型的容器视图,并且提供了压栈逻辑,生命周期管理等功能,能够实现统一调度、多任务协同等功能。
其中,生命周期管理的示例可以包括:压栈后显示一个对话框,在一定时间之后控制这个对话框消失,显示对话框的时间范围可以理解为该对话框的生命周期。
此外,基于不同类型的容器引擎和容器视图等,可以协同处理多种任务,实现统一调度、多任务协同的效果。
如图22所示,渲染模块可以包括组件集、指令执行器(或称为指令解析器)以及脚本引擎等。脚本引擎可以运行脚本。指令执行器可以对渲染指令进行解析。容器模块可以为渲染模块提供容器视图。设备端能力模块可以为渲染模块的组件集中的各组件提供端能力。
渲染模块可以从指令解析分发模块接收已渲染数据,已渲染数据(也可以称为预渲染数据)中可以包括脚本的业务逻辑、引擎标识、组件信息、视图信息中的至少一项。渲染模块可以向容器模块发送已渲染数据,以构建容器视图(或操作容器视图),接收容器模块提供的容器视图。
渲染模块还可以从已渲染数据中获取端能力调用指令,向设备端能力模块发送端能力调用指令。然后设备端能力模块调用指令向渲染模块返回基于端能力调用指令所调用的服务能力对应的已渲染数据。渲染模块可以将收到的渲染数据发送至容器模块。容器模块可以基于服务能力对应的已渲染数据用于获取服务能力的容器引擎,利用该服务能力的容器引擎构建该服务能力的容器视图,以及生成该服务能力的显示页面。
如图23所示,在渲染流程中,指令解析分发模块可以将脚本或已渲染数据(也可以称为预渲染数据)发送至渲染模块中。已渲染数据中可以包括来自云端的指令的合集,或者对来自云端的指令进行解析后得到数据。渲染模块构建指令执行器,该指令执行器可以执行收到的已渲染数据渲染模块还可以注册组件集。渲染模块还可以通过脚本引擎运行脚本生成渲染指令和/或已渲染数据。
基于指令或已渲染数据,渲染模块判断是否需要调用端能力,如果需要调用端能力,可以向设备端能力模块发送调用指令。基于指令或已渲染数据,渲染模块也可以判断是否需要显示渲染效果,如果是,可以将已渲染数据的部分或全部发送至容器引擎。由容器引擎实现渲染效果。
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
图24示出了可以用来实施本公开的实施例的示例电子设备800的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或要求的本公开的实现。
如图24所示,电子设备800包括计算单元801,其可以根据存储在只读存储器(ROM)802中的计算机程序或者从存储单元808加载到随机访问存储器(RAM)803中的计算机程序来执行各种适当的动作和处理。在RAM 803中,还可存储电子设备800操作所需的各种程序和数据。计算单元801、ROM 802以及RAM 803通过总线804彼此相连。输入输出(I/O)接口805也连接至总线804。
电子设备800中的多个部件连接至I/O接口805,包括:输入单元806,例如键盘、鼠标等;输出单元807,例如各种类型的显示器、扬声器等;存储单元808,例如磁盘、光盘等;以及通信单元809,例如网卡、调制解调器、无线通信收发机等。通信单元809允许电子设备800通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元801可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元801的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元801执行上文所描述的各个方法和处理,例如渲染方法。例如,在一些实施例中,渲染方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元808。在一些实施例中,计算机程序的部分或者全部可以经由ROM 802和/或通信单元809而被载入和/或安装到电子设备800上。当计算机程序加载到RAM803并由计算单元801执行时,可以执行上文描述的渲染方法的一个或多个步骤。备选地,在其他实施例中,计算单元801可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行渲染方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入、或者触觉输入来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。
Claims (21)
1.一种容器引擎系统,设置于设备端,所述系统包括:
渲染模块,用于向容器模块发送已渲染数据;
容器模块,用于基于所述已渲染数据获取容器引擎,利用所述容器引擎基于所述已渲染数据构建容器视图以及生成显示页面。
2.根据权利要求1所述的系统,其特征在于,所述系统还包括:
指令处理模块,用于接收来自云端的渲染指令,对所述渲染指令进行解析得到所述已渲染数据。
3.根据权利要求1所述的系统,其特征在于,所述系统还包括:
跨进程处理模块,用于接收来自客户端的请求,所述请求中包括需要渲染的脚本。
4.根据权利要求3所述的系统,其特征在于,
所述跨进程处理模块还用于向指令处理模块发送所述脚本;
所述指令处理模块还用于向所述渲染模块发送所述脚本;
所述渲染模块还用于执行所述脚本生成所述已渲染数据。
5.根据权利要求3或4所述的系统,其特征在于,所述跨进程处理模块还用于基于调用者进程标识、调用者包名、UID中的至少之一进行鉴权,在鉴权通过的情况下,获取所述调用者类型对应权限的远程操作对象;向所述客户端返回所述远程操作对象。
6.根据权利要求1至4中任一项所述的系统,其特征在于,所述系统还包括:
设备端能力模块,用于接收来自所述渲染模块的端能力调用指令,所述端能力调用指令用于调用所述设备端的服务能力;
所述渲染模块还用于运行所述脚本生成所述端能力调用指令,和/或从所述已渲染数据中获取所述端能力调用指令。
7.根据权利要求6所述的系统,其特征在于,所述设备端能力模块还用于基于所述端能力调用指令所调用的服务能力,向所述渲染模块返回所述服务能力对应的已渲染数据;
所述渲染模块,还用于向所述容器模块发送所述服务能力对应的已渲染数据;
所述容器模块,还用于基于所述服务能力对应的已渲染数据获取所述服务能力的容器引擎,利用所述服务能力的容器引擎构建所述服务能力的容器视图,以及生成所述服务能力的显示页面。
8.根据权利要求3至5中任一项所述的系统,其特征在于,所述系统还包括:
客户端,用于向跨进程处理模块发送以下请求的至少之一:
连接请求,用于请求对所述客户端进行鉴权和建立连接;
初始化请求,用于请求初始化所述脚本的运行环境和引用依赖资源;
脚本执行请求,用于请求执行所述脚本得到所述已渲染数据。
9.根据权利要求1至8中任一项所述的系统,其特征在于,所述已渲染数据中包括引擎标识、容器视图信息和组件信息;
所述容器模块具体用于基于所述引擎标识查找对应的容器引擎,利用所述容器引擎基于所述容器视图信息构建容器视图,执行所述组件信息对应的可执行代码,以在所述容器视图中加载所述组件信息对应的图形组件,生成显示页面。
10.一种基于容器引擎系统的渲染方法,所述容器引擎系统设置于设备端,所述容器引擎系统包括渲染模块和容器模块,所述方法包括:
所述渲染模块向容器模块发送已渲染数据;
所述容器模块基于所述已渲染数据获取容器引擎,利用所述容器引擎基于所述已渲染数据构建容器视图以及生成显示页面。
11.根据权利要求10所述的方法,其特征在于,所述方法还包括:
指令处理模块接收来自云端的渲染指令,对所述渲染指令进行解析得到所述已渲染数据。
12.根据权利要求10所述的方法,其特征在于,所述方法还包括:
跨进程处理模块接收来自客户端的请求,所述请求中包括需要渲染的脚本。
13.根据权利要求12所述的方法,其特征在于,所述方法还包括:
所述跨进程处理模块向指令处理模块发送所述脚本;
所述指令处理模块向所述渲染模块发送所述脚本;
所述渲染模块执行所述脚本生成所述已渲染数据。
14.根据权利要求12或13所述的方法,其特征在于,所述方法还包括:
所述跨进程处理模块基于调用者进程标识、调用者包名、UID中的至少之一进行鉴权,在鉴权通过的情况下,获取所述调用者类型对应权限的远程操作对象;向所述客户端返回所述远程操作对象。
15.根据权利要求10至13中任一项所述的方法,其特征在于,所述方法还包括:
设备端能力模块接收来自所述渲染模块的端能力调用指令,所述端能力调用指令用于调用所述设备端的服务能力;
所述渲染模块运行所述脚本生成所述端能力调用指令,和/或从所述已渲染数据中获取所述端能力调用指令。
16.根据权利要求15所述的方法,其特征在于,所述方法还包括:
所述设备端能力模块基于所述端能力调用指令所调用的服务能力,向所述渲染模块返回所述服务能力对应的已渲染数据;
所述渲染模块向所述容器模块发送所述服务能力对应的已渲染数据;
所述容器模块基于所述服务能力对应的已渲染数据获取所述服务能力的容器引擎,利用所述服务能力的容器引擎构建所述服务能力的容器视图,以及生成所述服务能力的显示页面。
17.根据权利要求12至14中任一项所述的方法,其特征在于,所述方法还包括:
客户端向跨进程处理模块发送以下请求的至少之一:
连接请求,用于请求对所述客户端进行鉴权和建立连接;
初始化请求,用于请求初始化所述脚本的运行环境和引用依赖资源;
脚本执行请求,用于请求执行所述脚本得到所述已渲染数据。
18.根据权利要求10至17中任一项所述的方法,其特征在于,所述已渲染数据中包括引擎标识、容器视图信息和组件信息;
所述容器模块基于所述已渲染数据获取容器引擎,包括:所述容器模块基于所述引擎标识查找对应的容器引擎;
利用所述容器引擎基于所述已渲染数据构建容器视图以及生成显示页面,包括:利用所述容器引擎基于所述容器视图信息构建容器视图,执行所述组件信息对应的可执行代码,以在所述容器视图中加载所述组件信息对应的图形组件,生成显示页面。
19.一种电子设备,其特征在于,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求10-18中任一项所述的方法。
20.一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使计算机执行权利要求10-18中任一项所述的方法。
21.一种计算机程序产品,包括计算机程序,该计算机程序在被处理器执行时实现根据权利要求10-18中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110260854.3A CN112882709B (zh) | 2021-03-10 | 2021-03-10 | 基于容器引擎系统的渲染方法、装置、设备以及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110260854.3A CN112882709B (zh) | 2021-03-10 | 2021-03-10 | 基于容器引擎系统的渲染方法、装置、设备以及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112882709A true CN112882709A (zh) | 2021-06-01 |
CN112882709B CN112882709B (zh) | 2024-05-24 |
Family
ID=76054119
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110260854.3A Active CN112882709B (zh) | 2021-03-10 | 2021-03-10 | 基于容器引擎系统的渲染方法、装置、设备以及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112882709B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113761609A (zh) * | 2021-08-12 | 2021-12-07 | 山东华云三维科技有限公司 | 一种基于服务器端的云架构cad平台实时渲染系统及方法 |
CN114661483A (zh) * | 2022-03-23 | 2022-06-24 | 支付宝(杭州)信息技术有限公司 | 子程序同步处理方法及装置 |
CN114827186A (zh) * | 2022-02-25 | 2022-07-29 | 阿里巴巴(中国)有限公司 | 云应用处理方法和系统 |
CN114926143A (zh) * | 2022-05-16 | 2022-08-19 | 三峡高科信息技术有限责任公司 | 基于业务组件和流程引擎的配置企业工作流的方法及平台 |
WO2023093885A1 (zh) * | 2021-11-29 | 2023-06-01 | 华为云计算技术有限公司 | 基于云技术的图形程序在线开发方法、系统及相关设备 |
CN117036566A (zh) * | 2023-08-28 | 2023-11-10 | 北京趋动智能科技有限公司 | 远程图像渲染方法、系统、电子设备及可读存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120170077A1 (en) * | 2010-12-30 | 2012-07-05 | Darrell Bellert | Rendering electronic documents having linked textboxes |
CA2798979A1 (en) * | 2011-12-16 | 2013-06-16 | Research In Motion Limited | Method of rendering a user interface |
CN108876887A (zh) * | 2017-05-16 | 2018-11-23 | 北京京东尚科信息技术有限公司 | 渲染方法和装置 |
US20190065619A1 (en) * | 2017-08-24 | 2019-02-28 | Coursera, Inc. | Scalable server-side rendering |
CN109697266A (zh) * | 2017-10-24 | 2019-04-30 | 中国电信股份有限公司 | 页面渲染系统、页面渲染方法及页面渲染装置 |
CN109871202A (zh) * | 2018-12-12 | 2019-06-11 | 江苏中威科技软件系统有限公司 | 一种移动端应用混合开发方法及框架 |
CN111274510A (zh) * | 2020-01-15 | 2020-06-12 | 平安银行股份有限公司 | 页面渲染方法、装置、设备及可读存储介质 |
CN111611518A (zh) * | 2020-05-25 | 2020-09-01 | 南京南瑞信息通信科技有限公司 | 基于Html5的可视化展示页面自动发布方法及系统 |
CN111814089A (zh) * | 2020-06-30 | 2020-10-23 | 广州市百果园信息技术有限公司 | 一种页面渲染的方法、装置、渲染服务器和存储介质 |
-
2021
- 2021-03-10 CN CN202110260854.3A patent/CN112882709B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120170077A1 (en) * | 2010-12-30 | 2012-07-05 | Darrell Bellert | Rendering electronic documents having linked textboxes |
CA2798979A1 (en) * | 2011-12-16 | 2013-06-16 | Research In Motion Limited | Method of rendering a user interface |
CN108876887A (zh) * | 2017-05-16 | 2018-11-23 | 北京京东尚科信息技术有限公司 | 渲染方法和装置 |
US20190065619A1 (en) * | 2017-08-24 | 2019-02-28 | Coursera, Inc. | Scalable server-side rendering |
CN109697266A (zh) * | 2017-10-24 | 2019-04-30 | 中国电信股份有限公司 | 页面渲染系统、页面渲染方法及页面渲染装置 |
CN109871202A (zh) * | 2018-12-12 | 2019-06-11 | 江苏中威科技软件系统有限公司 | 一种移动端应用混合开发方法及框架 |
CN111274510A (zh) * | 2020-01-15 | 2020-06-12 | 平安银行股份有限公司 | 页面渲染方法、装置、设备及可读存储介质 |
CN111611518A (zh) * | 2020-05-25 | 2020-09-01 | 南京南瑞信息通信科技有限公司 | 基于Html5的可视化展示页面自动发布方法及系统 |
CN111814089A (zh) * | 2020-06-30 | 2020-10-23 | 广州市百果园信息技术有限公司 | 一种页面渲染的方法、装置、渲染服务器和存储介质 |
Non-Patent Citations (1)
Title |
---|
万倩倩: "基于ACE框架的局域网渲染集群系统的研究与实现", 东南大学 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113761609A (zh) * | 2021-08-12 | 2021-12-07 | 山东华云三维科技有限公司 | 一种基于服务器端的云架构cad平台实时渲染系统及方法 |
CN113761609B (zh) * | 2021-08-12 | 2024-04-26 | 山东华云三维科技有限公司 | 一种基于服务器端的云架构cad平台实时渲染系统及方法 |
WO2023093885A1 (zh) * | 2021-11-29 | 2023-06-01 | 华为云计算技术有限公司 | 基于云技术的图形程序在线开发方法、系统及相关设备 |
CN114827186A (zh) * | 2022-02-25 | 2022-07-29 | 阿里巴巴(中国)有限公司 | 云应用处理方法和系统 |
CN114661483A (zh) * | 2022-03-23 | 2022-06-24 | 支付宝(杭州)信息技术有限公司 | 子程序同步处理方法及装置 |
WO2023179183A1 (zh) * | 2022-03-23 | 2023-09-28 | 支付宝(杭州)信息技术有限公司 | 子程序同步处理 |
CN114661483B (zh) * | 2022-03-23 | 2024-08-23 | 支付宝(杭州)信息技术有限公司 | 子程序同步处理方法及装置 |
CN114926143A (zh) * | 2022-05-16 | 2022-08-19 | 三峡高科信息技术有限责任公司 | 基于业务组件和流程引擎的配置企业工作流的方法及平台 |
CN114926143B (zh) * | 2022-05-16 | 2022-11-08 | 三峡高科信息技术有限责任公司 | 基于业务组件和流程引擎的配置企业工作流的方法及平台 |
CN117036566A (zh) * | 2023-08-28 | 2023-11-10 | 北京趋动智能科技有限公司 | 远程图像渲染方法、系统、电子设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112882709B (zh) | 2024-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112882709B (zh) | 基于容器引擎系统的渲染方法、装置、设备以及存储介质 | |
CN108536524B (zh) | 资源更新方法、装置、终端及存储介质 | |
CN109358936B (zh) | 信息处理方法、装置、存储介质、电子设备及系统 | |
CN111433743B (zh) | 一种app远程控制方法及相关设备 | |
CN110795195A (zh) | 一种网页渲染方法、装置、电子设备及存储介质 | |
US10185558B2 (en) | Language-independent program composition using containers | |
US10019298B2 (en) | Middleware interface and middleware interface generator | |
CN113312037A (zh) | 应用于微服务的数据处理方法、装置、设备和存储介质 | |
CN112835582A (zh) | 基于容器引擎的渲染方法、装置、设备以及存储介质 | |
EP4119207A1 (en) | Vibration control method and apparatus, and electronic device and computer-readable storage medium | |
AU2019256257A1 (en) | Processor core scheduling method and apparatus, terminal, and storage medium | |
CN111240776B (zh) | 动态壁纸设置方法、装置、存储介质及电子设备 | |
EP3872630A2 (en) | Request processing method and apparatus, electronic device, and computer storage medium | |
CN111580883B (zh) | 应用程序启动方法、装置、计算机系统和介质 | |
CN113315829A (zh) | 客户端离线化h5页面加载方法、装置、计算机设备及介质 | |
CN107179916B (zh) | 一种应用程序开发方法、装置、设备以及开发架构系统 | |
CN112882711B (zh) | 渲染方法、装置、设备以及存储介质 | |
CN112835580B (zh) | 指令处理方法、装置、设备以及存储介质 | |
CN114095758B (zh) | 云图像截取方法、相关装置 | |
CN117014528A (zh) | 消息处理方法、电子设备、存储介质及计算机程序产品 | |
CN112788134B (zh) | 管理分发方法和装置 | |
CN116149639A (zh) | 一种组件开发的方法、装置、电子设备和存储介质 | |
CN112882710B (zh) | 基于客户端的渲染方法、装置、设备以及存储介质 | |
CN115373869A (zh) | 基于aar的进程处理方法、装置及电子设备 | |
CN112835581B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |