CN116112552B - 嵌入式前后端通信方法、装置、电子设备及存储介质 - Google Patents
嵌入式前后端通信方法、装置、电子设备及存储介质Info
- Publication number
- CN116112552B CN116112552B CN202111327340.1A CN202111327340A CN116112552B CN 116112552 B CN116112552 B CN 116112552B CN 202111327340 A CN202111327340 A CN 202111327340A CN 116112552 B CN116112552 B CN 116112552B
- Authority
- CN
- China
- Prior art keywords
- program
- message
- request message
- end program
- internal
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/466—Transaction processing
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/546—Message passing systems or structures, e.g. queues
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/66—Arrangements for connecting between networks having differing types of switching systems, e.g. gateways
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
- Information Transfer Between Computers (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请实施例提供一种嵌入式前后端通信方法、装置、电子设备及存储介质,所述嵌入式前后端通信方法包括:接收前端发送的第一请求消息,并将所述第一请求消息转换为第一内部消息;其中所述第一请求消息用于请求后端程序处理;判断后端程序是否处于空闲状态,在所述后端程序处于空闲状态的情况下,将所述第一内部消息发送给后端程序以进行处理。本申请实施例提供的嵌入式前后端通信方法、装置、电子设备及存储介质,通过将请求消息的格式统一转换为内部消息的格式,提高了前后端通信传输的效率,通过仅在后端程序空闲时发送内部消息,避免了网关堵塞,实现了前后端之间的稳定传输。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种嵌入式前后端通信方法、装置、电子设备及存储介质。
背景技术
随着越来越多的联接到互联网的嵌入式设备出现在生产生活中,嵌入式设备的后端也越来越多样化,遵循的规范也不尽相同,后端中的各种应用与算法模块大多使用C语言等后端语言编写,而网络前端界面一般使用java、php、js、lua等前端语言编写。
目前,在嵌入式设备中,前端网页与后端算法之间的交互往往存在通信不稳定,效率不高等情况。因此,如何实现嵌入式设备中前后端之间的高效、稳定通信,成为亟需解决的问题。
发明内容
针对现有技术存在的上述问题,本申请实施例提供一种嵌入式前后端通信方法、装置、电子设备及存储介质。
第一方面,本申请实施例提供一种嵌入式前后端通信方法,包括:
接收前端发送的第一请求消息,所述第一请求消息用于请求后端程序处理;
将所述第一请求消息转换为第一内部消息;
判断后端程序是否处于空闲状态,在所述后端程序处于空闲状态的情况下,将所述第一内部消息发送给后端程序以进行处理。
可选地,根据本申请一个实施例的嵌入式前后端通信方法,所述判断后端程序是否处于空闲状态包括:
检测总线消息队列中是否存在待所述后端程序处理的内部消息,在总线消息队列中不存在待所述后端程序处理的内部消息的情况下,判断所述后端程序处于空闲状态。
可选地,根据本申请一个实施例的嵌入式前后端通信方法,将所述第一内部消息发送给后端程序包括:
使用符合外部函数调用接口FFI规范的总线收发模块,将所述第一内部消息排入总线消息队列中,后端程序从总线消息队列读取所述第一内部消息。
可选地,根据本申请一个实施例的嵌入式前后端通信方法,还包括:
接收所述后端程序返回的第二内部消息,并将所述第二内部消息转换为第一返回结果,所述第一返回结果用于前端程序处理。
可选地,根据本申请一个实施例的嵌入式前后端通信方法,所述第一内部消息与所述第二内部消息符合Protobuf格式。
可选地,根据本申请一个实施例的嵌入式前后端通信方法,还包括:
接收前端发送的第二请求消息,并对所述第二请求消息进行处理,生成第二返回结果,所述第二返回结果用于前端程序处理。
可选地,根据本申请一个实施例的嵌入式前后端通信方法,所述第一请求消息与所述第二请求消息符合JSON格式。
第二方面,本申请实施例还提供一种电子设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序以实现以下操作:
接收前端发送的第一请求消息,所述第一请求消息用于请求后端程序处理;
将所述第一请求消息转换为第一内部消息;
判断后端程序是否处于空闲状态,在所述后端程序处于空闲状态的情况下,将所述第一内部消息发送给后端程序以进行处理。
可选地,根据本申请一个实施例的电子设备,所述判断后端程序是否处于空闲状态包括:
检测总线消息队列中是否存在待所述后端程序处理的内部消息,在总线消息队列中不存在待所述后端程序处理的内部消息的情况下,判断所述后端程序处于空闲状态。
可选地,根据本申请一个实施例的电子设备,将所述第一内部消息发送给后端程序包括:
使用符合外部函数调用接口FFI规范的总线收发模块,将所述第一内部消息排入总线消息队列中,后端程序从总线消息队列读取所述第一内部消息。
可选地,根据本申请一个实施例的电子设备,所述处理器还执行所述程序以实现以下操作:
接收所述后端程序返回的第二内部消息,并将所述第二内部消息转换为第一返回结果,所述第一返回结果用于前端程序处理。
可选地,根据本申请一个实施例的电子设备,所述第一内部消息与所述第二内部消息符合Protobuf格式。
可选地,根据本申请一个实施例的电子设备,所述处理器还执行所述程序以实现以下操作:
接收前端发送的第二请求消息,并对所述第二请求消息进行处理,生成第二返回结果,所述第二返回结果用于前端程序处理。
可选地,根据本申请一个实施例的电子设备,所述第一请求消息与所述第二请求消息符合JSON格式。
第三方面,本申请实施例还提供一种嵌入式前后端通信装置,包括:
接收单元,用于接收前端发送的第一请求消息,所述第一请求消息用于请求后端程序处理;
转换单元,用于将所述第一请求消息转换为第一内部消息;
发送单元,用于判断后端程序是否处于空闲状态,在所述后端程序处于空闲状态的情况下,将所述第一内部消息发送给后端程序以进行处理。
第四方面,本申请实施例还提供一种处理器可读存储介质,所述处理器可读存储介质存储有计算机程序,所述计算机程序用于使所述处理器执行根据第一方面任一实施例所述的嵌入式前后端通信方法的步骤。
本申请实施例提供的嵌入式前后端通信方法、装置、电子设备及存储介质,通过将请求消息的格式统一转换为内部消息的格式,提高了前后端通信传输的效率,通过仅在后端程序空闲时发送内部消息,避免了网关堵塞,实现了前后端之间的稳定传输。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种JNI调用方法的流程示意图;
图2是本申请实施例提供的一种fdbus开源架构的示意图;
图3是本申请实施例提供的一种嵌入式前后端通信方法的流程示意图之一;
图4是本申请实施例提供的一种嵌入式前后端通信方法的框图;
图5是本申请实施例提供的一种嵌入式前后端通信方法的流程示意图之二;
图6是本申请实施例提供的一种电子设备的结构示意图;
图7是本申请实施例提供的一种嵌入式前后端通信装置的结构示意图。
具体实施方式
本申请实施例中术语“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
本申请实施例中术语“多个”是指两个或两个以上,其它量词与之类似。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个、三个等,除非另有明确具体的限定。
图1是一种JNI(Java Native Interface,一种用来沟通Java代码和外部的本地代码)调用方法的流程示意图。参考图1,对JNI调用方法进行简要描述。Java是一门面向对象编程语言,具有功能强大和简单易用两个特征。在java框架中有JNI机制,即Java本地接口,通过JNI可以调用本地的c/c++函数,从而实现高效的操作。进一步参考图1,JNI可以这样与本地程序进行交互:首先,创建一个类(.java文件),声明本地方法;然后,使用javaC命令编译源文件,即.java文件声明的本地函数,产生.class文件;接下来进行的操作可分为两个并行的部分,第一部分使用javah-jni(javaH)来生成C头文件(.h文件),这个头文件里面包含了本地方法的函数原型(.c文件实现的本地函数)。第二部分,在Java的虚拟机JVM中用C代码写函数原型的实现;最后,将两部分结合,把C函数使用C编译器、链接器,编译成一个本地库,创建System.loadLibrary(),并将创建的本地库加入到共享库中。
然而,目前在嵌入式设备中广泛应用Linux系统,受限于嵌入式设备本身的内存、CPU、硬盘等资源,且java的大型框架占用资源严重,嵌入式设备常常无法使用Spring、Hibernate等java大型框架,从而无法使用这类成熟框架中JNI机制来调用C程序。此外,通过JNI调用C程序时,C程序利用的进程资源是处于jvm虚拟机管理之下,容易使嵌入式系统的运行变得不稳定。
应用在嵌入式系统的另一种调用方案为开源路由器框架OpenWrt(Open WirelessRouter,一种可用于多种路由器的linux)的LuCI框架,LuCI是OpenWrt上的Web管理界面,LuCI采用了MVC(Model View Controller,即业务模型、用户界面以及控制器)三层架构,使用Lua脚本开发,开发LuCI的配置界面不需要编辑任何的html代码,通过该框架可以将网页上的交互传递到C程序执行。然而LuCI开发虽然很便利,但是它是仅应用在OpenWrt框架中,应用场景有限,并且通过lua实现web前端往往不是主流,很多新的web技术无法第一时间支持。
图2是一种fdbus(Fast Distributed Bus,快速分布式总线)开源架构的示意图,参考图2,对fdbus消息中间件进行简要描述。Linux系统具有多种有效的通讯方案,比如fdbus开源框架,它能够比较容易实现在各C程序间(且只能在C/C++程序间)进行bus总线方式的通讯。基于fdbus开发的中间件层包含多个进程。每个进程可以运行多个线程,fdbus在线程基础上运行特定的事件循环,包括能够执行事务的工作线程。fdbus的通信双方:服务端和客户端统称为端点。端点可以部署在不同的工作线程上;多个端点也可以共享同一个工作线程。中间件开发者可以根据实际情况用一个工作线程来处理多个端点的事件,避免消耗过多线程,更可以避免多线程带来的“并发灾难”。开发者也可以用多个工作线程为一个端点服务,例如端点可以创建工作线程完成耗时的文件下载,视频编解码,外设IO等操作。fdbus更重要的功能是进程间通信。进程之间无法直接传递对象,只能以消息形式交互,并且消息传输过程中需要做序列化,接收到消息后需要做反序列化。数据在进程间的通信采用socket(套接字),包括UDS(Unix Domain Socket,Unix域套接字)和TCP(TransmissionControl Protocol,传输控制协议)套接字。具体采用哪种类型,系统会根据服务端和客户端的部署而自动选择。目前其已经具备多样化的通信模式,例如带超时的同步请求-答复、带超时的异步请求-答复、无答复的命令请求、注册-发布模式以及实现多点广播等。然而,fdbus开源框架仅存在于C程序,框架决定了它们无法跳出后端算法程序而应用到前端。
一些产品上也有通过点对点自定义socket方式进行C与前端的通讯,但都没有形成特别适合嵌入式设备的通用模式。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,并不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图3是本申请实施例提供的一种嵌入式前后端通信方法的流程示意图之一,参考图3,本申请实施例提供的嵌入式前后端通信方法包括:
步骤310,接收前端发送的第一请求消息,所述第一请求消息用于请求后端程序处理;
步骤320,将所述第一请求消息转换为第一内部消息;
在嵌入式前后端通信中,前端,例如浏览器端,会发出请求数据,请求数据格式往往是字符型的,便于直接处理,但在前后端通过交互以完成数据处理的情况下,字符型格式的请求数据不利于传输,耦合性也较差,因此需要转换请求消息的数据格式。
步骤330,判断后端程序是否处于空闲状态,在所述后端程序处于空闲状态的情况下,将所述第一内部消息发送给后端程序以进行处理。
本申请实施例提供的嵌入式前后端通信方法综合了各通讯方案优点,可选地,采用php(Hypertext Preprocessor,超文本预处理器)作为前端设计语言,调用方式则采用耦合度最低的socket(套接字)通讯方式。与很多前后端通讯方案不同的是,该实施例没有采用php语言直接收发socket消息,因为那样做就使php程序独立于总线控制之外。
本申请实施例通过将前后端通讯并入系统总线中,对后端程序的状态进行判断,避免了消息堵塞,从而提升系统通信可靠度。
可选地,在本申请一个实施例中,所述判断后端程序是否处于空闲状态包括:
检测总线消息队列中是否存在待所述后端程序处理的内部消息,在总线消息队列中不存在待所述后端程序处理的内部消息的情况下,判断所述后端程序处于空闲状态。
具体地,后端算法程序的处理时间普遍较长,如果没有消息队列管理,随着前端并发数增加,很可能导致网关直接堵塞没有响应。导致这种情况的原因之一在于php自身的线程池管理程序无法把控算法C程序的状态。
在该实施例中,通过检测总线消息队列中是否存在待所述后端程序处理的内部消息从而判断后端程序是否处于空闲状态,可以避免网关堵塞,实现前后端之间的稳定传输。
可选地,在本申请一个实施例中,将所述第一内部消息发送给后端程序包括:
使用符合外部函数调用接口FFI(Foreign Function Interface,语言交互接口)规范的总线收发模块,将所述第一内部消息排入总线消息队列中,后端程序从总线消息队列读取所述第一内部消息。
具体地,本申请实施例中沿用了Linux系统中总线管理的模式,设计了符合FFI(可以在多种计算机语言中调用其它语言的接口)规范的总线收发C模块,以使php程序具备了和C算法程序一样的形态。所有从web(网页)前端进来的请求都转化为总线bus消息流,统一根据各模块C程序处理情况按序排队进入。在一些实施例中,也可以采用不同于FFI规范的其他规范。
本申请实施例通过上述方案使硬件资源的使用也变得合理,无须进行上锁处理。
图4是本申请实施例提供的一种嵌入式前后端通信方法的框图,参考图4,对本申请实施例提供的嵌入式前后端通信方法做进一步阐述。Php进程具有界面渲染模块410,通讯模块411、FFI语言交互接口412、数据库操作模块413以及其他事务模块414,特别地,FFI语言交互接口不仅联接到通讯模块411,还联接到总线收发C模块415,通过总线收发C模块415收发套接字。套接字通过总线传输到C算法进程,C算法进程包括TensorRT引擎420,算法运算单元421,包括文件下载、视频解码外设IO等线程在内的各个工作线程422,总线接收的消息通过交互指令处理模块423转换为事务,再由工作线程等处理,完成后端程序的工作。总线收发C模块还包括算法模式变更模块424。其中,TensorRT引擎是一种高性能深度学习推理加速引擎,能够使深度学习模型在GPU上进行低延迟、高吞吐量的部署。TensorRT引擎采用C++开发,并提供了C++的API接口。
本申请实施例在调用设计上采用了FFI外部接口模式,以使虚拟机与底层二进制代码之间的交互变得平滑与自然。在该实施例中,没有采用类似JNI的调用方式,而是将socket消息收发模块置于其中,既使php进程调度负荷变得很轻,又能使整个消息交互控制纳入到Linux总线之内,同时前端与后端也能充分解耦,整个系统框架变得非常简洁。
可选地,在本申请一个实施例中,嵌入式前后端通信方法还包括:
接收所述后端程序返回的第二内部消息,并将所述第二内部消息转换为第一返回结果,所述第一返回结果用于前端程序处理。
具体地,后端处理完请求后,产生的返回结果可以通过本申请实施例提供的前后端通信方法传输到前端,从而在前端展示处理结果。
可选地,在本申请一个实施例中,所述第一内部消息与所述第二内部消息符合Protobuf格式。
具体地,本申请实施例在内部消息上采用Protobuf这种二进制格式,让整体传输的效率得到很大的提升。Protobuf是一种数据交换格式,又称PB编码,由Google开源,其内部是纯二进制格式,主要用于数据的序列化和反序列化。本申请提供的嵌入式前后端通信方法通过自定义一次所需的数据格式,即可通过Protobuf编译器自动生成多种语言的源码,以便捷地的读写自定义的格式化的数据,并可用于多种语言,多种平台,且能够在不破坏原数据格式的基础上,依据旧的数据格式,更新现有的数据格式。在一些实施例中,也可以采用不同于Protobuf格式的其他格式。
可选地,在本申请一个实施例中,嵌入式前后端通信方法还包括:
接收前端发送的第二请求消息,并对所述第二请求消息进行处理,生成第二返回结果,所述第二返回结果用于前端程序处理。
具体地,当外部请求进入到php程序后,php程序对该请求进行判断,在不需要后端算法进程处理时,可以直接进行对应数据操作或者界面展示。
可选地,在本申请一个实施例中,所述第一请求消息与所述第二请求消息符合JSON格式。
具体地,JSON(JavaScript Object Notation,JavaScript对象简谱)是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据。在该实施例中,前后端交互可采用的数据格式包括:json、xml以及form表格,web前端一般采用json字符型居多,虽然可读性很强,但是消息长度变得很长,传输效率下降,因此在前后端通信时要进行格式转换,将JSON格式转化为Protobuf格式。
图5是本申请实施例提供的一种嵌入式前后端通信方法的流程示意图之二,参考图5,对本申请实施例提供的嵌入式前后端通信方法做进一步阐述。
从数据流来看,首先在步骤510中,外部http请求进入到php程序,其中web前端采用JSON字符型格式传输,因此外部http请求为JSON字符型格式。在一些实施例中,web前端也可以使用XML格式传输,XML又称为可扩展标记语言,是一种跨语言的数据格式。
然后,php程序判断该http类型JSON格式内容是否需要后端算法进程处理,例如在步骤520,当php程序判断不需要算法进程处理时,可以直接进行对应数据操作或者界面展示。在步骤521返回的结果也是json格式的。
而php程序判断需要算法处理时,会在步骤511将JSON消息转换为Protobuf二进制消息统一格式,并在步骤512传输至总线消息队列,而算法及其他C程序则按照顺序进行依次接收和执行。其中通过FFI接口C模块判断后端程序是否处于空闲状态。
智能算法模块在进程处理完毕后,在步骤513返回算法产生的Protobuf二进制消息格式的结果,中间在步骤514由php程序将Protobuf格式结果转换为JSON格式内容,再返回前端。
本申请实施例提供的嵌入式前后端通信方法具有轻量化、高性能以及高并发队列等优点。
本申请实施例提供的嵌入式前后端通信方法相对于传统前后端已有成熟框架,具有占用体积小,消耗资源少,更简洁等特点。
本申请实施例提供的嵌入式前后端通信方法在内部传输上均采用二进制传输,相比原有JSON格式数据大大减少,有效利用总线上的带宽,性能大幅提升。
本申请实施例提供的嵌入式前后端通信方法区别于一般算法前端web,采用本申请设计的网关负荷大大减少,所有的消息是依次排队执行,相互间无干扰,且消息切换几乎不占用耗时,对硬件的利用率大大提升。
本申请实施例提供的嵌入式前后端通信方法没有采用大型框架依赖的第三方库,仅采用了嵌入式Linux上经典总线bus框架,这使得web前后端不需额外增加开销,非常适合资源较少的嵌入式领域;由于整个传输机制接近二进制C程序原有的通讯方式,即使存在php这类高级语言虚拟机,但由于解耦的关系,内部消息统一为二进制流,性能得到很好的保证;本申请实施例提供的嵌入式前后端通信方法的优势之一在于无需过多考虑前端并发引入的堵塞问题,硬件性能上的瓶颈只会造成消息返回时间变长,但却不会造成网关异常,开发中仅关心算法处理性能即可。
图6示例了一种电子设备的实体结构示意图,如图6所示,该电子设备可以包括:处理器610、收发机620、存储器630和总线接口640。其中,处理器610,收发机620,存储器630通过总线接口640完成相互间的通信。
处理器610可以调用存储器630中的逻辑指令,以执行嵌入式前后端通信方法,该方法包括:接收前端发送的第一请求消息,所述第一请求消息用于请求后端程序处理;将所述第一请求消息转换为第一内部消息;判断后端程序是否处于空闲状态,在所述后端程序处于空闲状态的情况下,将所述第一内部消息发送给后端程序以进行处理。
其中,在图6中,总线接口640可以包括任意数量的互联的总线和桥,具体由处理器610代表的一个或多个处理器和存储器630代表的存储器的各种电路链接在一起。总线架构还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。收发机620提供接口。针对不同的设备,收发机620还可以是能够外接内接需要设备的接口,连接的设备包括但不限于小键盘、显示器、扬声器、麦克风、操纵杆等。
处理器610负责管理总线架构和通常的处理,存储器630可以存储处理器610在执行操作时所使用的数据。
可选的,处理器610可以是CPU(中央处埋器)、ASIC(Application SpecificIntegrated Circuit,专用集成电路)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)或CPLD(Complex Programmable Logic Device,复杂可编程逻辑器件),处理器也可以采用多核架构。
处理器610通过调用存储器存储的计算机程序,用于按照获得的可执行指令执行本申请实施例提供的任一所述方法。处理器与存储器也可以物理上分开布置。
可选地,在本申请一个实施例中,所述判断后端程序是否处于空闲状态包括:
检测总线消息队列中是否存在待所述后端程序处理的内部消息,在总线消息队列中不存在待所述后端程序处理的内部消息的情况下,判断所述后端程序处于空闲状态。
可选地,在本申请一个实施例中,将所述第一内部消息发送给后端程序包括:
使用符合外部函数调用接口FFI规范的总线收发模块,将所述第一内部消息排入总线消息队列中,后端程序从总线消息队列读取所述第一内部消息。
可选地,在本申请一个实施例中,所述处理器还执行所述程序以实现以下操作:
接收所述后端程序返回的第二内部消息,并将所述第二内部消息转换为第一返回结果,所述第一返回结果用于前端程序处理。
可选地,在本申请一个实施例中,所述第一内部消息与所述第二内部消息符合Protobuf格式。
可选地,在本申请一个实施例中,所述处理器还执行所述程序以实现以下操作:
接收前端发送的第二请求消息,并对所述第二请求消息进行处理,生成第二返回结果,所述第二返回结果用于前端程序处理。
可选地,在本申请一个实施例中,所述第一请求消息与所述第二请求消息符合JSON格式。
在此需要说明的是,本发明实施例提供的上述电子设备,能够实现上述方法实施例所实现的所有方法步骤,且能够达到相同的技术效果,在此不再对本实施例中与方法实施例相同的部分及有益效果进行具体赘述。
此外,上述的存储器630中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
图7是本申请实施例提供的一种嵌入式前后端通信装置的结构示意图,参考图7,本申请实施例提供的嵌入式前后端通信装置包括:
接收单元710,用于接收前端发送的第一请求消息,所述第一请求消息用于请求后端程序处理;
转换单元720,用于将所述第一请求消息转换为第一内部消息;
发送单元730,用于判断后端程序是否处于空闲状态,在所述后端程序处于空闲状态的情况下,将所述第一内部消息发送给后端程序以进行处理。
需要说明的是,本申请实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
在此需要说明的是,本发明实施例提供的上述装置,能够实现上述方法实施例所实现的所有方法步骤,且能够达到相同的技术效果,在此不再对本实施例中与方法实施例相同的部分及有益效果进行具体赘述。
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法所提供的嵌入式前后端通信方法,该方法包括:接收前端发送的第一请求消息,所述第一请求消息用于请求后端程序处理;将所述第一请求消息转换为第一内部消息;判断后端程序是否处于空闲状态,在所述后端程序处于空闲状态的情况下,将所述第一内部消息发送给后端程序以进行处理。
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各提供的嵌入式前后端通信方法,该方法包括:接收前端发送的第一请求消息,所述第一请求消息用于请求后端程序处理;将所述第一请求消息转换为第一内部消息;判断后端程序是否处于空闲状态,在所述后端程序处于空闲状态的情况下,将所述第一内部消息发送给后端程序以进行处理。
所述处理器可读存储介质可以是处理器能够存取的任何可用介质或数据存储设备,包括但不限于磁性存储器(例如软盘、硬盘、磁带、磁光盘(MO)等)、光学存储器(例如CD、DVD、BD、HVD等)、以及半导体存储器(例如ROM、EPROM、EEPROM、非易失性存储器(如NANDFLASH)、固态硬盘(SSD))等。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机可执行指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机可执行指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些处理器可执行指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的处理器可读存储器中,使得存储在该处理器可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些处理器可执行指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (12)
1.一种嵌入式前后端通信方法,其特征在于,包括:
接收前端发送的第一请求消息,所述第一请求消息用于请求后端程序处理;
判断是否需要后端程序处理,若需要,则将所述第一请求消息转换为第一内部消息;所述第一请求消息符合JSON格式,所述第一内部消息符合Protobuf格式;
判断后端程序是否处于空闲状态,在所述后端程序处于空闲状态的情况下,将所述第一内部消息发送给后端程序以进行处理;
接收前端发送的第二请求消息;
在判断所述第二请求消息不需要后端程序处理时,采用php程序对所述第二请求消息进行处理,生成第二返回结果,所述第二返回结果用于前端程序处理;所述第二请求消息符合JSON格式,所述第二返回结果符合JSON格式。
2.根据权利要求1所述的嵌入式前后端通信方法,其特征在于,所述判断后端程序是否处于空闲状态包括:
检测总线消息队列中是否存在待所述后端程序处理的内部消息,在总线消息队列中不存在待所述后端程序处理的内部消息的情况下,判断所述后端程序处于空闲状态。
3.根据权利要求2所述的嵌入式前后端通信方法,其特征在于,将所述第一内部消息发送给后端程序包括:
使用符合外部函数调用接口FFI规范的总线收发模块,将所述第一内部消息排入总线消息队列中,所述后端程序从所述总线消息队列读取所述第一内部消息。
4.根据权利要求1所述的嵌入式前后端通信方法,其特征在于,还包括:
接收所述后端程序返回的第二内部消息,并将所述第二内部消息转换为第一返回结果,所述第一返回结果用于所述前端程序处理。
5.根据权利要求4所述的嵌入式前后端通信方法,其特征在于,所述第二内部消息符合Protobuf格式。
6.一种电子设备,包括存储器、收发机、处理器:
存储器,用于存储计算机程序;收发机,用于在所述处理器的控制下收发数据;处理器,用于读取所述存储器中的计算机程序并执行以下操作:
接收前端发送的第一请求消息,所述第一请求消息用于请求后端程序处理;
判断是否需要后端程序处理,若需要,则将所述第一请求消息转换为第一内部消息;所述第一请求消息符合JSON格式,所述第一内部消息符合Protobuf格式;
判断后端程序是否处于空闲状态,在所述后端程序处于空闲状态的情况下,将所述第一内部消息发送给后端程序以进行处理;
接收前端发送的第二请求消息;
在判断第二请求消息不需要后端程序处理时,采用php程序对所述第二请求消息进行处理,生成第二返回结果,所述第二返回结果用于前端程序处理;所述第二请求消息符合JSON格式,所述第二返回结果符合JSON格式。
7.根据权利要求6所述的电子设备,其特征在于,所述判断后端程序是否处于空闲状态包括:
检测总线消息队列中是否存在待所述后端程序处理的内部消息,在总线消息队列中不存在待所述后端程序处理的内部消息的情况下,判断所述后端程序处于空闲状态。
8.根据权利要求7所述的电子设备,其特征在于,将所述第一内部消息发送给后端程序包括:
使用符合外部函数调用接口FFI规范的总线收发模块,将所述第一内部消息排入总线消息队列中,后端程序从总线消息队列读取所述第一内部消息。
9.根据权利要求6所述的电子设备,其特征在于,所述处理器还执行所述程序以实现以下操作:
接收所述后端程序返回的第二内部消息,并将所述第二内部消息转换为第一返回结果,所述第一返回结果用于前端程序处理。
10.根据权利要求9所述的电子设备,其特征在于,所述第一内部消息与所述第二内部消息符合Protobuf格式。
11.一种嵌入式前后端通信装置,其特征在于,包括:
接收单元,用于接收前端发送的第一请求消息,所述第一请求消息用于请求后端程序处理;
转换单元,用于判断是否需要后端程序处理,若需要,则将所述第一请求消息转换为第一内部消息;所述第一请求消息符合JSON格式,所述第一内部消息符合Protobuf格式;
发送单元,用于判断后端程序是否处于空闲状态,在所述后端程序处于空闲状态的情况下,将所述第一内部消息发送给后端程序以进行处理;
所述接收单元还用于:接收前端发送的第二请求消息;
生成单元,用于在判断第二请求消息不需要后端程序处理时,采用php程序对所述第二请求消息进行处理,生成第二返回结果,所述第二返回结果用于前端程序处理;所述第二请求消息符合JSON格式,所述第二返回结果符合JSON格式。
12.一种处理器可读存储介质,其特征在于,所述处理器可读存储介质存储有计算机程序,所述计算机程序用于使所述处理器执行权利要求1至5任一项所述的嵌入式前后端通信方法的步骤。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202111327340.1A CN116112552B (zh) | 2021-11-10 | 2021-11-10 | 嵌入式前后端通信方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202111327340.1A CN116112552B (zh) | 2021-11-10 | 2021-11-10 | 嵌入式前后端通信方法、装置、电子设备及存储介质 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN116112552A CN116112552A (zh) | 2023-05-12 |
| CN116112552B true CN116112552B (zh) | 2026-02-03 |
Family
ID=86256669
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202111327340.1A Active CN116112552B (zh) | 2021-11-10 | 2021-11-10 | 嵌入式前后端通信方法、装置、电子设备及存储介质 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN116112552B (zh) |
Family Cites Families (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2004038876A (ja) * | 2002-07-08 | 2004-02-05 | Hitachi Ltd | プログラム等のデータ形式変換方法及び装置、並びにそのデータ形式変換装置を用いたコントローラ管理システム |
| US10503568B2 (en) * | 2017-09-27 | 2019-12-10 | Oracle International Corporation | Asynchronous handling of service requests |
| US11063780B2 (en) * | 2018-08-20 | 2021-07-13 | T-Mobile Usa, Inc. | Eventually consistent data replication in queue-based messaging systems |
| US10965771B2 (en) * | 2018-09-25 | 2021-03-30 | International Business Machines Corporation | Dynamically switchable transmission data formats in a computer system |
| DE102019209314A1 (de) * | 2019-06-27 | 2020-12-31 | Audi Ag | Verfahren und Prozessoreinrichtung zum Wechseln eines Datenformats von Kommunikationsdaten einer Gerätekommunikation sowie Kraftfahrzeug |
| CN111240855A (zh) * | 2019-12-31 | 2020-06-05 | 中国建设银行股份有限公司 | Api调试系统、方法、存储介质和计算机设备 |
| CN113381870B (zh) * | 2020-03-09 | 2023-01-06 | 华为技术有限公司 | 报文处理方法和设备 |
| CN113507530B (zh) * | 2021-09-09 | 2022-01-04 | 深圳市安软慧视科技有限公司 | 数据转发方法、相关系统和设备及存储介质 |
-
2021
- 2021-11-10 CN CN202111327340.1A patent/CN116112552B/zh active Active
Also Published As
| Publication number | Publication date |
|---|---|
| CN116112552A (zh) | 2023-05-12 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP7433373B2 (ja) | 深層学習モデルの分散トレーニング方法、装置、電子機器、記憶媒体およびコンピュータプログラム | |
| CN110716748B (zh) | 业务处理方法、装置、计算机可读介质及电子设备 | |
| CN109327509A (zh) | 一种主/从架构的低耦合的分布式流式计算框架 | |
| US7607128B2 (en) | Method and system for enabling a server application to be executed in the same virtual machine as a client application using direct object oriented programming method calls | |
| US8806506B2 (en) | System and method for processing messages using a common interface platform supporting multiple pluggable data formats in a service-oriented pipeline architecture | |
| US11948021B2 (en) | Method for inter-core communication, processor, inter-core communication system and computer readable storage medium | |
| CN110941655B (zh) | 一种数据格式转换方法及装置 | |
| CN111176806B (zh) | 一种业务处理方法、装置及计算机可读存储介质 | |
| CN111400000A (zh) | 网络请求处理方法、装置、设备和存储介质 | |
| CN112508768A (zh) | 单算子多模型流水线推理方法、系统、电子设备及介质 | |
| CN113835904A (zh) | 一种远程过程调用控制方法、装置、设备及存储介质 | |
| CN115544409A (zh) | 页面处理方法及装置 | |
| CN108075989B (zh) | 一种基于可扩展协议的负载均衡网络中间件实现方法 | |
| CN112860396A (zh) | 一种基于分布式深度学习的gpu调度方法及系统 | |
| CN112650502A (zh) | 批处理任务处理方法、装置、计算机设备和存储介质 | |
| CN116112552B (zh) | 嵌入式前后端通信方法、装置、电子设备及存储介质 | |
| CN111274018A (zh) | 一种基于dl框架下的分布式训练方法 | |
| CN114816357A (zh) | 一种服务于流程银行的服务编排系统 | |
| CN112860235B (zh) | 处理文本的方法、装置、设备和存储介质 | |
| Gong et al. | Wwof: an energy efficient offloading framework for mobile webpage | |
| CN117370043A (zh) | 一种进程间通信方法、装置、电子设备及存储介质 | |
| CN113626001B (zh) | 一种基于脚本的api动态编排方法及装置 | |
| CN115712524A (zh) | 数据恢复方法及装置 | |
| CN109873831B (zh) | 一种数据传输的方法和系统 | |
| CN115543574A (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 |