一种基于微内核系统的子程序运行方法、装置和电子设备与流程

文档序号:22428335发布日期:2020-10-02 10:05阅读:160来源:国知局
一种基于微内核系统的子程序运行方法、装置和电子设备与流程

本申请涉及计算机技术领域,具体涉及一种基于微内核系统的子程序运行方法、装置和电子设备。



背景技术:

传统的网络(web)应用程序通常采用单体应用架构,由开发者进行视图层和业务逻辑层的功能特性开发。其中,单体应用是指一个归档包包含了应用所有功能的应用程序。

但是随着应用需求的不断增加,应用程序的代码也飞速增长,单体应用的可维护性和灵活性逐渐减低,维护成本越来越高,而且对于单体应用来说,应用代码无法在不同系统间复用。



技术实现要素:

本申请实施例提供一种基于微内核系统的子程序运行方法、装置和电子设备,可以实现了应用程序间的代码隔离,降低了应用程序间的耦合度,提升了应用系统的开发效率。

本申请实施例提供一种基于微内核系统的子程序运行方法,包括:

通过微内核系统的前端系统管理模块,获取针对前端宿主的目标子程序的子程序调用请求,所述子程序调用请求包括所述目标子程序的前端访问路径信息;

通过所述前端系统管理模块,基于所述子程序调用请求中的所述前端访问路径信息,加载所述目标子程序;

调用所述目标子程序,确定所述目标子程序在服务器中对应的目标后端子程序的访问信息;

通过所述目标子程序向所述服务器发送针对所述目标后端子程序的业务处理请求,所述业务处理请求包括所述目标后端子程序的访问信息;

接收所述服务器发送的响应于所述业务处理请求的业务处理结果信息;

基于所述目标子程序对所述业务处理结果信息进行处理,得到所述目标子程序的应用页面,并显示所述应用页面。

本申请实施例提供另一种基于微内核系统的子程序运行方法,包括:

接收终端发送的业务处理请求,所述业务处理请求包括目标后端子程序的访问信息,所述业务处理请求来源于所述目标后端子程序在所述终端中对应的目标子程序;

通过微内核系统的后端系统管理模块,基于所述业务处理请求中的所述访问信息,确定所述目标后端子程序的后端访问路径信息;

通过所述后端系统管理模块,基于所述后端访问路径信息,将所述业务处理请求发送到所述目标后端子程序;

通过所述目标后端子程序对所述业务处理请求进行处理,得到业务处理结果信息;

将所述业务处理结果信息发送给所述终端中的所述目标子程序。

相应的,本申请实施例提供一种基于微内核系统的子程序运行装置,包括:

获取单元,用于通过微内核系统的前端系统管理模块,获取针对前端宿主的目标子程序的子程序调用请求,所述子程序调用请求包括所述目标子程序的前端访问路径信息;

加载单元,用于通过所述前端系统管理模块,基于所述子程序调用请求中的所述前端访问路径信息,加载所述目标子程序;

第一确定单元,用于调用所述目标子程序,确定所述目标子程序在服务器中对应的目标后端子程序的访问信息;

第一发送单元,用于通过所述目标子程序向所述服务器发送针对所述目标后端子程序的业务处理请求,所述业务处理请求包括所述目标后端子程序的访问信息;

第一接收单元,用于接收所述服务器发送的响应于所述业务处理请求的业务处理结果信息;

第一处理单元,用于基于所述目标子程序对所述业务处理结果信息进行处理,得到所述目标子程序的应用页面,并显示所述应用页面。

相应的,本申请实施例提供另一种基于微内核系统的子程序运行装置,包括:

第二接收单元,用于接收终端发送的业务处理请求,所述业务处理请求包括目标后端子程序的访问信息,所述业务处理请求来源于所述目标后端子程序在所述终端中对应的目标子程序;

第二确定单元,用于通过微内核系统的后端系统管理模块,基于所述业务处理请求中的所述访问信息,确定所述目标后端子程序的后端访问路径信息;

第二发送单元,用于通过所述后端系统管理模块,基于所述后端访问路径信息,将所述业务处理请求发送到所述目标后端子程序;

第二处理单元,用于通过所述目标后端子程序对所述业务处理请求进行处理,得到业务处理结果信息;

第三发送单元,用于将所述业务处理结果信息发送给所述终端中的所述目标子程序。

可选的,在本申请的一些实施例中,所述基于微内核系统的子程序运行装置还包括第一注册单元,所述第一注册单元用于目标子程序在所述微内核系统中的注册;所述第一注册单元包括第一获取子单元、第一声明子单元和第一配置子单元,如下:

所述第一获取子单元,用于获取待注册的目标子程序的前端配置文件,所述前端配置文件包括所述目标子程序的前端子程序标识;

第一声明子单元,用于通过所述前端子应用管理模块,对所述前端配置文件进行声明处理,得到前端声明后文件,其中,所述前端声明后文件包括所述目标子程序与前端系统管理模块的依赖信息,以及所述目标子程序与其在服务器中对应的目标后端子程序之间的访问信息映射关系,所述访问信息映射关系包括所述目标子程序和所述目标后端子程序之间的通信接口映射关系;

第一配置子单元,用于通过所述前端子应用管理模块,基于所述前端声明后文件中的依赖信息、访问信息映射关系以及所述前端子程序标识,配置所述目标子程序的路由组件,以完成目标子程序在所述微内核系统中的注册。

可选的,在本申请的一些实施例中,所述基于微内核系统的子程序运行装置还包括第二注册单元,所述第二注册单元用于目标后端子程序在微内核系统中的注册;所述第二注册单元可以包括第二获取子单元、第二声明子单元、建立子单元和第二配置子单元,如下:

所述第二获取子单元,用于获取待注册的目标后端子程序对应的后端配置文件,所述后端配置文件包括所述目标后端子程序的后端子程序标识和访问信息;

第二声明子单元,用于通过所述后端子应用管理模块,对所述后端配置文件进行声明处理,得到后端声明后文件,其中,所述后端声明后文件包括所述目标后端子程序与后端系统管理模块的依赖信息,所述依赖信息包括所述目标后端子程序向所述后端系统管理模块开放的调用接口信息;

建立子单元,用于通过所述后端子应用管理模块,建立所述目标后端子程序的调用接口信息、所述后端子程序标识和所述访问信息之间的路由节点映射关系;

第二配置子单元,用于通过所述后端子应用管理模块,基于所述路由节点映射关系,配置所述目标后端子程序的路由组件,以完成目标后端子程序在所述微内核系统中的注册,所述路由组件用于所述目标后端子程序与终端之间的信息交互。

本申请实施例提供的一种电子设备,包括处理器和存储器,所述存储器存储有多条指令,所述处理器加载所述指令,以执行本申请实施例提供的基于微内核系统的子程序运行方法中的步骤。

此外,本申请实施例还提供一种存储介质,其上存储有计算机程序,其中,所述计算机程序被处理器执行时实现本申请实施例提供的基于微内核系统的子程序运行中的步骤。

本申请实施例提供了一种基于微内核系统的子程序运行方法、装置和电子设备,可以通过微内核系统的前端系统管理模块,获取针对前端宿主的目标子程序的子程序调用请求,所述子程序调用请求包括目标子程序的前端访问路径信息;通过所述前端系统管理模块,基于所述子程序调用请求中的所述前端访问路径信息,加载所述目标子程序;调用所述目标子程序,确定所述目标子程序在服务器中对应的目标后端子程序的访问信息;通过所述目标子程序向所述服务器发送针对所述目标后端子程序的业务处理请求,所述业务处理请求包括所述目标后端子程序的访问信息;接收所述服务器发送的响应于所述业务处理请求的业务处理结果信息;基于所述目标子程序对所述业务处理结果信息进行处理,得到所述目标子程序的应用页面,并显示所述应用页面。本申请实施例通过应用程序插件化的方式,实现了应用程序间的代码隔离,降低了应用程序间的耦合度,提升了应用系统的开发效率。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1a是本申请实施例提供的基于微内核系统的子程序运行方法的场景示意图;

图1b是本申请实施例提供的基于微内核系统的子程序运行方法的流程图;

图1c是本申请实施例提供的基于微内核系统的子程序运行方法的目录结构图;

图2a是本申请实施例提供的基于微内核系统的子程序运行方法的另一流程图;

图2b是本申请实施例提供的基于微内核系统的子程序运行方法的另一目录结构图;

图2c是本申请实施例提供的基于微内核系统的子程序运行方法的架构示意图;

图2d是本申请实施例提供的基于微内核系统的子程序运行方法的页面示意图;

图2e是本申请实施例提供的基于微内核系统的子程序运行方法的另一架构示意图;

图2f是本申请实施例提供的基于微内核系统的子程序运行方法的另一流程图;

图3a是本申请实施例提供的基于微内核系统的子程序运行装置的结构示意图;

图3b是本申请实施例提供的基于微内核系统的子程序运行装置的另一结构示意图;

图3c是本申请实施例提供的基于微内核系统的子程序运行装置的另一结构示意图;

图3d是本申请实施例提供的基于微内核系统的子程序运行装置的另一结构示意图;

图3e是本申请实施例提供的基于微内核系统的子程序运行装置的另一结构示意图;

图3f是本申请实施例提供的基于微内核系统的子程序运行装置的另一结构示意图;

图3g是本申请实施例提供的基于微内核系统的子程序运行装置的另一结构示意图;

图3h是本申请实施例提供的基于微内核系统的子程序运行装置的另一结构示意图;

图3i是本申请实施例提供的基于微内核系统的子程序运行装置的另一结构示意图;

图4是本申请实施例提供的电子设备的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

本申请实施例提供一种基于微内核系统的子程序运行方法、装置和电子设备。

具体地,本申请实施例提供适用于第一电子设备的基于微内核系统的子程序运行装置(为区分,可以称为第一子程序运行装置),该第一电子设备可以为终端等设备。本申请实施例还提供适用于第二电子设备的基于微内核系统的子程序运行装置(为区分,可以称为第二子程序运行装置),该第二电子设备可以为服务器等网络侧设备。

比如,第一子程序运行装置可以集成在终端中。终端可以是手机、平板电脑、笔记本电脑、台式计算机、或个人计算机(pc,personalcomputer)等,但并不局限于此。第二子程序运行装置可以集成在服务器。服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(cdn,contentdeliverynetwork)、以及大数据和人工智能平台等基础云计算服务的云服务器。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。

本申请实施例将以第一电子设备为终端,第二电子设备为服务器为例,来介绍基于微内核系统的子程序运行方法。

如图1a所示,本申请实施例提供了一种基于微内核系统的子程序运行系统,该系统包括终端10和服务器11,终端10与服务器11之间通过网络连接,比如,通过无线网络连接等。其中,终端10中可以集成有客户端。

其中,终端10,可以用于通过微内核系统的前端系统管理模块,获取针对前端宿主的目标子程序的子程序调用请求,所述子程序调用请求包括目标子程序的前端访问路径信息;通过所述前端系统管理模块,基于所述子程序调用请求中的前端访问路径信息,加载所述目标子程序;调用目标子程序,确定所述目标子程序在服务器11中对应的目标后端子程序的访问信息;通过所述目标子程序向所述服务器11发送针对所述目标后端子程序的业务处理请求,所述业务处理请求包括所述目标后端子程序的访问信息;接收所述服务器11发送的响应于所述业务处理请求的业务处理结果信息;基于所述目标子程序对所述业务处理结果信息进行处理,得到所述目标子程序的应用页面,并显示所述应用页面。

其中,服务器11,可以用于接收终端10发送的业务处理请求,所述业务处理请求包括目标后端子程序的访问信息,所述业务处理请求来源于所述目标后端子程序在所述终端10中对应的目标子程序;通过微内核系统的后端系统管理模块,基于所述业务处理请求中的所述访问信息,确定所述目标后端子程序的后端访问路径信息;通过所述后端系统管理模块,基于所述后端访问路径信息,将所述业务处理请求发送到所述目标后端子程序;通过所述目标后端子程序对所述业务处理请求进行处理,得到业务处理结果信息;将所述业务处理结果信息发送给所述终端10中的所述目标子程序。

本实施例中,可以通过一些通信网络来实现终端和服务器之间信息的传输,该通信网络的类型和制式不限。

本申请实施例提供的基于微内核系统的子程序运行方法涉及云技术(cloudtechnology)领域。

其中,云技术(cloudtechnology)是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。云技术是基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,只能通过云计算来实现。

以下分别进行详细说明。需说明的是,以下实施例的描述顺序不作为对实施例优选顺序的限定。

本实施例将从第一子程序运行装置的角度进行描述,该第一子程序运行装置具体可以集成在终端中。本申请实施例的基于微内核系统的子程序运行方法可以应用于各种需要对应用程序插件化场景中,如可以用于产品应用模块化的场景。

本申请实施例提供一种基于微内核系统的子程序运行方法,如图1b所示,该基于微内核系统的子程序运行方法的具体流程可以如下:

101、通过微内核系统的前端系统管理模块,获取针对前端宿主的目标子程序的子程序调用请求,所述子程序调用请求包括所述目标子程序的前端访问路径信息。

其中,微内核(microkernel)是一种能够提供必要服务的操作系统内核,其中这些必要的服务包括任务,线程,交互进程通信以及内存管理等等。微内核架构模式,又称插件架构模式,是实现基于产品的应用程序的一种自然模式。基于产品的应用程序是已经打包好并且拥有不同版本,可作为第三方插件下载的。微内核系统可让用户添加额外的应用如插件,到核心应用,继而提供了可扩展性和功能分离的用法。通过对应用程序插件化,可以将不断扩张的功能分散在插件中,内部集中维护逻辑,类似于数据库横向扩容,结构不变,拆分数据。

本实施例的微内核系统,在现有的微内核系统的基础上进行了改进,本实施例的微内核系统包括前端(即终端或客户端client)的系统和后端(服务器)的系统,可选的,在前端,微内核系统包括:前端系统管理模块(也可以理解为下述示例中的client系统层(clientsystemlayer,简称csl))和前端子应用管理模块(也可以理解为下述示例中的client应用层(clientapplicationlayer,简称cal))。

其中,前端系统管理模块负责:client系统应用的能力维护;具体地,可以支持包括集成react应用能力插件umi-plugin-react、子应用加载路由能力插件umi-plugin-apploader等。前端系统管理模块可以包括子应用路由加载管理子模块,子应用路由加载管理子模块可以支持子应用加载路由能力插件umi-plugin-apploader,具体可以用于加载目标子程序的路由组件。

其中,前端子应用管理模块负责:client子应用层业务功能特性的开发维护。

可选的,一些实施例中,子程序调用请求具体可以是基于用户对前端宿主的功能页面的触发操作而生成的,前端宿主程序可以将该子程序调用请求发送给微内核系统的前端系统管理模块;通过前端系统管理模块,基于子程序调用请求中的前端访问路径信息,可以加载目标子程序。此外,在计算机环境下,软件赖以生存的软件环境被称作是宿主程序。在一些实施例中,微内核系统的前端系统管理模块也可以理解为前端宿主的一部分。

具体的,前端宿主的功能页面包括目标子程序对应的入口,该入口可以以图标、控件等形式存在,本实施例对此没有限制。可选的,子程序调用请求的触发,可以通过针对目标子程序对应的入口的操作实现,当前端宿主程序在功能页面中检测到针对该入口的触发操作时,可以基于自身已知的目标子程序的信息生成针对该目标子程序的子程序调用请求。

在一个示例中,可选的,当前端宿主为浏览器时,若前端宿主程序在功能页面中检测到针对该入口的触发操作时,可以将该前端访问路径信息作为url,在浏览器的地址栏中进行显示。可选的,可以在地址栏已显示的地址的基础上增加前端访问路径信息进行显示,并基于前端访问路径信息生成子程序调用请求,将子程序调用请求发送给微内核系统的前端系统管理模块。

在另一个示例中,当前端宿主为浏览器时,用户可以通过在浏览器的地址栏中输入前端访问路径信息,实现对目标子程序的应用页面的获取。可选的,当前端宿主程序检测到用户在浏览器的地址栏的输入操作时,若用户输入的地址信息的格式为前端访问路径信息的格式,通过前端宿主程序根据用户输入的地址信息获取前端访问路径信息,基于该前端访问路径信息生成子程序调用请求。

其中,目标子程序,即client子应用,可视为宿主程序(前端宿主)的插件程序。前端宿主和目标子程序都部署在终端中。本实施例可以通过插件架构模式,来实现应用程序间的代码隔离,降低应用程序的耦合度。

可选的,一些实施例中,所述微内核系统还包括前端子应用管理模块,步骤“通过微内核系统的前端系统管理模块,获取针对前端宿主的目标子程序的子程序调用请求”之前,还可以包括:

获取待注册的目标子程序的前端配置文件,所述前端配置文件包括所述目标子程序的前端子程序标识;

通过所述前端子应用管理模块,对所述前端配置文件进行声明处理,得到前端声明后文件,其中,所述前端声明后文件包括所述目标子程序与前端系统管理模块的依赖信息,以及所述目标子程序与其在服务器中对应的目标后端子程序之间的访问信息映射关系,所述访问信息映射关系包括所述目标子程序和所述目标后端子程序之间的通信接口映射关系;

通过所述前端子应用管理模块,基于所述前端声明后文件中的依赖信息、访问信息映射关系以及所述前端子程序标识,配置所述目标子程序的路由组件,以完成目标子程序在所述微内核系统中的注册。

其中,目标子程序与前端系统管理模块的依赖信息,可以包括目标子程序向前端系统管理模块开放的调用接口信息,具体可以是前端系统管理模块(前端宿主程序)或者终端中的其他前端子程序调用这个子程序所使用的接口的信息。当前端系统管理模块对用户的访问地址(即前端访问路径信息)进行解析后,可以得到前端子程序标识,基于该前端子程序标识对应的目标子程序的调用接口信息,可以调用或者加载该目标子程序。

其中,对前端配置文件的声明处理具体可以包括对目标子程序的公共组件、服务接口和数据模型等的声明。

在对目标子程序的路由组件配置完成后,可以基于路由组件中的访问信息映射关系,获取目标子程序对应的目标后端子程序的访问信息,该访问信息可以是命令提示符(cmd,commandprompt),具体可以是目标后端子程序的路由接口,基于该访问信息,目标子程序可以将业务处理请求路由到目标后端子程序的路由接口{cmd}。

本实施例中,前端子应用管理模块可以用于对前端配置文件进行声明。具体地,前端子应用管理模块可以包括前端声明子模块、前端路由配置子模块、前端数据模型管理子模块、接口映射管理子模块、以及组件配置子模块。

其中,前端声明子模块可以用于实现目标子程序与前端系统管理模块的连接,其中具体包括声明子应用标识符(即前端子程序标识)、对前端系统管理模块的依赖声明、对全局的依赖声明、对其他子应用的依赖声明、以及自身暴露给其他应用的方法。其中,对全局的依赖声明可以包括:对前端宿主的依赖声明。

其中,前端路由配置子模块负责:目标子程序的路由组件业务功能的开发与维护。

其中,前端数据模型管理子模块负责:目标子程序的数据模型的维护,具体地,可以支持dva与reacthook等数据模型调用方式。

其中,接口映射管理子模块可以用于声明目标子程序的服务接口依赖,封装client请求接口方法,目标子程序与目标后端子程序路由接口的一一映射关系。

其中,组件配置子模块可以用于声明目标子程序的依赖组件,封装应用内公共组件。

可选的,目标子程序的前端声明后文件的结构可以为约定的目录组织结构。约定的client子应用目录组织结构如图1c所示,应用命名空间(appnamespace)可以为目标子程序的前端子程序标识。图1c中前端声明后文件目录声明的含义如下:

子应用的公共组件(components)目录下,声明了目标子程序的依赖组件,封装应用内公共组件,暴露对象为react.component实例(该部分可以通过组件配置子模块来执行);

子应用的服务接口(services)目录下,声明了目标子程序(即client子应用)的服务接口依赖,封装client请求接口方法,与目标后端子程序(即server子应用)路由接口维持一一映射关系,即声明了目标子程序与其在服务器中对应的目标后端子程序之间的访问信息映射关系(该部分可以通过接口映射管理子模块来执行);

子应用的数据模型(models)目录下,声明了目标子程序的数据流方案,支持暴露对象为dvamodel与reacthook两种数据流对象方案。其中dvamodel数据流模型是通过model(模型)的概念把一个领域的模型管理起来,包含同步更新状态(state)的reducers(减速器),处理异步逻辑的effects(效应),订阅数据源的subscriptions(订阅)(该部分可以通过前端数据模型管理子模块来执行);

子应用的路由组件(routercomponent.js)目录下,声明了作为router.config.js配置入口组件,实现了react组件声明周期函数管理,暴露对象为react.component实例(该部分可以通过前端路由配置子模块来执行);

子应用的声明文件(index.js)目录下,声明了目标子程序的调用接口信息,实现目标子程序与client系统层的连接,其中声明了前端子程序标识、对全局的依赖声明、对其他子应用的依赖声明、以及自身暴露给其他应用的方法(该部分可以通过前端声明子模块来执行)。

其中,react是用于构建用户界面的javascript库。

其中,dva是一个基于redux和redux-saga的数据流方案,为了简化开发体验,dva还额外内置了react-router和fetch,因此也可以理解为一个轻量级的应用框架。

其中,reacthooks主要是为了解决react组件状态逻辑复用问题,它是一种状态共享方案,不会产生jsx嵌套地狱问题。jsx是一种javascript的语法扩展,运用于react架构中。元素是构成react应用的最小单位,jsx就是用来声明react当中的元素,react使用jsx来描述用户界面。

102、通过所述前端系统管理模块,基于所述子程序调用请求中的所述前端访问路径信息,加载所述目标子程序。

其中,子程序调用请求具体可以是基于用户对前端宿主程序的功能页面的触发操作而生成的,它可以包括一个请求地址(即前端访问路径信息)。前端访问路径信息可以为网络地址,或者称为统一资源定位符(url,uniformresourcelocator)。在网络中,每一信息资源都有统一的且在网上唯一的地址。

可选的,本实施例中,目标子程序,即client子应用的加载方式可以基于多种前端应用框架实现,如通过umi、react、vue、angular等前端框架实现。

其中,umi是可扩展的企业级前端应用框架。umi以路由为基础的,同时支持配置式路由和约定式路由,保证路由的功能完备,并以此进行功能扩展;并配以生命周期完善的插件体系,覆盖从源码到构建产物的每个生命周期,支持各种功能扩展和业务需求。

其中,react是用于构建用户界面的javascript库。react可以传递多种类型的参数,如声明代码,渲染出界面(ui,userinterface)、也可以是静态的超文本标记语言(html,hypertextmarkuplanguage)文档对象模型(dom,documentobjectmodel)元素、也可以传递动态变量、甚至是可交互的应用组件。其中,javascript是一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为javascript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在html网页上使用,用来给html网页增加动态功能。

其中,vue是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,vue被设计为可以自底向上逐层应用。vue的核心库只关注视图层,易于上手,而且还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,vue也完全能够为复杂的单页应用提供驱动。

其中,angular是一个开发平台。angular集声明式模板、依赖注入、端到端工具和一些最佳实践于一体,可以更轻松的构建web(网络)应用。

可选的,一些实施例中,所述前端系统管理模块包括子应用路由加载管理子模块;步骤“通过所述前端系统管理模块,基于所述子程序调用请求中的所述前端访问路径信息,加载所述目标子程序”,可以包括:

通过所述子应用路由加载管理子模块,基于所述子程序调用请求中的所述前端访问路径信息,加载所述目标子程序的路由组件。

具体地,子应用路由加载管理子模块可以通过umi内置的react-router路由解析功能,对前端访问路径信息进行解析,确定目标子程序内的路由组件routercomponent。

可选的,一些实施例中,所述前端访问路径信息包括所述目标子程序的前端子程序标识和路由组件标识;步骤“通过所述子应用路由加载管理子模块,基于所述子程序调用请求中的所述前端访问路径信息,加载所述目标子程序的路由组件”,可以包括:

通过所述子应用路由加载管理子模块,对所述子程序调用请求中的所述前端访问路径信息进行解析,得到所述目标子程序的前端子程序标识和路由组件标识;

基于所述前端子程序标识和所述路由组件标识,确定所述目标子程序的路由组件;

加载所述目标子程序的路由组件。

另一些实施例中,前端访问路径信息还可以包括前端宿主程序的前端宿主标识。对前端访问路径信息进行解析,可以得到前端宿主标识、前端子程序标识和路由组件标识;可以先基于前端宿主标识,确定前端宿主程序,再基于前端子程序标识,确定目标子程序,进而确定目标子程序的路由组件。

例如,在一具体实施例中,前端访问路径信息可以是/app/{appnamespace}/routercomponent,其中app为前端宿主标识,appnamespace为前端子程序标识,routercomponent为路由组件标识。当用户访问url地址路径为/app/{appnamespace}/routercomponent时,可以通过client系统层的路由解析功能,将路由解析到前端子程序标识对应的目标子程序内的路由组件routercomponent。

103、调用所述目标子程序,确定所述目标子程序在服务器中对应的目标后端子程序的访问信息。

可选的,一些实施例中,步骤“调用所述目标子程序,确定所述目标子程序在服务器中对应的目标后端子程序的访问信息”,可以包括:

调用所述路由组件,确定所述目标子程序在服务器中对应的目标后端子程序的访问信息。

具体地,可以通过路由组件中的访问信息映射关系,确定所述目标子程序在服务器中对应的目标后端子程序的访问信息。

可选的,一些实施例中,步骤“调用所述目标子程序,确定所述目标子程序在服务器中对应的目标后端子程序的访问信息”,可以包括:

通过所述目标子程序中的访问信息映射关系,确定所述目标子程序在服务器中对应的目标后端子程序的访问信息。

其中,在目标子程序的注册阶段,接口映射管理子模块声明了目标子程序与目标后端子程序之间的访问信息映射关系,该访问信息映射关系包括目标子程序和目标后端子程序之间的通信接口映射关系。具体地,访问信息映射关系包含目标后端子程序的访问信息,访问信息具体是目标后端子程序的路由接口。目标子程序可以通过该访问信息,在服务器中确定目标子程序对应的目标后端子程序。

104、通过所述目标子程序向所述服务器发送针对所述目标后端子程序的业务处理请求,所述业务处理请求包括所述目标后端子程序的访问信息。

其中,一些实施例中,在业务处理请求发送到服务器后,可以通过apprequest方法调用目标后端子程序的路由接口{cmd},server系统层可以将接口请求路由到对应的目标后端子程序的路由接口{cmd},以通过目标后端子程序执行后端业务逻辑调用。

具体地,应用内的数据请求方法,可以通过umi-plugin-apploader(子应用加载路由能力插件)暴露的请求方法apprequest,自动路由调用目标后端子程序,自动路由到目标后端子程序的路由接口。即在应用内请求{cmd}路由时,微内核系统的后端系统管理模块(server系统层)可以自动拼装请求路径为/api/{appnamespace}/{cmd},从而将请求路由到server子应用路由接口{cmd}。

其中,apprequest(应用请求)实现原理是基于umi-request实现对request(请求)对象的拦截。

其中,umi-request是基于fetch封装的网络请求库,兼具fetch与axios(轴心)的特点,旨在为开发者提供一个统一的api调用方式,简化使用,并提供诸如缓存、超时、字符编码处理、错误处理等常用功能。其中,fetch是一种http数据请求的方式。axios是一个基于promise的http库,可以用在浏览器和node.js中。promise(预示)是一个对象,它代表了一个异步操作的最终完成或者失败。

可选的,一些实施例中,步骤“通过所述目标子程序向所述服务器发送针对所述目标后端子程序的业务处理请求”,可以包括:

通过所述路由组件向所述服务器发送针对所述目标后端子程序的业务处理请求。

其中,路由组件可以用于数据信息的转发。

可选的,在一些实施例中,通过目标子程序,业务处理请求可以直接发送给目标后端子程序,不需要间接经过微内核系统的后端系统管理模块,再发送给目标后端子程序。

105、接收所述服务器发送的响应于所述业务处理请求的业务处理结果信息。

其中,在一些实施例中,业务处理结果信息可以包含目标子程序的标识信息。当微内核系统的前端系统管理模块接收到服务器发送的业务处理结果信息时,可以对该业务处理结果信息进行解析,得到目标子程序的标识信息;基于该标识信息,将业务处理结果信息发送至目标子程序。

106、基于所述目标子程序对所述业务处理结果信息进行处理,得到所述目标子程序的应用页面,并显示所述应用页面。

可选的,一些实施例中,步骤“基于所述目标子程序对所述业务处理结果信息进行处理,得到所述目标子程序的应用页面,并显示所述应用页面”之后,还可以包括:

当检测到针对所述应用页面的数据获取操作时,通过所述路由组件将所述数据获取操作对应的数据请求发送给服务器,其中,所述数据请求包括所述目标后端子程序的访问信息;

接收所述服务器响应于所述数据请求发送的响应数据信息;

基于所述响应数据信息,更新所述应用页面。

其中,该数据获取操作可以是对应用页面的点击或者表单提交等操作,本实施例对此不作限制。数据获取操作时会在目标子程序的路由组件产生相应的信息交互行为,可以通过路由组件将数据请求发送到服务器,服务器基于数据请求中的目标后端子程序的访问信息,将数据请求路由到对应的目标后端子程序路由接口,再将目标后端子程序生成的响应数据信息返回给目标子应用,以使终端基于该响应数据信息,对应用页面重新渲染。

可选的,一些实施例中,步骤“基于所述目标子程序对所述业务处理结果信息进行处理,得到所述目标子程序的应用页面,并显示所述应用页面”之后,还可以包括:

当检测到针对所述目标子程序的切换操作时,通过所述前端系统管理模块,卸载所述目标子程序;

获取新子程序调用请求,所述新子程序调用请求包括新目标子程序的前端访问路径信息,通过所述前端系统管理模块,基于所述新子程序调用请求中的前端访问路径信息,加载新目标子程序;

将所述新目标子程序作为新的目标子程序,执行所述调用所述目标子程序,确定所述目标子程序在服务器中对应的目标后端子程序的访问信息的步骤,以显示新的目标子程序的应用页面。

其中,该切换操作可以根据实际情况进行设置,本实施例对此不作限制。具体地,用户切换目标子程序,client系统层卸载当前运行的目标子应用,再切换到新的目标子应用,重复上述新的目标子应用加载和对应的应用页面渲染的步骤。

可选的,本实施例中,为了避免对应用页面的渲染时长过长,可以对应用页面进行两层渲染,即可以在加载目标子程序后,先对页面进行初步渲染,在接收到业务处理结果信息后,对应用页面进行再次渲染,具体方法如下所述。

可选的,一些实施例中,步骤“通过所述前端系统管理模块,基于所述子程序调用请求中的所述前端访问路径信息,加载所述目标子程序”之后,还可以包括:

通过所述目标子程序的预设应用页面模型,确定需要渲染的基础页面元素;

根据所述基础页面元素渲染初始应用页面;

所述基于所述目标子程序对所述业务处理结果信息进行处理,得到所述目标子程序的应用页面,并显示所述应用页面,包括:

通过所述目标子程序,基于所述业务处理结果信息,对所述初始应用页面进行渲染,得到所述目标子程序的应用页面,并显示所述应用页面。

其中,可以通过路由组件,调用钩子函数,执行组件渲染方法reactcomponentrender(渲染函数),来渲染初始应用页面。在目标子程序接收到业务处理结果信息后,可以触发reactcomponent状态变更钩子方法,再次调用reactcomponentrender渲染方法,完成应用页面的渲染任务。

其中,钩子函数(即hook函数)指的是在程序启动后插入的代码段,使程序运行新加入的代码来获取目标函数运行时的信息。

可选的,在一些实施例中,根据基础页面元素渲染初始应用页面后,还可以显示初始应用页面。

由上可知,本实施例可以通过微内核系统的前端系统管理模块,获取针对前端宿主的目标子程序的子程序调用请求,所述子程序调用请求包括目标子程序的前端访问路径信息;通过所述前端系统管理模块,基于所述子程序调用请求中的所述前端访问路径信息,加载所述目标子程序;调用所述目标子程序,确定所述目标子程序在服务器中对应的目标后端子程序的访问信息;通过所述目标子程序向所述服务器发送针对所述目标后端子程序的业务处理请求,所述业务处理请求包括所述目标后端子程序的访问信息;接收所述服务器发送的响应于所述业务处理请求的业务处理结果信息;基于所述目标子程序对所述业务处理结果信息进行处理,得到所述目标子程序的应用页面,并显示所述应用页面。本申请实施例通过应用程序插件化的方式,实现了应用程序间的代码隔离,降低了应用程序间的耦合度,提升了应用系统的开发效率。

本实施例将从第二子程序运行装置的角度进行描述,该第二子程序运行装置具体可以集成在服务器中,该服务器具体可以是云服务器等。

本申请实施例提供一种基于微内核系统的子程序运行方法,如图2a所示,该基于微内核系统的子程序运行方法的具体流程可以如下:

201、接收终端发送的业务处理请求,所述业务处理请求包括目标后端子程序的访问信息,所述业务处理请求来源于所述目标后端子程序在所述终端中对应的目标子程序。

本实施例的微内核系统包括前端(即终端或客户端client)的系统和后端(服务器server)的系统,可选的,在后端,微内核系统包括:后端系统管理模块(也可以理解为下述示例中的server系统层(serversystemlayer,简称ssl))和后端子应用管理模块(也可以理解为下述示例中的server应用层(serverapplicationlayer,简称sal))。

其中,后端系统管理模块负责:server系统应用的能力维护;具体地,可以支持包括子应用配置模型koa-config、数据模型koa-model、路由模型能力koa-router、以及子应用加载能力koa-apploader等。后端系统管理模块可以包括子应用加载管理子模块,子应用加载管理子模块具体可以支持子应用加载能力koa-apploader,用于加载目标后端子程序。

其中,后端子应用管理模块负责:server子应用业务功能特性的开发维护。

在一些实施例中,微内核系统的后端系统管理模块也可以理解为后端宿主程序的一部分。

后端宿主具体是针对前端宿主,提供现有服务的应用程序。

其中,目标后端子程序,即server子应用,可视为宿主程序的插件程序,后端宿主和目标后端子程序都部署在服务器中。

可选的,一些实施例中,所述微内核系统还包括后端子应用管理模块;步骤“接收终端发送的业务处理请求”之前,还可以包括:

获取待注册的目标后端子程序对应的后端配置文件,所述后端配置文件包括所述目标后端子程序的后端子程序标识和访问信息;

通过所述后端子应用管理模块,对所述后端配置文件进行声明处理,得到后端声明后文件,其中,所述后端声明后文件包括所述目标后端子程序与后端系统管理模块的依赖信息,所述依赖信息包括所述目标后端子程序向所述后端系统管理模块开放的调用接口信息;

通过所述后端子应用管理模块,建立所述目标后端子程序的调用接口信息、所述后端子程序标识和所述访问信息之间的路由节点映射关系;

通过所述后端子应用管理模块,基于所述路由节点映射关系,配置所述目标后端子程序的路由组件,以完成目标后端子程序在所述微内核系统中的注册,所述路由组件用于所述目标后端子程序与终端之间的信息交互。

其中,目标后端子程序与后端系统管理模块的依赖信息,可以包括目标后端子程序向后端系统管理模块开放的调用接口信息,具体可以是后端系统管理模块(后端宿主程序)或者服务器中的其他后端子程序调用这个子程序所使用的接口的信息。

其中,对后端配置文件的声明处理具体可以包括对目标后端子程序(即server子应用)的公共依赖、配置项和数据模型等的声明。

本实施例中,后端子应用管理模块可以用于对后端配置文件进行声明。具体的,后端子应用管理模块可以包括后端声明子模块、后端路由配置子模块、后端数据模型管理子模块、配置项管理子模块、公共依赖管理子模块。

其中,后端声明子模块可以用于实现目标后端子程序与后端系统管理模块的连接,其中具体包括声明子应用标识符(即后端子程序标识)、对后端系统管理模块的依赖声明、对全局的依赖声明、对其他子应用的依赖声明、以及自身暴露给其他应用的方法。其中,对全局的依赖声明可以包括:对后端宿主的依赖声明。

其中,后端路由配置子模块负责:目标后端子程序的路由接口功能的开发与维护。

其中,后端数据模型管理子模块负责:目标后端子程序的服务端数据模型的开发与维护,声明目标后端子程序的数据模型方案,具体可以是默认通过koa-model支持mysql数据源读取。

其中,配置项管理子模块可以用于声明目标后端子程序的配置项。

其中,公共依赖管理子模块可以用于声明目标后端子程序的公共依赖。

可选的,目标后端子程序的后端声明后文件可以为约定的目录组织结构。约定的server子应用目录组织结构如图2b所示,应用命名空间(appnamespace)可以为目标后端子程序的后端子程序标识。图2b中后端声明后文件目录声明的含义如下:

子应用的公共依赖(libs,库文件)目录下,声明了目标后端子程序的公共依赖(该部分可以通过公共依赖管理子模块来执行);

子应用的公共配置(configs)目录下,声明了目标后端子程序的配置项,暴露对象为js(javascript)对象字面量(该部分可以通过配置项管理子模块来执行);

子应用的数据模型(models)目录下,声明了目标后端子程序的数据模型方案,基于knex可以实现对mysql数据源及其他数据库源的调用,暴露对象为js对象字面量,其中返回数据调用方法(该部分可以通过后端数据模型管理子模块来执行);

子应用的接口路由(routes)目录下,声明了作为目标后端子程序的配置路由组件,实现目标后端子程序的接口逻辑,暴露对象为@koa/router实例(该部分可以通过后端路由配置子模块来执行);

子应用的声明文件(index.js)目录下,声明了目标后端子程序的调用接口信息,实现目标后端子程序与server系统层的连接,其中声明了子应用标识符、对全局的依赖声明、对其他子应用的依赖声明、以及自身暴露给其他应用的方法(该部分可以通过后端子应用管理模块来执行)。

其中,@koa/router是常用的koa的路由库,负责应用路由的定义与加载实现。

其中,knex.js是一种结构化查询语言(sql,structuredquerylanguage)查询生成器,旨在灵活,可移植且易于使用。它支持传统的node.js回调函数分隔方式,也支持现代的async(异步通信)流控制调用方式,支持功能齐全的查询和模式生成器,事务支持(带有保存点savepoints),连接池以及不同查询客户端和方言之间的标准化响应能力。

其中,mysql是一种关系型数据库管理系统,在web应用方面mysql是最好的关系数据库管理系统(rdbms,relationaldatabasemanagementsystem)应用软件之一。

可选的,本实施例中,目标后端子程序,即server子应用的加载方式可以基于多种服务端应用框架实现,如通过koa、egg.js、express、hapi等服务端框架实现。

其中,koa是一个新的web(网络)服务端应用框架,致力于成为web应用和应用程序接口(api,applicationprogramminginterface)开发领域中的一个更小、更富有表现力、更健壮的基石。通过利用async(异步通信)函数,koa废弃了回调函数,并有力地增强错误处理。koa并没有捆绑任何中间件,可以快速编写服务端应用程序。

其中,egg.js为企业级框架和应用而生,它是一种解决企业级开发问题的node.js框架,通过egg.js可以定制出更多上层框架,用于帮助开发团队和开发人员降低开发和维护成本。其中,node.js是能够在服务器端运行javascript的开放源代码、跨平台javascript运行环境。node.js可以基于事件驱动、非阻塞和异步输入输出模型等技术来提高性能,可优化应用程序的传输量和规模。

其中,express是一个保持最小规模的灵活的node.jsweb应用程序开发框架,可以为web和移动应用程序提供一组强大的功能。

其中,hapi是一个开源的、基于node.js的应用框架,它适用于构建应用程序和服务,其设计目标是让开发者把精力集中于开发可重用的应用程序的业务逻辑,向开发者提供构建应用程序业务逻辑所需的基础设施。

具体地,在声明server子应用目录组织结构后,后端系统管理模块的子应用加载管理子模块可以读取server子应用配置列表,自动遍历获取server子应用目录,加载server子应用声明文件,初始化server子应用配置,执行server子应用钩子函数,以及加载server子应用数据模型。通过approuter(应用路由)完成加载server子应用routes路由接口的注册流程。

其中,approuter可以将应用内路由路径{cmd}统一注册到server子应用路由命名空间/api/{appnamespace},或者可以说,建立路由路径{cmd}和/api/{appnamespace}的映射关系,从而实现子应用请求命名空间的隔离。

其中,在对目标后端子程序的注册过程中,加载server子应用声明文件,初始化server子应用配置,执行server子应用钩子函数,以及加载server子应用数据模型,也即对目标后端子程序的加载。具体可以基于子应用加载管理子模块的koa-apploader子应用加载能力,完成对目标后端子程序的加载。

本申请可以通过约定的方式把应用的声明规范化,按照这套规范,实现独立的应用(子应用),实现单个应用生命周期的管理。

202、通过微内核系统的后端系统管理模块,基于所述业务处理请求中的所述访问信息,确定所述目标后端子程序的后端访问路径信息。

可选的,一些实施例中,步骤“通过微内核系统的后端系统管理模块,基于所述业务处理请求中的所述访问信息,确定所述目标后端子程序的后端访问路径信息”,可以包括:

通过微内核系统的后端系统管理模块,从所述业务处理请求中获取所述访问信息;

从已经建立的路由节点映射关系中,获取所述访问信息对应的路由节点映射关系;

对所述访问信息对应的路由节点映射关系中的调用接口信息、后端子程序标识、以及访问信息进行顺序拼接,得到所述目标后端子程序的后端访问路径信息。

其中,在目标后端子程序的注册阶段,通过后端子应用管理模块建立了所述目标后端子程序的调用接口信息、所述后端子程序标识和所述访问信息之间的路由节点映射关系,可以通过后端系统管理模块,从该路由节点映射关系中获取访问信息对应的调用接口信息,和后端子程序标识,再对三者进行顺序拼接,得到目标后端子程序的后端访问路径信息。

在一具体实施例中,目标后端子程序的调用接口信息为api,后端子程序标识为appnamespace,访问信息为cmd,通过后端子应用管理模块建立路由节点映射关系的具体过程可以是:通过后端子应用管理模块的@koa/router对象使用方法,将应用内路由路径{cmd}统一注册到server子应用(即目标后端子程序)路由命名空间/api/{appnamespace}。当server系统层接收到业务处理请求时,可以基于业务处理请求中的访问信息cmd对应的路由节点映射关系,自动拼装请求路径为/api/{appnamespace}/{cmd},/api/{appnamespace}/{cmd}即为目标后端子程序的后端访问路径信息,从而将业务处理请求路由到server子应用路由接口{cmd}。

203、通过所述后端系统管理模块,基于所述后端访问路径信息,将所述业务处理请求发送到所述目标后端子程序。

可选的,在一些实施例中,可以先对业务处理请求进行预处理,再通过所述后端系统管理模块,基于后端访问路径信息,将预处理后的业务处理请求发送给目标后端子程序,其中,该预处理可以是数据格式转换等。

204、通过所述目标后端子程序对所述业务处理请求进行处理,得到业务处理结果信息。

可选的,一些实施例中,步骤“通过所述目标后端子程序对所述业务处理请求进行处理,得到业务处理结果信息”,可以包括:

通过所述目标后端子程序,确定所述目标后端子程序在终端中对应的目标子程序的标识信息;

通过所述目标后端子程序对所述业务处理请求进行处理,得到业务信息;

将所述业务信息与所述目标子程序的标识信息进行融合,得到业务处理结果信息。

其中,对业务信息和目标子程序的标识信息的融合具体可以是将二者进行简单地打包,得到业务处理结果信息。该融合操作可以根据实际情况进行设置,本实施例对此不作限制。目标子程序的标识信息类似于目标后端子程序的访问信息。目标子程序的标识信息具体可以是目标子程序的路由接口。基于该标识信息,目标后端子程序可以将业务处理结果信息路由到目标子程序的路由接口。

205、将所述业务处理结果信息发送给所述终端中的所述目标子程序。

一些实施例中,业务处理结果信息可以包括目标子程序的标识信息。在终端接收到该业务处理结果信息后,前端系统管理模块可以对该业务处理结果信息进行解析,得到目标子程序的标识信息;基于该标识信息,将业务处理结果信息发送至目标子程序。

本申请可以通过插件化的微内核应用系统,实现管理不同分层的应用系统的开发与维护。例如,本申请可以应用于安全运营中心产品应用模块化解决方案,图2c为整体系统应用分层架构图,其中,每个模块可以对应一个插件程序,即子应用,通过将安全运营中产品应用模块化,可以实现分层化管理。

具体地,当用户通过浏览器地址栏访问仪表板(子应用)地址(即前端访问路径信息)时,可以通过微内核应用系统,自动路由查找仪表板client子应用路由组件,调用仪表板server子应用路由接口,得到业务处理结果信息,以完成仪表板子应用的组件渲染,如图2d所示。

本申请可以基于微内核应用系统,扩展单体应用架构的插件化能力,实现可插拔的应用插件系统,也可以基于微前端架构设计模式,进一步实现子应用系统的独立开发、测试、部署应用服务的能力。

其中,微前端是一种类似于微服务的架构,微前端架构设计模式将微服务的理念应用于浏览器端,即将web应用由单一的单体应用转变为多个小型前端应用聚合为一的应用。各个前端应用还可以独立运行、独立开发、独立部署。

根据前面实施例所描述的方法,以下基于微内核应用系统,以umi作为前端应用框架,koa作为服务端应用框架,对基于微内核系统的子程序运行装置作进一步地说明。

其中,微内核应用系统可以由4个分层模块组成,分别是client系统层、client应用层、server系统层和server应用层,如图2e所示,其中,“仪表板”、“报告”“安全智能”为宿主程序的各个模块,每个模块可以对应一个插件程序,即子应用,具体说明如下:

a.client系统层(clientsystemlayer,简称csl),负责client系统应用的能力维护,支持包括集成react应用能力插件(umi-plugin-react)、子应用加载路由能力插件(umi-plugin-apploader),参见图2e,其中插件集可以是umi-plugin-react。

b.client应用层(clientapplicationlayer,简称cal),负责client子应用层业务功能特性的开发维护,支持功能包括:

应用入口声明文件index.js:负责client子应用的应用标识声明,对client系统层(csl)的依赖声明,对其他应用的依赖声明,以及自身需要暴露的声明;

routercomponent路由组件:负责client子应用路由组件业务功能的开发与维护;

models数据模型:负责client子应用数据模型的维护,支持dva与reacthook两种数据模型调用方式。

c.server系统层(serversystemlayer,简称ssl),负责server系统应用的能力维护,支持包括子应用配置模型koa-config、数据模型koa-model、路由模型能力koa-router、以及子应用加载能力koa-apploader。

d.server应用层(serverapplicationlayer,简称sal),负责server子应用业务功能特性的开发维护,支持功能包括:

应用入口声明文件index.js:负责子应用的应用标识声明,对client系统层的依赖声明,对其他应用的依赖声明,以及自身需要暴露的声明;

routes路由接口:负责server子应用路由接口功能的开发与维护;

models数据模型:负责server子应用服务端数据模型的开发与维护,默认通过koa-model支持mysql数据源读取。

其中,umi-plugin-react是官方封装的一个插件集,包含面向react前端组件开发的基础功能特性,集成包括react基础库、antd前端组件库、基于redux的dva数据流解决方案、动态加载组件能力、国际化能力、基于webpack(网页包)的打包构建能力。其中,redux是一种前端架构;antd是一个组件库;webpack是一个模块打包器。

其中,图2e中的后端即服务(baas,backendasaservice)是一种服务端模型,用于为web应用程序和移动应用程序开发人员提供一种将其应用程序链接到后端云存储的方法以及后端应用程序公开的api,同时还提供诸如用户管理,推送通知以及与社交网络服务集成的功能。这些服务是通过使用自定义软件开发套件(sdk)和应用程序编程接口来提供的api。

在一具体实施例中,如图2f所示,为子应用的注册阶段和执行阶段,具体如下所述。

1、client子应用(即目标子程序)的注册阶段:

通过所述前端子应用管理模块,声明约定client子应用的目录组织结构,即声明子应用规范,具体说明可参考上述实施例;再在config/router.config.js配置路由组件routercomponent.js,即可在umi运行过程中自动注册client子应用。应用内的数据请求方法,可以通过umi-plugin-apploader暴露的请求方法apprequest自动路由调用server子应用,自动路由到server子应用路由接口。其中,apprequest实现原理是基于umi-request实现对request对象拦截,即在应用内请求{cmd}路由时,自动拼装请求路径为/api/{appnamespace}/{cmd},从而将请求路由到server子应用路由接口{cmd}。

2、server子应用(即目标后端子程序)注册阶段:

通过所述后端子应用管理模块,声明约定server子应用的目录组织结构,即声明子应用规范,具体说明可参考上述实施例;再通过子应用加载管理子模块的koa-apploader(应用加载)读取server子应用配置列表,自动遍历获取server子应用目录,加载server子应用声明文件,初始化server子应用配置,执行server子应用钩子函数进行预处理,以及加载server子应用数据模型。通过approuter完成加载server子应用routes路由接口的注册流程。其中,approuter实现原理是通过@koa/router对象use方法将应用内路由路径{cmd}统一注册到server子应用路由命名空间/api/{appnamespace},从而实现子应用请求命名空间的隔离,即实现多应用间的代码隔离。

3、子应用执行阶段:

启动client系统层,根据请求url路由加载client应用层,关联client数据模型,通过umi-apploader构造子应用路由请求,将请求调用到server系统层,通过koa-apploader调度执行server应用层,返回处理结果。此外,还可以切换子应用,根据新的子应用对应的请求,来获取相应的数据。

在一具体实施例中,子应用执行阶段如下所述:用户访问地址路径url为/app/{appnamespace}/routercomponent,client系统层通过umi内置的react-router路由解析功能,将路由解析到client子应用内路由组件routercomponent,然后,可以首次调用执行组件渲染方法reactcomponentrender,以渲染初始应用页面;

client子应用路由组件首次渲染方法完成后,可以通过apprequest方法调用server子应用路由接口{cmd},server系统层基于{cmd}的路由节点映射关系,对{cmd}对应的调用接口信息api、后端子程序标识appnamespace以及{cmd}进行顺序拼接,将接口请求路由到对应的server子应用路由接口/api/{appnamespace}/{cmd},执行后端业务逻辑调用,返回业务数据给client子应用,触发reactcomponent状态变更钩子方法,再次调用reactcomponentrender渲染方法,完成数据视图的渲染任务。

其中,react-router是路由组件库,通过管理url,可以实现组件的切换和状态的变化。

传统的web应用系统包含前端展示层client与后端服务层server,目前的相关技术中,通常采用单体应用架构,由web开发者统一负责client视图层与server业务逻辑层的功能特性开发。随着应用需求的增加,代码库也在飞速膨胀。单体应用慢慢变得越来越臃肿,可维护性、灵活性逐渐减低,维护成本越来越高,同时应用代码无法不同系统间复用。

本申请可以在单体应用架构的基础上,实现一套插件化的微内核应用系统,约定子应用的开发组织范式,支持应用生命周期的管理,简化子应用开发的逻辑复杂度,实现应用间的解耦与子应用代码在不同业务系统间可复用的目的,极大提升应用系统的开发效率,降低了代码维护难度和维护成本。

由上可知,本实施例可以接收终端发送的业务处理请求,所述业务处理请求包括目标后端子程序的访问信息,所述业务处理请求来源于所述目标后端子程序在所述终端中对应的目标子程序;通过微内核系统的后端系统管理模块,基于所述业务处理请求中的所述访问信息,确定所述目标后端子程序的后端访问路径信息;通过所述后端系统管理模块,基于所述后端访问路径信息,将所述业务处理请求发送到所述目标后端子程序;通过所述目标后端子程序对所述业务处理请求进行处理,得到业务处理结果信息;将所述业务处理结果信息发送给所述终端中的所述目标子程序。本申请实施例通过应用程序插件化的方式,实现了应用程序间的代码隔离,降低了应用程序间的耦合度,提升了应用系统的开发效率。

为了更好地实施以上方法,本申请实施例还提供一种基于微内核系统的子程序运行系统。如图3a所示,该基于微内核系统的子程序运行系统包括第一子程序运行装置31和第二子程序运行装置32,其中,第一子程序运行装置具体可以集成在终端中,第二子程序运行装置具体可以集成在服务器中。第一子程序运行装置31可以包括获取单元3101、加载单元3102、第一确定单元3103、第一发送单元3104、第一接收单元3105和第一处理单元3106;第二子程序运行装置32可以包括第二接收单元3201、第二确定单元3202、第二发送单元3203、第二处理单元3204和第三发送单元3205,如下:

(1)获取单元3101;

获取单元3101,用于通过微内核系统的前端系统管理模块,获取针对前端宿主的目标子程序的子程序调用请求,所述子程序调用请求包括所述目标子程序的前端访问路径信息。

(2)加载单元3102;

加载单元3102,用于通过所述前端系统管理模块,基于所述子程序调用请求中的所述前端访问路径信息,加载所述目标子程序。

可选的,在本申请的一些实施例中,所述前端系统管理模块包括子应用路由加载管理子模块;所述加载单元3102具体可以用于通过所述子应用路由加载管理子模块,基于所述子程序调用请求中的所述前端访问路径信息,加载所述目标子程序的路由组件。

可选的,在本申请的一些实施例中,所述前端访问路径信息包括所述目标子程序的前端子程序标识和路由组件标识;所述加载单元3102可以包括解析子单元31021、第一确定子单元31022和第一加载子单元31023,参见图3b,如下:

所述解析子单元31021,用于通过所述子应用路由加载管理子模块,对所述子程序调用请求中的所述前端访问路径信息进行解析,得到所述目标子程序的前端子程序标识和路由组件标识;

第一确定子单元31022,用于基于所述前端子程序标识和所述路由组件标识,确定所述目标子程序的路由组件;

第一加载子单元31023,用于加载所述目标子程序的路由组件。

可选的,在本申请的一些实施例中,所述加载单元3102可以包括第二确定子单元31024和渲染子单元31025,参见图3c,如下:

所述第二确定子单元31024,用于通过所述目标子程序的预设应用页面模型,确定需要渲染的基础页面元素;

渲染子单元31025,用于根据所述基础页面元素渲染初始应用页面。

(3)第一确定单元3103;

第一确定单元3103,用于调用所述目标子程序,确定所述目标子程序在服务器中对应的目标后端子程序的访问信息。

可选的,在本申请的一些实施例中,所述第一确定单元3103具体可以用于调用所述路由组件,确定所述目标子程序在服务器中对应的目标后端子程序的访问信息。

可选的,在本申请的一些实施例中,所述第一确定单元3103具体可以用于通过所述目标子程序中的访问信息映射关系,确定所述目标子程序在服务器中对应的目标后端子程序的访问信息。

(4)第一发送单元3104;

第一发送单元3104,用于通过所述目标子程序向所述服务器发送针对所述目标后端子程序的业务处理请求,所述业务处理请求包括所述目标后端子程序的访问信息。

可选的,在本申请的一些实施例中,所述第一发送单元3104具体可以用于通过所述路由组件向所述服务器发送针对所述目标后端子程序的业务处理请求。

(5)第一接收单元3105;

第一接收单元3105,用于接收所述服务器发送的响应于所述业务处理请求的业务处理结果信息。

(6)第一处理单元3106;

第一处理单元3106,用于基于所述目标子程序对所述业务处理结果信息进行处理,得到所述目标子程序的应用页面,并显示所述应用页面。

可选的,在本申请的一些实施例中,所述第一处理单元3106可以包括发送子单元31061、接收子单元31062和更新子单元31063,参见图3d,如下:

所述发送子单元31061,用于当检测到针对所述应用页面的数据获取操作时,通过所述路由组件将所述数据获取操作对应的数据请求发送给服务器,其中,所述数据请求包括所述目标后端子程序的访问信息;

接收子单元31062,用于接收所述服务器响应于所述数据请求发送的响应数据信息;

更新子单元31063,用于基于所述响应数据信息,更新所述应用页面。

可选的,在本申请的一些实施例中,所述第一处理单元3106具体可以用于通过所述目标子程序,基于所述业务处理结果信息,对所述初始应用页面进行渲染,得到所述目标子程序的应用页面,并显示所述应用页面。

可选的,在本申请的一些实施例中,所述第一子程序运行装置31还包括第一注册单元3107,所述第一注册单元3107用于目标子程序在微内核系统中的注册;所述微内核系统还包括前端子应用管理模块;所述第一注册单元3107包括第一获取子单元31071、第一声明子单元31072和第一配置子单元31073,参见图3e,如下:

所述第一获取子单元31071,用于获取待注册的目标子程序的前端配置文件,所述前端配置文件包括所述目标子程序的前端子程序标识;

第一声明子单元31072,用于通过所述前端子应用管理模块,对所述前端配置文件进行声明处理,得到前端声明后文件,其中,所述前端声明后文件包括所述目标子程序与前端系统管理模块的依赖信息,以及所述目标子程序与其在服务器中对应的目标后端子程序之间的访问信息映射关系,所述访问信息映射关系包括所述目标子程序和所述目标后端子程序之间的通信接口映射关系;

第一配置子单元31073,用于通过所述前端子应用管理模块,基于所述前端声明后文件中的依赖信息、访问信息映射关系以及所述前端子程序标识,配置所述目标子程序的路由组件,以完成目标子程序在所述微内核系统中的注册。

可选的,在本申请的一些实施例中,所述第一子程序运行装置31还包括切换单元3108,所述切换单元3108用于切换目标子程序;所述切换单元3108可以包括卸载子单元31081、第二加载子单元31082和返回子单元31083,参见图3f,如下:

所述卸载子单元31081,用于当检测到针对所述目标子程序的切换操作时,通过所述前端系统管理模块,卸载所述目标子程序;

第二加载子单元31082,用于获取新子程序调用请求,所述新子程序调用请求包括新目标子程序的前端访问路径信息,通过所述前端系统管理模块,基于所述新子程序调用请求中的前端访问路径信息,加载新目标子程序;

返回子单元31083,用于将所述新目标子程序作为新的目标子程序,执行所述调用所述目标子程序,确定所述目标子程序在服务器中对应的目标后端子程序的访问信息的步骤,以显示新的目标子程序的应用页面。

(7)第二接收单元3201;

第二接收单元3201,用于接收终端发送的业务处理请求,所述业务处理请求包括目标后端子程序的访问信息,所述业务处理请求来源于所述目标后端子程序在所述终端中对应的目标子程序。

(8)第二确定单元3202;

第二确定单元3202,用于通过微内核系统的后端系统管理模块,基于所述业务处理请求中的所述访问信息,确定所述目标后端子程序的后端访问路径信息。

可选的,在本申请的一些实施例中,所述第二确定单元3202可以包括第三获取子单元32021、第四获取子单元32022和拼接子单元32023,参见图3g,如下:

所述第三获取子单元32021,用于通过微内核系统的后端系统管理模块,从所述业务处理请求中获取所述访问信息;

第四获取子单元32022,用于从已经建立的路由节点映射关系中,获取所述访问信息对应的路由节点映射关系;

拼接子单元32023,用于对所述访问信息对应的路由节点映射关系中的调用接口信息、后端子程序标识、以及访问信息进行顺序拼接,得到所述目标后端子程序的后端访问路径信息。

(9)第二发送单元3203;

第二发送单元3203,用于通过所述后端系统管理模块,基于所述后端访问路径信息,将所述业务处理请求发送到所述目标后端子程序。

(10)第二处理单元3204;

第二处理单元3204,用于通过所述目标后端子程序对所述业务处理请求进行处理,得到业务处理结果信息。

可选的,在本申请的一些实施例中,所述第二处理单元3204可以包括第三确定子单元32041、处理子单元32042和融合子单元32043,参见图3h,如下:

所述第三确定子单元32041,用于通过所述目标后端子程序,确定所述目标后端子程序在终端中对应的目标子程序的标识信息;

处理子单元32042,用于通过所述目标后端子程序对所述业务处理请求进行处理,得到业务信息;

融合子单元32043,用于将所述业务信息与所述目标子程序的标识信息进行融合,得到业务处理结果信息。

(11)第三发送单元3205;

第三发送单元3205,用于将所述业务处理结果信息发送给所述终端中的所述目标子程序。

可选的,在本申请的一些实施例中,所述第二子程序运行装置32还包括第二注册单元3206,所述第二注册单元3206用于目标后端子程序在微内核系统中的注册;所述微内核系统还包括后端子应用管理模块;所述第二注册单元3206可以包括第二获取子单元32061、第二声明子单元32062、建立子单元32063和第二配置子单元32064,参见图3i,如下:

所述第二获取子单元32061,用于获取待注册的目标后端子程序对应的后端配置文件,所述后端配置文件包括所述目标后端子程序的后端子程序标识和访问信息;

第二声明子单元32062,用于通过所述后端子应用管理模块,对所述后端配置文件进行声明处理,得到后端声明后文件,其中,所述后端声明后文件包括所述目标后端子程序与后端系统管理模块的依赖信息,所述依赖信息包括所述目标后端子程序向所述后端系统管理模块开放的调用接口信息;

建立子单元32063,用于通过所述后端子应用管理模块,建立所述目标后端子程序的调用接口信息、所述后端子程序标识和所述访问信息之间的路由节点映射关系;

第二配置子单元32064,用于通过所述后端子应用管理模块,基于所述路由节点映射关系,配置所述目标后端子程序的路由组件,以完成目标后端子程序在所述微内核系统中的注册,所述路由组件用于所述目标后端子程序与终端之间的信息交互。

由上可知,本实施例可以由获取单元3101通过微内核系统的前端系统管理模块,获取针对前端宿主的目标子程序的子程序调用请求;由加载单元3102通过所述前端系统管理模块,基于所述子程序调用请求中的所述前端访问路径信息,加载所述目标子程序;由第一确定单元3103调用所述目标子程序,确定所述目标子程序在服务器中对应的目标后端子程序的访问信息;由第一发送单元3104通过所述目标子程序向所述服务器发送针对所述目标后端子程序的业务处理请求,所述业务处理请求包括所述目标后端子程序的访问信息;通过第一接收单元3105接收所述服务器发送的响应于所述业务处理请求的业务处理结果信息;由第一处理单元3106基于所述目标子程序对所述业务处理结果信息进行处理,得到所述目标子程序的应用页面,并显示所述应用页面;

或者,由第二接收单元3201接收终端发送的业务处理请求;由第二确定单元3202通过微内核系统的后端系统管理模块,基于所述业务处理请求中的所述访问信息,确定所述目标后端子程序的后端访问路径信息;由第二发送单元3203通过所述后端系统管理模块,基于所述后端访问路径信息,将所述业务处理请求发送到所述目标后端子程序;由第二处理单元3204通过所述目标后端子程序对所述业务处理请求进行处理,得到业务处理结果信息;通过第三发送单元3205将所述业务处理结果信息发送给所述终端中的所述目标子程序;

本申请实施例通过应用程序插件化的方式,实现了应用程序间的代码隔离,降低了应用程序间的耦合度,提升了应用系统的开发效率。

本申请实施例还提供一种电子设备,如图4所示,其示出了本申请实施例所涉及的电子设备的结构示意图,具体来讲:

该电子设备可以包括一个或者一个以上处理核心的处理器401、一个或一个以上计算机可读存储介质的存储器402、电源403和输入单元404等部件。本领域技术人员可以理解,图4中示出的电子设备结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:

处理器401是该电子设备的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器402内的软件程序和/或模块,以及调用存储在存储器402内的数据,执行电子设备的各种功能和处理数据,从而对电子设备进行整体监控。可选的,处理器401可包括一个或多个处理核心;优选的,处理器401可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器401中。

存储器402可用于存储软件程序以及模块,处理器401通过运行存储在存储器402的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器402可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据电子设备的使用所创建的数据等。此外,存储器402可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器402还可以包括存储器控制器,以提供处理器401对存储器402的访问。

电子设备还包括给各个部件供电的电源403,优选的,电源403可以通过电源管理系统与处理器401逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源403还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。

该电子设备还可包括输入单元404,该输入单元404可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。

尽管未示出,电子设备还可以包括显示单元等,在此不再赘述。具体在本实施例中,电子设备中的处理器401会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器402中,并由处理器401来运行存储在存储器402中的应用程序。

若该电子设备为终端,则该电子设备可以实现如下功能:

通过微内核系统的前端系统管理模块,获取针对前端宿主的目标子程序的子程序调用请求;基于子程序调用请求中的前端访问路径信息,加载目标子程序;调用目标子程序,确定所述目标子程序在服务器中对应的目标后端子程序的访问信息;通过目标子程序向服务器发送针对所述目标后端子程序的业务处理请求;接收所述服务器发送的响应于所述业务处理请求的业务处理结果信息;基于目标子程序对业务处理结果信息进行处理,得到所述目标子程序的应用页面,并显示所述应用页面。

若该电子设备为服务器,则该电子设备可以实现如下功能:

接收终端发送的业务处理请求;通过微内核系统的后端系统管理模块,基于所述业务处理请求中的所述访问信息,确定所述目标后端子程序的后端访问路径信息;通过所述后端访问路径信息,将所述业务处理请求发送到所述目标后端子程序;通过所述目标后端子程序对所述业务处理请求进行处理,得到业务处理结果信息;将所述业务处理结果信息发送给所述终端中的所述目标子程序。

以上各个操作的具体实施可参见前面的实施例,在此不再赘述。

由上可知,本实施例可以通过微内核系统的前端系统管理模块,获取针对前端宿主的目标子程序的子程序调用请求;基于所述子程序调用请求中的所述前端访问路径信息,加载所述目标子程序;调用所述目标子程序,确定所述目标子程序在服务器中对应的目标后端子程序的访问信息;通过所述目标子程序向所述服务器发送针对所述目标后端子程序的业务处理请求,业务处理请求包括所述目标后端子程序的访问信息;接收服务器发送的响应于业务处理请求的业务处理结果信息;基于目标子程序对业务处理结果信息进行处理,得到所述目标子程序的应用页面,并显示所述应用页面。本申请实施例通过应用程序插件化的方式,实现了应用程序间的代码隔离,降低了应用程序间的耦合度,提升了应用系统的开发效率。

本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。

为此,本申请实施例提供一种存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本申请实施例所提供的任一种基于微内核系统的子程序运行方法中的步骤。例如,该指令可以执行如下步骤:

通过微内核系统的前端系统管理模块,获取针对前端宿主的目标子程序的子程序调用请求;基于所述子程序调用请求中的所述前端访问路径信息,加载所述目标子程序;调用所述目标子程序,确定所述目标子程序在服务器中对应的目标后端子程序的访问信息;通过所述目标子程序向所述服务器发送针对所述目标后端子程序的业务处理请求;接收所述服务器发送的响应于所述业务处理请求的业务处理结果信息;基于所述目标子程序对所述业务处理结果信息进行处理,得到所述目标子程序的应用页面,并显示所述应用页面;或者,

接收终端发送的业务处理请求;通过微内核系统的后端系统管理模块,基于所述业务处理请求中的所述访问信息,确定所述目标后端子程序的后端访问路径信息;通过所述后端访问路径信息,将所述业务处理请求发送到所述目标后端子程序;通过所述目标后端子程序对所述业务处理请求进行处理,得到业务处理结果信息;将所述业务处理结果信息发送给终端中的所述目标子程序。

以上各个操作的具体实施可参见前面的实施例,在此不再赘述。

其中,该存储介质可以包括:只读存储器(rom,readonlymemory)、随机存取记忆体(ram,randomaccessmemory)、磁盘或光盘等。

由于该存储介质中所存储的指令,可以执行本申请实施例所提供的任一种基于微内核系统的子程序运行方法中的步骤,因此,可以实现本申请实施例所提供的任一种基于微内核系统的子程序运行方法所能实现的有益效果,详见前面的实施例,在此不再赘述。

根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述基于微内核系统的子程序运行方面的各种可选实现方式中提供的方法。

以上对本申请实施例所提供的一种基于微内核系统的子程序运行方法、装置和电子设备进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1