CN115934076B - 跨平台客户端的微服务提供装置、方法和电子设备 - Google Patents

跨平台客户端的微服务提供装置、方法和电子设备 Download PDF

Info

Publication number
CN115934076B
CN115934076B CN202310003306.1A CN202310003306A CN115934076B CN 115934076 B CN115934076 B CN 115934076B CN 202310003306 A CN202310003306 A CN 202310003306A CN 115934076 B CN115934076 B CN 115934076B
Authority
CN
China
Prior art keywords
client
micro
environment
web
module
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.)
Active
Application number
CN202310003306.1A
Other languages
English (en)
Other versions
CN115934076A (zh
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 Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and 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 Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN202310003306.1A priority Critical patent/CN115934076B/zh
Publication of CN115934076A publication Critical patent/CN115934076A/zh
Application granted granted Critical
Publication of CN115934076B publication Critical patent/CN115934076B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Transfer Between Computers (AREA)

Abstract

本公开公开了一种跨平台客户端的微服务提供装置、方法和电子设备,涉及计算机技术领域,尤其涉及软件开发技术领域。具体实现方案为:多个微服务项目,每个所述微服务项目均可调用桥接模块API,其中,所述桥接模块API用于根据客户端所属的环境为所述客户端调用相应的资源;多种类型的容器,分别用于加载所述多个微服务项目之中的一个,其中,所述多种类型的容器分别与所述客户端所属的环境对应。采用上述方案的本公开可以实现一套代码的多端复用的同时提高线上问题的响应效率。

Description

跨平台客户端的微服务提供装置、方法和电子设备
技术领域
本公开涉及计算机技术领域,尤其涉及软件开发技术领域,具体涉及一种跨平台客户端的微服务提供装置、方法和电子设备。
背景技术
随着科学技术的发展,人们生活水平的不断提高,如何提高人们生产生活的便利性已经成为关注重心。相关技术中,网盘业务形态复杂,迭代效率要求较高,但是当代码多端复用时,需要在不断开发不同的代码。例如,需要在Electron和Web浏览器分别开发两套代码,且Electron端可以通过Chromium方式加载Web页面,但是仅能复用部分Web静态页面,无法调用PC客户端能力,且发版流程冗长,使得代码开发复杂的同时线上问题响应时长较长。
发明内容
本公开提供了一种跨平台客户端的微服务提供装置、方法和电子设备,主要目的在于实现一套代码的多端复用的同时提高线上问题的响应效率。
根据本公开的一方面,提供了一种跨平台客户端的微服务提供装置,包括:
多个微服务项目,每个所述微服务项目均可调用桥接模块API,其中,所述桥接模块API用于根据客户端所属的环境为所述客户端调用相应的资源;
多种类型的容器,分别用于加载所述多个微服务项目之中的一个,其中,所述多种类型的容器分别与所述客户端所属的环境对应。
根据本公开的另一方面,提供了一种跨平台客户端的微服务提供方法,包括:
接收客户端发送的子项目加载请求;
响应于所述子项目加载请求,控制多个微服务项目调用桥接模块API根据所述客户端所属的环境为所述客户端调用相应的资源;
根据所述相应的资源,控制多种类型的容器加载所述多个微服务项目之中与所述子项目加载请求对应的子项目。
根据本公开的另一方面,提供了一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行前述一方面中任一项所述的方法。
根据本公开的另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行前述一方面中任一项所述的方法。
根据本公开的另一方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现前述一方面中任一项所述的方法。
在本公开一个或多个实施例中,多个微服务项目,每个所述微服务项目均可调用桥接模块API,其中,所述桥接模块API用于根据客户端所属的环境为所述客户端调用相应的资源;多种类型的容器,分别用于加载所述多个微服务项目之中的一个,其中,所述多种类型的容器分别与所述客户端所属的环境对应。因此,可以根据客户端所属的环境进行子项目的加载,减少无法调用资源使得子项目无法加载的情况,可以实现一套代码的多端复用,且该装置简化了发版流程,减少对发版流程的依赖,可以减少线上问题的响应时长,提高线上问题的响应效率。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本公开的限定。其中:
图1是根据本公开第一实施例的跨平台客户端的微服务提供装置的举例示意图;
图2是根据本公开第二实施例的跨平台客户端的微服务提供装置的举例示意图;
图3是根据本公开第三实施例的跨平台客户端的微服务提供装置的举例示意图;
图4是根据本公开一个实施例的Web容器加载子项目的举例示意图;
图5是根据本公开一个实施例的Electron容器加载子项目的举例示意图;
图6是根据本公开第一实施例的跨平台客户端的微服务提供方法的流程示意图;
图7是根据本公开第二实施例的跨平台客户端的微服务提供方法的流程示意图;
图8是根据本公开一个实施例的跨平台客户端的微服务提供装置的架构示意图;
图9是用来实现本公开实施例的跨平台客户端的微服务提供方法的一种跨平台客户端的微服务提供装置的结构示意图;
图10是用来实现本公开实施例的跨平台客户端的微服务提供方法的电子设备的框图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
下面结合具体的实施例对本公开进行详细说明。
在第一个实施例中,图1是根据本公开第一实施例的跨平台客户端的微服务提供装置的举例示意图,如图1所示,该跨平台客户端的微服务提供装置包括多个微服务项目和多种类型的容器,其中,
多个微服务项目,每个微服务项目均可调用桥接模块API,其中,桥接模块API用于根据客户端所属的环境为客户端调用相应的资源;
多种类型的容器,分别用于加载多个微服务项目之中的一个,其中,多种类型的容器分别与客户端所属的环境对应。因此,可以根据客户端所属的环境进行子项目的加载,减少无法调用资源使得子项目无法加载的情况,可以实现一套代码的多端复用,且该装置简化了发版流程,减少对发版流程的依赖,可以减少线上问题的响应时长,提高线上问题的响应效率。
根据一些实施例,微服务(Microservices)是一种软件架构风格,它是以专注于单一责任与功能的小型功能区块(Small Building Blocks)为基础,利用模组化的方式组合出复杂的大型应用程序,各功能区块使用与语言无关(Language-Independent/Languageagnostic)的API集相互通讯。
其中,在一些实施例之中,桥接模块API中设置有JSbridge。该桥接模块API中的JSbridge用于抹平PC客户端和Web浏览器的差异,对外提供一套兼容的标准化接口,即可以抹平PC客户端和Web浏览器之间的差异,减少PC客户端和Web浏览器体验不一致的情况。PC客户端和Web浏览器之间的差异,例如,可以抹平数据请求、文件管理(上传、下载等)及消费(文档/视频/音频预览、文档编辑)之间的差异。
在本公开的一个实施例之中,每个子项目中都集成了JSbridge,例如每个子项目都可以直接使用js-bridge提供的API,可以在子项目开发过程中无需考虑端的适配,因此一套代码可以实现多端兼容。
根据一些实施例,图2是根据本公开第二实施例的跨平台客户端的微服务提供装置的举例示意图,如图2所示,该跨平台客户端的微服务提供装置包括桥接层和服务层。其中,桥接层中包括JSbridge、兼容标准化接口、FFI以及Ajax。
在一些实施例之中,该跨平台客户端的微服务提供装置中,当客户端所属的环境为PC时,桥接模块API通过语言交互接口(Foreign Function Interface,FFI)调用动态链接库dll文件;当所述客户端所属的环境为Web时,所述桥接模块API通过Web API实现相关功能。客户端处于不同的环境,可以调用与之对应的文件或者接口,可以提高数据来源调用的准确性。其中,PC端调用的例如可以是C++的dll文件,Web端调用的例如可以是WebServer的接口或者浏览器能力,其中,该浏览器能力包括视频播放、浏览器下载等。
在一些实施例之中,其中,多个类型的容器包括Web容器和Electron容器。
根据一些实施例,其中,当客户端所属的环境为Web时,调用Web容器为客户端服务,且当客户端所属的环境为PC时,调用Electron容器为客户端服务。也就是说,当客户端所属不同的环境时,可以调用不同的容器为客户端服务,提高服务的准确性,减少子项目无法加载的情况,可以实现多端兼容。
在一些实施例之中,其中,桥接模块API通过用户代理UserAgent判断所处客户端所属的环境。
在一些实施例之中,图3是根据本公开第三实施例的跨平台客户端的微服务提供装置的举例示意图,如图3所示,该装置还包括内容分发网络CDN,用于保存微服务项目编译之后的静态资源。
在一些实施例之中,该装置还包括:
数据库,用于保存静态资源在CDN之中的地址,以便于Electron容器进行调用。
根据一些实施例,在编译的过程中,可以将编译后的静态资源上传CDN,同时可以更新数据库中静态资源在CDN的最新地址,以便与PC端通过CDN列表接口CDN listInterface获取最新的静态资源CDN地址,从而实现热更新,无需频繁发版。
在一些实施例之中,其中,Web容器包括:
第一劫持模块,用于劫持特定路由,并在特定路由被触发时,获取特定路由对应的微服务项目;
第一提取模块,用于提取微服务项目之中的主体内容,并添加至Web容器中的渲染位置;
第二提取模块,用于提取微服务项目之中的层叠样式表css和js地址,并在Web容器中加载css和js地址对应的资源。
易于理解的是,第一劫持模块是指Web容器中用于劫持特定路由的模块,该第一劫持模块中的第一仅用于与第二劫持模块进行区分。第一劫持模块,用于劫持特定路由,并在特定路由被触发时,获取特定路由对应的微服务项目。例如,第一劫持模块可以重写了History API,可以实现路由劫持。当History满足特定的路由时,可以通过ajax去获取对应的页面。
根据一些实施例,第一提取模块是指Web容器中用于提取主体内容的模块。该第一提取模块并不特指某一固定模块。该第一提取模块中的第一仅用于与其余提取模块进行区分,并不特指某一固定模块。第一提取模块可以提取微服务项目之中的主体内容,并将该主体内容添加至Web容器中与该主体内容对应的渲染位置。
在一些实施例之中,第二提取模块是指Web容器中用于提取微服务项目之中的层叠样式表css和js地址的模块。该第二提取模块中第二仅用于与其余提取模块进行区分。该第二提取模块例如可以过滤出页面当中的css和js地址,并加载对应的css和js到当前页面中,从而实现加载根据容器的路径加载子项目。最终可以实现通过Web容器Container的路由加载对应的子项目。
根据一些实施例,图4是根据本公开一个实施例的Web容器加载子项目的举例示意图,如图4所示,第一步可以进行路由劫持,当History满足特定的路由时,通过ajax去获取对应的页面。第二步,可以过滤出页面中body的内容,并将其添加到Container中的对应渲染位置。第三步,可以过滤出页面当中的css和js地址,并加载对应的css和js到当前页面中,从而实现加载根据容器的路径加载子项目。可以加载静态资源,通过Ajax加载link和script的内容,并挂在Container上。第四步,可以进行内容展示,最终实现通过Container的路由加载对应的子项目。
根据一些实施例,其中,第二提取模块通过html方式提取css和js地址。
根据一些实施例,Electron容器包括:
查询模块,用于查询静态资源信息;
第二劫持模块,用于劫持特定路由,并在特定路由被触发时,获取特定路由对应的微服务项目;
第三提取模块,用于提取微服务项目之中的主体内容,并添加至Electron容器中的渲染位置;
加载模块,用于提取微服务项目之中的css和js地址,并在Electron容器中加载css和js地址对应的资源。
根据一些实施例,加载模块通过file协议的方式提取微服务项目之中的css和js地址。
其中,第二劫持模块是指Electron容器中用于劫持特定路由的模块,该第二劫持模块中的第二仅用于与第一劫持模块进行区分。
根据一些实施例,第三提取模块是指Electron容器中用于提取主体内容的模块。该第三提取模块并不特指某一固定模块。该第三提取模块中的第三仅用于与其余提取模块进行区分,并不特指某一固定模块。第三提取模块可以提取微服务项目之中的主体内容,并将该主体内容添加至Electron容器中与该主体内容对应的渲染位置。
在一些实施例之中,加载模块是指Electron容器中用于提取微服务项目之中的层叠样式表css和js地址的模块。该加载模块例如可以过滤出页面当中的css和js地址从而实现加载根据容器的路径加载子项目。最终可以实现通过Electron容器Container的路由加载对应的子项目。
根据一些实施例,图5是根据本公开一个实施例的Electron容器加载子项目的举例示意图,如图5所示,在Electron主进程初始化的阶段,首先请求CDN list interface获取最新的静态资源信息,然后可以获取本地静态资源,可以检查本地静态资源是否有更新。如果有,则可以去CDN上下载最新的静态资源,并对本地静态资源进行更新,从而获取到最新的静态资源。同时,也通过重写History API的方式实现了路由劫持,与Web不同的点在于,Electron容器是通过file协议的方式读取对应的js和css,并加载。从而实现ElectronCotainer加载不同的子项目。
易于理解的是,如果子项目的内容发生变动,只需要重新部署,并更新CDN中的静态资源,以及数据库database中静态资源的位置,然后Electron Cotainer会从CDN listinterface获取最新的静态资源地址并更新。由此实现代码的热更新,从而绕过了PC端发版的过程,因此,可以实现套代码,多端复用,且上线不依赖发版流程,线上bug可以快速响应。
在一个实施例中,如图6所示,图6是根据本公开第一实施例的跨平台客户端的微服务提供方法的流程示意图,该方法可依赖于计算机程序实现,可运行于进行跨平台客户端的微服务提供的装置上。该计算机程序可集成在应用中,也可作为独立的工具类应用运行。
其中,跨平台客户端的微服务提供装置可以是具有跨平台客户端的微服务提供器的电子设备,该电子设备包括但不限于:可穿戴设备、手持设备、个人电脑、平板电脑、车载设备、智能手机、计算设备或连接到无线调制解调器的其它处理设备等。在不同的网络中电子设备可以叫做不同的名称,例如:用户设备、接入终端、用户单元、用户站、移动站、移动台、远方站、远程终端、移动设备、用户终端、终端、无线通信设备、用户代理或用户装置、蜂窝电话、无绳电话、个人数字处理(personal digital assistant,PDA)、第五代移动通信技术(5th Generation Mobile Communication Technology,5G)网络、第四代移动通信技术(the4th generation mobile communication technology,4G)网络、第三代移动通信技术(3rd-Generation,3G)网络或未来演进网络中的电子设备等。
具体的,该跨平台客户端的微服务提供方法包括:
S601,接收客户端发送的子项目加载请求;
根据一些实施例,客户端包括但不限于Web客户端和PC客户端。PC客户端包括但不限于Window客户端、Mac客户端、Linux客户端。
易于理解的是,子项目加载请求是指用于加载子项目的请求。该子项目加载请求并不特指某一固定请求。例如当子项目发生变化时,该子项目加载请求也可以相应变化。例如,当子项目加载请求对应的请求时间点发生变化时,该子项目加载请求也可以相应变化。
易于理解的是,跨平台客户端的微服务提供装置可以接收客户端发送的子项目加载请求。
S602,响应于子项目加载请求,控制多个微服务项目调用桥接模块API根据客户端所属的环境为客户端调用相应的资源;
根据一些实施例,跨平台客户端的微服务提供装置可以控制多个微服务项目调用桥接模块API根据客户端所属的环境为客户端调用相应的资源。即每个微服务项目中集成有桥接模块API。
易于理解的是,客户端所属的环境不同时,为该客户端调用的资源也不相同。
易于理解的是,跨平台客户端的微服务提供装置可以接收客户端发送的子项目加载请求。响应于子项目加载请求,可以控制多个微服务项目调用桥接模块API根据客户端所属的环境为客户端调用相应的资源。
S603,根据相应的资源,控制多种类型的容器加载多个微服务项目之中与子项目加载请求对应的子项目。
根据一些实施例,跨平台客户端的微服务提供装置可以接收客户端发送的子项目加载请求。响应于子项目加载请求,可以控制多个微服务项目调用桥接模块API根据客户端所属的环境为客户端调用相应的资源。根据相应的资源,跨平台客户端的微服务提供装置可以控制多种类型的容器加载多个微服务项目之中与子项目加载请求对应的子项目。
在本公开的一个或者多个实施例之中,通过接收客户端发送的子项目加载请求;可以响应于子项目加载请求,控制多个微服务项目调用桥接模块API根据客户端所属的环境为客户端调用相应的资源,根据相应的资源,控制多种类型的容器加载多个微服务项目之中与子项目加载请求对应的子项目,因此可以根据客户端所属的环境进行子项目的加载,减少无法调用资源使得子项目无法加载的情况,对于大量的业务逻辑无需重复开发,即可在不同端开发相同功能,可以实现一套代码的多端复用,且该装置简化了发版流程,减少对发版流程的依赖,可以减少线上问题的响应时长,提高线上问题的响应效率。另外,通过简化发版流程,可以减少人力的使用,可以节省成本。
在一个实施例中,如图7所示,图7是根据本公开第二实施例的跨平台客户端的微服务提供方法的流程示意图。其中,
S701,接收客户端发送的子项目加载请求;
根据一些实施例,客户端包括但不限于Web客户端和PC客户端。子项目加载请求是指用于加载子项目的请求。该子项目加载请求并不特指某一固定请求。例如当子项目发生变化时,该子项目加载请求也可以相应变化。例如,当子项目加载请求对应的请求时间点发生变化时,该子项目加载请求也可以相应变化。
易于理解的是,跨平台客户端的微服务提供装置可以接收客户端发送的子项目加载请求。
S702,当客户端所属的环境为PC时,控制多个微服务项目调用桥接模块API通过语言交互接口FFI调用动态链接库dll文件;
根据一些实施例,当确定客户端所属的环境为PC时,可以控制多个微服务项目调用桥接模块API通过语言交互接口FFI调用动态链接库dll文件。
易于理解的是,桥接模块API通过语言交互接口FFI调用C++的dll。
在一些实施例之中,可以控制桥接模块API通过用户代理UserAgent判断所处客户端所属的环境。
S703,当客户端所属的环境为Web时,控制桥接模块API通过Web API实现相关功能;
根据一些实施例,当客户端所属的环境为Web时,可以控制桥接模块API通过WebAPI实现相关功能。Web端调用的例如可以是Web Server的接口或者浏览器能力。该浏览器能力例如可以包括视频播放、浏览器下载等。
S704,根据相应的资源,控制多种类型的容器加载多个微服务项目之中与子项目加载请求对应的子项目。
根据一些实施例,当跨平台客户端的微服务提供装置获取到相应的资源,可以根据相应的资源,控制多种类型的容器加载多个微服务项目之中与子项目加载请求对应的子项目。
易于理解的是,该多个类型的容器包括Web容器和Electron容器。当客户端所属的环境为Web时,调用Web容器为客户端服务;或者当客户端所属的环境为PC时,调用Electron容器为客户端服务。
在一些实施例之中,Web容器包括:
第一劫持模块,用于劫持特定路由,并在特定路由被触发时,获取特定路由对应的微服务项目;第一提取模块,用于提取微服务项目之中的主体内容,并添加至Web容器中的渲染位置;第二提取模块,用于提取微服务项目之中的层叠样式表css和js地址,并在Web容器中加载css和js地址对应的资源。
在一些实施例之中,第二提取模块通过html方式提取css和js地址。
在一些实施例之中,Electron容器包括:
查询模块,用于查询静态资源信息;第二劫持模块,用于劫持特定路由,并在特定路由被触发时,获取特定路由对应的微服务项目;第三提取模块,用于提取微服务项目之中的主体内容,并添加至Electron容器中的渲染位置;加载模块,用于提取微服务项目之中的css和js地址,并在Electron容器中加载css和js地址对应的资源。
根据一些实施例,跨平台客户端的微服务提供装置可以保存静态资源在CDN之中的地址,以便于Electron容器进行调用,其中,CDN用于保存微服务项目编译之后的静态资源,因此可以将编译后的静态资源上传CDN,同时可以更新数据库中静态资源在CDN的最新地址,以便与PC端通过CDN列表接口CDN list Interface获取最新的静态资源CDN地址,从而实现热更新。可以减少有业务更新时需要重新开发代码的过程,可以简化更新流程,并减少更新成本。
在本公开的一个或者多个实施例之中,通过接收客户端发送的子项目加载请求,当客户端所属的环境为PC时,控制多个微服务项目调用桥接模块API通过语言交互接口FFI调用动态链接库dll文件,当客户端所属的环境为Web时,控制桥接模块API通过Web API实现相关功能,根据相应的资源,控制多种类型的容器加载多个微服务项目之中与子项目加载请求对应的子项目,因此可以根据客户端所属的环境进行子项目的加载,不同的客户端所属的环境可以采用调用不通过的资源,可以减少无法调用资源使得子项目无法加载的情况,可以实现一套代码的多端复用,且该装置简化了发版流程,减少对发版流程的依赖,可以减少线上问题的响应时长,提高线上问题的响应效率。
在一个实施例中,如图8所示,图8是根据本公开一个实施例的跨平台客户端的微服务提供装置的架构示意图。其中,该装置中包括桥接层、业务层和容器层。该桥接层中包括js-bridge,js-bridge会自动根据所属的环境自动选择通过FFI来调用C++的dll还是直接调用浏览器能力。该浏览器能力包括XHR、下载、视频预览等。业务层包括至少一个子项目,其中,每个子项目都可以直接使用js-bridge提供的API。容器层包括Web Container和Electron Container。在Web Container中,第一步可以进行路由劫持,当History满足特定的路由时,通过ajax去获取对应的页面。第二步,可以过滤出页面中body的内容,并将其添加到Container中的对应渲染位置。第三步,可以过滤出页面当中的css和js地址,并加载对应的css和js到当前页面中,从而实现加载根据容器的路径加载子项目。可以加载静态资源,通过Ajax加载link和script的内容,并挂在Container上。第四步,可以进行内容展示,最终实现通过Container的路由加载对应的子项目。
易于理解的是,在Electron主进程初始化的阶段,首先请求CDN list interface获取最新的静态资源信息,然后可以获取本地静态资源,可以检查本地静态资源是否有更新。如果有,则可以去CDN上下载最新的静态资源,并对本地静态资源进行更新,从而获取到最新的静态资源。同时,也通过重写History API的方式实现了路由劫持,与Web不同的点在于,Electron容器是通过file协议的方式读取对应的js和css,并加载。从而实现ElectronCotainer加载不同的子项目。
本公开的技术方案中,所涉及的用户个人信息的收集、存储、使用、加工、传输、提供和公开等处理,均符合相关法律法规的规定,且不违背公序良俗。
下述为本公开装置实施例,可以用于执行本公开方法实施例。对于本公开装置实施例中未披露的细节,请参照本公开方法实施例。
请参见图9,其示出了用来实现本公开实施例的跨平台客户端的微服务提供方法的一种跨平台客户端的微服务提供装置的结构示意图。该跨平台客户端的微服务提供装置可以通过软件、硬件或者两者的结合实现成为装置的全部或一部分。该跨平台客户端的微服务提供装置900包括请求接收单元901、资源调用单元902和子项目加载单元903,其中:
请求接收单元901,用于接收客户端发送的子项目加载请求;
资源调用单元902,用于响应于子项目加载请求,控制多个微服务项目调用桥接模块API根据客户端所属的环境为客户端调用相应的资源;
子项目加载单元903,用于根据相应的资源,控制多种类型的容器加载多个微服务项目之中与子项目加载请求对应的子项目。
可选地,资源调用单元902,用于控制多个微服务项目调用桥接模块API根据客户端所属的环境为客户端调用相应的资源时,具体用于:
当客户端所属的环境为PC时,控制多个微服务项目调用桥接模块API通过语言交互接口FFI调用动态链接库dll文件;
当客户端所属的环境为Web时,控制桥接模块API通过Web API实现相关功能。
可选地,其中,多个类型的容器包括Web容器和Electron容器。
可选地,资源调用单元902,还用于:
当客户端所属的环境为Web时,调用Web容器为客户端服务;或者
当客户端所属的环境为PC时,调用Electron容器为客户端服务。
可选地,资源调用单元902,还用于:
保存静态资源在CDN之中的地址,以便于Electron容器进行调用,其中,CDN用于保存微服务项目编译之后的静态资源。
可选地,资源调用单元902,还用于:
控制桥接模块API通过用户代理UserAgent判断所处客户端所属的环境。
要说明的是,上述实施例提供的跨平台客户端的微服务提供装置在执行跨平台客户端的微服务提供方法时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的跨平台客户端的微服务提供装置与跨平台客户端的微服务提供方法实施例属于同一构思,其体现实现过程详见方法实施例,这里不再赘述。
上述本公开实施例序号仅仅为了描述,不代表实施例的优劣。
综上,本公开实施例提供的装置,通过请求接收单元901,用于接收客户端发送的子项目加载请求;资源调用单元902,用于响应于子项目加载请求,控制多个微服务项目调用桥接模块API根据客户端所属的环境为客户端调用相应的资源;子项目加载单元903,用于根据相应的资源,控制多种类型的容器加载多个微服务项目之中与子项目加载请求对应的子项目,可以根据客户端所属的环境进行子项目的加载,减少无法调用资源使得子项目无法加载的情况,可以实现一套代码的多端复用,且该装置简化了发版流程,减少对发版流程的依赖,可以减少线上问题的响应时长,提高线上问题的响应效率。
本公开的技术方案中,所涉及的用户个人信息的获取、存储和应用等,均符合相关法律法规的规定,且不违背公序良俗。
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
图10示出了可以用来实施本公开的实施例的示例电子设备1000的示意性框图。其中,本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图10所示,电子设备包括计算单元1001,其可以根据存储在只读存储器(ROM)1002中的计算机程序或者从存储单元1008加载到随机访问存储器(RAM)1003中的计算机程序,来执行各种适当的动作和处理。在RAM 1003中,还可存储电子设备操作所需的各种程序和数据。计算单元1001、ROM 1002以及RAM 1003通过总线1004彼此相连。输入/输出(I/O)接口1005也连接至总线1004。
电子设备中的多个部件连接至I/O接口1005,包括:输入单元1006,例如键盘、鼠标等;输出单元1007,例如各种类型的显示器、扬声器等;存储单元1008,例如磁盘、光盘等;以及通信单元1009,例如网卡、调制解调器、无线通信收发机等。通信单元1009允许电子设备通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元1001可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元1001的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元1001执行上文所描述的各个方法和处理,例如跨平台客户端的微服务提供方法。例如,在一些实施例中,跨平台客户端的微服务提供方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元1008。在一些实施例中,计算机程序的部分或者全部可以经由ROM 1002和/或通信单元1009而被载入和/或安装到电子设备上。当计算机程序加载到RAM 1003并由计算单元1001执行时,可以执行上文描述的跨平台客户端的微服务提供方法的一个或多个步骤。备选地,在其他实施例中,计算单元1001可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行跨平台客户端的微服务提供方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或电子设备上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据电子设备)、或者包括中间件部件的计算系统(例如,应用电子设备)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)、互联网和区块链网络。
计算机系统可以包括客户端和电子设备。客户端和电子设备一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-电子设备关系的计算机程序来产生客户端和电子设备的关系。电子设备可以是云电子设备,又称为云计算电子设备或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务("Virtual Private Server",或简称"VPS")中,存在的管理难度大,业务扩展性弱的缺陷。电子设备也可以为分布式系统的电子设备,或者是结合了区块链的电子设备。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。

Claims (13)

1.一种跨平台客户端的微服务提供装置,包括:
多个微服务项目,每个所述微服务项目均可调用桥接模块API,其中,所述桥接模块API用于根据客户端所属的环境为所述客户端调用相应的资源,所述桥接模块API中设置有JSbridge;
当所述客户端所属的环境为PC时,所述桥接模块API通过语言交互接口FFI调用动态链接库dll文件;
当所述客户端所属的环境为Web时,所述桥接模块API通过Web API实现相关功能;
多种类型的容器,分别用于加载所述多个微服务项目之中的一个,其中,所述多种类型的容器分别与所述客户端所属的环境对应,所述多种类型的容器包括Web容器和Electron容器;
当所述客户端所属的环境为Web时,调用所述Web容器为所述客户端服务,且当所述客户端所属的环境为PC时,调用所述Electron容器为所述客户端服务。
2.如权利要求1所述的装置,其中,所述桥接模块API通过用户代理UserAgent判断所处客户端所属的环境。
3.如权利要求1所述的装置,其中,还包括:
内容分发网络CDN,用于保存所述微服务项目编译之后的静态资源。
4.如权利要求3所述的装置,其中,还包括:
数据库,用于保存所述静态资源在所述CDN之中的地址,以便于所述Electron容器进行调用。
5.如权利要求1所述的装置,其中,所述Web容器包括:
第一劫持模块,用于劫持特定路由,并在所述特定路由被触发时,获取所述特定路由对应的微服务项目;
第一提取模块,用于提取所述微服务项目之中的主体内容,并添加至所述Web容器中的渲染位置;
第二提取模块,用于提取所述微服务项目之中的层叠样式表css和js地址,并在所述Web容器中加载所述css和js地址对应的资源。
6.如权利要求5所述的装置,其中,所述第二提取模块通过html方式提取所述css和js地址。
7.如权利要求1所述的装置,其中,所述Electron容器包括:
查询模块,用于查询静态资源信息;
第二劫持模块,用于劫持特定路由,并在所述特定路由被触发时,获取所述特定路由对应的微服务项目;
第三提取模块,用于提取所述微服务项目之中的主体内容,并添加至所述Electron容器中的渲染位置;
加载模块,用于提取所述微服务项目之中的css和js地址,并在所述Electron容器中加载所述css和js地址对应的资源。
8.如权利要求7所述的装置,其中,所述加载模块通过file协议的方式提取所述微服务项目之中的css和js地址。
9.一种跨平台客户端的微服务提供方法,包括:
接收客户端发送的子项目加载请求;
响应于所述子项目加载请求,控制多个微服务项目中调用桥接模块API根据所述客户端所属的环境为所述客户端调用相应的资源,所述桥接模块API中设置有JSbridge;
其中,所述控制多个微服务项目调用桥接模块API根据所述客户端所属的环境为所述客户端调用相应的资源,包括:
当所述客户端所属的环境为PC时,控制所述多个微服务项目调用桥接模块API通过语言交互接口FFI调用动态链接库dll文件;
在所述客户端所属的环境为Web时,控制所述桥接模块API通过Web API实现相关功能
根据所述相应的资源,控制多种类型的容器加载所述多个微服务项目之中与所述子项目加载请求对应的子项目,所述多种类型的容器包括Web容器和Electron容器;
当所述客户端所属的环境为Web时,调用所述Web容器为所述客户端服务;或者
当所述客户端所属的环境为PC时,调用所述Electron容器为所述客户端服务。
10.如权利要求9所述的方法,其中,所述方法还包括:
保存静态资源在CDN之中的地址,以便于所述Electron容器进行调用,其中,所述CDN用于保存所述微服务项目编译之后的静态资源。
11.如权利要求9所述的方法,其中,所述方法还包括:
控制所述桥接模块API通过用户代理UserAgent判断所处客户端所属的环境。
12.一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其特征在于,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求9-11中任一项所述的方法。
13.一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使所述计算机执行根据权利要求9-11中任一项所述的方法。
CN202310003306.1A 2023-01-03 2023-01-03 跨平台客户端的微服务提供装置、方法和电子设备 Active CN115934076B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310003306.1A CN115934076B (zh) 2023-01-03 2023-01-03 跨平台客户端的微服务提供装置、方法和电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310003306.1A CN115934076B (zh) 2023-01-03 2023-01-03 跨平台客户端的微服务提供装置、方法和电子设备

Publications (2)

Publication Number Publication Date
CN115934076A CN115934076A (zh) 2023-04-07
CN115934076B true CN115934076B (zh) 2024-01-02

Family

ID=86697926

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310003306.1A Active CN115934076B (zh) 2023-01-03 2023-01-03 跨平台客户端的微服务提供装置、方法和电子设备

Country Status (1)

Country Link
CN (1) CN115934076B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116561472B (zh) * 2023-04-14 2023-12-26 广州力麒智能科技有限公司 基于Electron跨平台技术的政务浏览器系统架构

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110874236A (zh) * 2019-11-13 2020-03-10 中国建设银行股份有限公司 一种跨平台应用装置、终端及存储介质
CN111338646A (zh) * 2020-05-20 2020-06-26 腾讯科技(深圳)有限公司 一种微服务架构的管理方法以及相关装置
CN112068943A (zh) * 2020-09-08 2020-12-11 山东省计算中心(国家超级计算济南中心) 一种基于复杂异构环境的微服务调度方法及其实现系统
CN113064593A (zh) * 2021-04-12 2021-07-02 深圳市活力天汇科技股份有限公司 移动app动态化的方法、装置、计算机设备及存储介质
CN113780877A (zh) * 2021-09-24 2021-12-10 国家电网有限公司大数据中心 一种面向低耦合高汇聚易复用的技术架构
CN114424167A (zh) * 2019-05-06 2022-04-29 强力物联网投资组合2016有限公司 用于促进工业物联网系统智能开发的平台
CN114979279A (zh) * 2022-05-23 2022-08-30 河南北斗空间科技有限公司 一种用于数据请求的微服务模块调度方法
CN115086306A (zh) * 2022-08-18 2022-09-20 天津市天河计算机技术有限公司 一种数据传输方法、装置、电子设备和存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10901581B2 (en) * 2018-05-16 2021-01-26 ChartIQ, Inc. Assimilation method and system for browser and non-browser display window

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114424167A (zh) * 2019-05-06 2022-04-29 强力物联网投资组合2016有限公司 用于促进工业物联网系统智能开发的平台
CN110874236A (zh) * 2019-11-13 2020-03-10 中国建设银行股份有限公司 一种跨平台应用装置、终端及存储介质
CN111338646A (zh) * 2020-05-20 2020-06-26 腾讯科技(深圳)有限公司 一种微服务架构的管理方法以及相关装置
CN112068943A (zh) * 2020-09-08 2020-12-11 山东省计算中心(国家超级计算济南中心) 一种基于复杂异构环境的微服务调度方法及其实现系统
CN113064593A (zh) * 2021-04-12 2021-07-02 深圳市活力天汇科技股份有限公司 移动app动态化的方法、装置、计算机设备及存储介质
CN113780877A (zh) * 2021-09-24 2021-12-10 国家电网有限公司大数据中心 一种面向低耦合高汇聚易复用的技术架构
CN114979279A (zh) * 2022-05-23 2022-08-30 河南北斗空间科技有限公司 一种用于数据请求的微服务模块调度方法
CN115086306A (zh) * 2022-08-18 2022-09-20 天津市天河计算机技术有限公司 一种数据传输方法、装置、电子设备和存储介质

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
An empirical study of security practices for microservices systems;Ali Rezaei Nasab等;Journal of Systems and Software;第198卷;第1-19页 *
Design and Implementation of Intelligent Tour Guide Application System;Yizhen Liu等;2022 IEEE 10th Joint International Information Technology and Artificial Intelligence Conference (ITAIC);第10卷;第2176-2179页 *
基于Kubernetes的异构容器云平台的系统架构与方法优化;何丰;中国优秀硕士学位论文全文数据库 信息科技辑(第12期);I139-363 *
基于云原生架构的即时消息系统的设计与实现;龚俊宇;中国优秀硕士学位论文全文数据库 信息科技辑(第4期);I139-165 *

Also Published As

Publication number Publication date
CN115934076A (zh) 2023-04-07

Similar Documents

Publication Publication Date Title
CN115934076B (zh) 跨平台客户端的微服务提供装置、方法和电子设备
CN113641677A (zh) 数据处理方法、装置、电子设备和存储介质
CN112764802A (zh) 一种业务逻辑定制方法、装置、电子设备和存储介质
CN112966201B (zh) 对象处理方法、装置、电子设备以及存储介质
CN112631682B (zh) 小程序处理方法、装置、设备及存储介质
CN115048060B (zh) 一种存储管理方法、装置、电子设备及存储介质
CN114090118B (zh) 启动小程序的方法、装置、设备以及存储介质
CN113612643B (zh) 云手机的网络配置方法、装置、设备以及存储介质
CN113760487B (zh) 一种业务处理方法和装置
CN111176679B (zh) 一种应用程序更新方法和装置
CN113918254A (zh) 语言文本管理方法、装置、存储介质及电子设备
CN113905040A (zh) 文件传输方法、装置、系统、设备以及存储介质
CN113747423A (zh) 云手机状态同步方法、装置、设备、存储介质及程序产品
CN112099841A (zh) 一种生成配置文件的方法和系统
CN113741937B (zh) 用于云终端的应用更新方法、装置及计算机程序产品
CN114157917B (zh) 视频剪辑方法、装置及终端设备
CN112925573B (zh) 网页加载的方法、装置、设备和计算机可读介质
CN114579520B (zh) 镜像数据处理方法、镜像数据加载方法及装置
CN116795362A (zh) 用户定制化页面展示方法、装置和设备
CN115469887A (zh) 云原生应用的发布方法及装置、电子设备和存储介质
CN114051046A (zh) 云数据下发方法、相关装置及计算机程序产品
CN114281436A (zh) 小程序通讯方法、装置、设备和存储介质
CN118246721A (zh) 任务生成方法、装置、电子设备及计算机可读存储介质
CN118627497A (zh) 主题生成方法、装置、电子设备及存储介质
CN118519699A (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