一种程序处理方法、终端、服务器及计算机存储介质
技术领域
本发明涉及计算机技术领域,尤其涉及一种程序处理方法、终端、服务器及计算机存储介质。
背景技术
目前嵌入式装置的可视化开发环境普遍是单机版本模式,这种单机版本的模式一来需要用户在单机上安装较大的安装包,占用单机较大的存储空间;二来对于提供安装包的服务商而言,安装包中的各程序文件容易被不法获取,从而不利于安装包中各程序文件的信息安全。
发明内容
本发明实施例提供了一种程序运行方法、终端、服务器及计算机存储介质。
本发明实施例的技术方案是这样实现的:
本发明实施例提供了一种程序处理方法,所述方法包括:
接收终端发送的可视化工程的作业信息,其中,所述作业信息至少包括可视化工程标识以及可视化开发编译环境信息;
在所述可视化开发编译环境信息对应的可视化开发编译环境中,生成所述可视化工程标识所标识的可视化工程的代码文件;
编译所述代码文件;
根据编译后的代码文件,生成供所述终端运行的目标文件;
将所述目标文件发送给所述终端。
上述方案中,所述可视化开发编译环境信息包括:可视化开发编译环境类型、可视化开发编译环境版本;
所述在所述可视化开发编译环境信息对应的可视化开发编译环境中,生成所述可视化工程标识所标识的可视化工程的代码文件,包括:
根据所述可视化编译环境类型、可视化开发编译环境版本,确定对应的可视化开发编译环境;
在所述可视化开发编译环境中,生成所述可视化工程标识所标识的可视化工程的代码文件。
上述方案中,所述在所述可视化开发编译环境对应的可视化开发编译环境中,生成所述可视化工程标识所标识的可视化工程的代码文件,包括:
根据可视化工程标识以及可视化开发编译环境信息,在非关系型数据库中读取所述可视化工程的第一中间文件;
根据所述第一中间文件,在所述可视化开发编译环境对应的可视化开发编译环境中,生成所述可视化工程对应的代码文件。
上述方案中,所述方法还包括:
接收所述终端发起的连接请求;
基于所述连接请求,反馈连接结果;
若连接结果为连接成功,则接收终端发送的可视化工程的作业信息。
上述方案中,所述接收所述终端发送的连接请求之前,包括:
接收终端发送的查询广播消息;
基于所述查询广播消息,向所述终端回复对应的状态信息;其中,所述状态信息用于供所述终端能够根据所述状态信息选择所连接的服务器。
上述方案中,所述方法还包括:将所述目标文件打包成驱动包文件。
上述方案中,所述方法还包括:
反馈所述生成所述可视化工程标识所标识的可视化工程的代码文件和/或所述编译所述代码文件中所产生的错误信息;
接收所述终端基于所述错误信息重新发送的校正后的作业信息。
上述方案中,所述将所述目标文件发送给所述终端之后,包括:
将所述生成所述可视化工程标识所标识的可视化工程的代码文件和/或所述编译所述代码文件中所产生的第二中间文件删除。
本发明实施例还提供一种程序处理方法,应用于终端,所述方法包括:
向服务器上传可视化工程的作业信息;其中,所述作业信息至少包括:可视化工程标识以及可视化开发编译环境信息;
接收服务器根据所述作业信息返回的目标文件;
运行所述目标文件并输出所述目标文件的运行结果。
上述方案中,述方法还包括:
向所述服务器发起连接请求;
接收所述服务器基于所述连接请求反馈的连接结果;
若所述连接结果为连接成功,则向所述服务器上传可视化工程的作业信息。
上述方案中,所述向所述服务器发起连接请求之前,所述方法还包括:
向所述服务器所在的集群发送查询广播消息;其中,所述集群中的各个服务器采用平行架构的方式进行部署;
接收所述集群中各个服务器基于所述查询广播消息回复的对应的状态信息;
基于所述各个服务器对应的状态信息,选出所述服务器。
上述方案中,所述基于所述各个服务器对应的状态信息,选出所述服务器,包括:
根据各个服务器对应的状态信息,确定所述各个服务器的负载率;
根据各个服务器的负载率,确定负载率最小的服务器,作为选出的所述服务器。
上述方案中,所述方法还包括:
接收所述服务器根据所述作业信息返回的目标文件过程中所产生的错误信息;
基于所述错误信息,校正所述作业信息。
本发明实施例还提供一种服务器,包括:处理器和用于存储能够在处理器上运行的计算机程序的存储器,其中所述处理器用于运行所述计算机程序时,实现如上述所述的程序处理方法。
本发明实施例还提供一种终端,包括:处理器和用于存储能够在处理器上运行的计算机程序的存储器,其中所述处理器用于运行所述计算机程序时,实现如上述所述的程序处理方法。
本发明实施例还提供一种计算机存储介质,存储有可执行程序,所述可执行程序被处理器执行时,实现如上述所述的程序处理方法。
上述实施例所提供的程序处理方法、终端及计算存储介质,应用于服务器时,通过接收终端发送的可视化工程的作业信息,其中,所述作业信息至少包括:可视化工程标识以及可视化开发编译环境信息;在所述可视化开发编译环境信息对应的可视化开发编译环境中,生成所述可视化工程标识所标识的可视化工程的代码文件;编译所述代码文件;根据编译后的代码文件,生成供所述终端运行的目标文件;将所述目标文件发送给所述终端。如此,终端作为发起可视化工程,也就是发送可视化工程的作业信息的操作一端,而服务器作为可视化工程对应的程序代码生成和编译的一端,相对于现有技术将用户操作与程序代码的生成编译等都由终端来执行而言,一方面,可以将程序代码生成所需要的相关文件存储到终端设备以外的设备中,可以节省终端的内存存储空间;另一方面,将程序代码的生成与编译放在服务器端,终端只保留用户操作界面及编译后生成的目标文件,可以有效保护商家针对可视化工程所编写的相关程序文件以及可视化工程在程序代码生成以及编译过程中所产生的各类文件信息的安全性。
附图说明
图1为本发明实施例所提供的程序处理方法的流程示意图;
图2为本发明实施例所提供的程序处理方法的另一流程示意图;
图3为本发明具体实施例所提供的程序处理的系统组成示意图;
图4为本发明具体实施例所提供的程序处理方法的流程示意图;
图5为本发明实施例所提供的程序处理装置的功能模块示意图;
图6为本发明实施例所提供的程序处理装置的另一功能模块示意图;
图7为本发明实施例所提供的服务器的硬件结构示意图。
具体实施方式
以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。本文所使用的术语“和/或”包括一个或多个相关的所列项目的任意的和所有的组合。
本发明实施例提供的程序处理方法,主要应用于程序处理系统中,该系统将可视化工程的图形编程界面部署在终端,可视化工程的可视化开发编译环境部署在服务器。
可以理解的是,在本发明的实施例中,终端用于提供可视化编程的图形化编辑界面,服务器用于基于图形化编程,生成对应的代码和编译所述代码,然后将编译后的产物返回给终端,供终端运行。这里,通过终端与服务器之间的交互来实现可视化编程的程序处理。
进一步地,程序处理系统中可部署多台服务器以及多台终端,可以使得多台终端连接同一台服务器,使用统一的可视化开发编译环境,或者由服务器调用统一的可视化开发编译环境供多台终端的可视化工程所用,如此,可以实现多人协同工作下统一的编译环境,支持多人并发操作。以下仅以一台服务器与一台终端进行交互为例。
基于上述程序处理系统,本发明实施例提出了一种应用于服务器的程序处理方法。图1为本发明实施例所提供的程序处理方法的流程示意图,如图1所示,所述方法包括以下步骤:
步骤101:接收终端发送的可视化工程的作业信息,其中,所述作业信息至少包括可视化工程标识以及可视化开发编译环境信息。
这里,服务器接收终端发送的可视化工程信息的作业信息,所述作业信息至少包括可视化工程标识以及可视化开发编译环境信息。其中,所述可视化工程标识可以理解为用于区分不同可视化工程的标识符,通过该可视化工程标识可以读取到可视化工程对应的文件信息,以便基于这些文件信息生成代码文件。所述可视化开发编译环境信息,则是基于表征可视化开发编译环境的相关信息,例如可视化开发编译环境类型,可视化开发编译环境版本等信息。
这里,所述作业信息是终端基于接收到用户针对可视化工程编程中输入的信息转换而成。例如,在终端的操作界面提供有可供用户选择的可视化开发编译环境A对应的选项,及可视化开发编译环境B对应的选项,终端基于用户通过虚拟控件所选择的可视化开发编译环境的选项指令,终端基于所述指令传达的输入信息,将所述输入信息转换成所述可视化开发环境选项对应的可视化开发环境信息作为作业信息发送至服务器。
步骤102:在所述可视化开发编译环境信息对应的可视化开发编译环境中,生成所述可视化工程标识所标识的可视化工程的代码文件。
这里,所述可视化编译环境包括:编程符号库、可视化编程工程、代码生成工具、编译器、系统库目录和编译管理工程,其中,编译符号库包括若干用于编程的符号库文件,可视化编程用于设计终端的可视化程序和人际接口菜单;代码生成工具用于将可视化程序转换成编程语言代码,以及形成人机接口菜单配置文件;编译器为第三方芯片厂家提供的配到编译环境,包括编译器文件、编译库文件和编译头文件;系统库目录为终端平台目录,包括系统库文件和系统头文件;编译管理工具用于形成Makefile文件,调用编译器编译程序,并调用链接器将相关内容链接为可执行文件。
在一实施方式中,所述可视化开发编译环境可以被部署在服务器中,根据接收到的可视化开发编译环境信息选择对应的可视化开发编译环境。
在另一实施方式中,所述可视化开发编译环境的相关文件存储在数据库或分布式存储在集群中,可由服务器基于作业信息进行调用。
这里,服务器在所述可视化开发编译环境信息对应的可视化开发编译环境中,将根据可视化工程标识所标识的可视化工程生成编程语言的代码文件。例如,如果可视化编译环境为C/C++环境,则可以将可视化工程标识所标识的可视化工程生成C/C++语言代码文件。
步骤103:编译所述代码文件。
这里,服务器利用开发编译环境调用编译器将所述代码文件进行编译,编译成机器语言,例如二进制语言。
步骤S104:根据编译后的代码文件,生成供所述终端运行的目标文件。
这里,服务器根据编译后的代码文件,生成具有机器语言的能够供所述终端运行的目标文件,例如二进制目标文件。
步骤S105:将所述目标文件发送给所述终端。
这里,服务器将所述目标文件发送给所述终端,再由终端运行所述目标文件,得到所述目标文件的运行结果。
在本实施例中,服务器通过接收终端发送的可视化工程的作业信息,其中,所述作业信息至少包括:可视化工程标识以及可视化开发编译环境信息;在所述可视化开发编译环境信息对应的可视化开发编译环境中,生成所述可视化工程标识所标识的可视化工程的代码文件;编译所述代码文件;根据编译后的代码文件,生成供所述终端运行的目标文件;将所述目标文件发送给所述终端。如此,终端作为发起可视化工程,也就是发送可视化工程的作业信息的操作一端,而服务器作业程序代码生成和编译的一端,相对于现有技术将用户操作与程序代码的生成编译等都由终端来执行而言,一方面,可以将程序代码生成所需要的相关文件存储到终端设备以外的设备中,可以节省终端设备的内存存储空间;另一方面,将程序代码的生成与编译放在服务器端,终端只保留用户操作界面及编译后生成的目标文件,可以有效保护商家针对可视化工程所编写的相关程序代码以及可视化工程在程序文件以及可视化工程在程序代码生成以及编译过程中所产生的各类文件信息的安全性。
在另一实施方式中,可视化开发编译环境信息包括:可视化开发编译环境类型、可视化开发编译环境版本;所述步骤102,可以包括:根据所述可视化开发编译环境类型、可视化开发编译环境版本,确定对应的可视化开发编译环境;然后在所述可视化开发编译环境中,生成所述可视化工程标识所标识的可视化工程的代码文件。
可以理解的是,服务器或者程序处理系统中可视化开发编译环境可以是多个,终端需要在多个可视化开发编译环境中进行选择,如此,需要向服务器提供可视化开发编译环境类型以及可视化开发编译环境版本,以供服务器来确定所选择的可视化开发编译环境。在所确定的可视化开发编译环境中,生成所述可视化工程标识所标识的可视化工程的代码文件。如此,通过由可视化开发编译环境类型与可视化开发编译版本能够快速确定出可视化开发编译环境,在终端侧能够仅根据可视化开发编译环境类型以及可视化开发编译环境版本的选择为不同的可视化工程选择不同的可视化开发编译环境,不占用终端的存储空间,同时还可以让终端能够同时支持不同可视化开发编译环境,以扩展终端对不同可视化工程的执行,提升了可视化编程的多样性,提升用户体验。
在另一实施方式中,所述步骤102:还可以包括:根据可视化工程标识以及可视化开发编译环境信息,在非关系型数据库中读取所述可视化工程的第一中间文件;根据所述第一中间文件,在所述可视化开发编译环境对应的可视化开发编译环境中,生成所述可视化工程对应的代码文件。
需要说明的是,在可视化工程中,图形化编程后生成的第一中间文件,所述第一中间文件携带有能够在可视化开发编译环境中生成代码文件的各类参数的文件,例如可视化工程的配置文件以及可视化工程的页面文件。
这里,所述第一中间文件被存储在非关系型数据库中,在服务器接收到作业信息后,根据作业信息中的可视化工程标识,在所述非关系数据库中搜索所述可视化工程标识对应的第一中间文件,获取所述第一中间文件。再根据所述第一中间文件,在所述可视化开发编译环境对应的可视化开发编译环境中,生成所述可视化工程对应的代码文件。
在本实施例中,所述第一中间文件被存储在非关系型数据库中,可以让终端侧的用户不会基于服务器与终端这一层交互所获取,进一步保护第一中间文件的安全性。
需要补充的是,所述方法还包括:接收所述终端发起的连接请求;基于所述连接请求,反馈连接结果;若连接结果为连接成功,则接收终端发送的可视化工程的作业信息。
这里,服务器接收所述终端发起的TCP(Transmission Control Protocol,传输控制协议)连接,服务器与终端经过三次握手成功后,与终端建立连接。需要说明的是,TCP是因特网中传输层协议,使用三次握手协议建立连接,当主动方发出SYN(SynchronizeSequence Numbers,同步序列编号)连接请求后,等到对方回答SYN+ACK(Acknowledgement,确认字符),并最终对对方的SYN执行ACK确定。这种建立连接的方法可以防止产生错误的连接。连接成功后,可以开始传输数据。这里,连接成功后,则服务器能接收终端发送的可视化工程的作业信息。
另外,在服务器接收所述终端发送的连接请求之前,服务器接收终端发送的查询广播消息;基于查询广播消息,向所述终端回复对应的状态信息;其中,所述状态信息用于供所述终端能够根据所述状态信息选择所连接的服务器。
这里,所述服务器是服务器集群中的一台服务器,终端在所述集群中选择其中一台服务器进行程序代码生成和编译即可。服务器回复对应的状态信息,可以供终端根据状态信息来选择合适的服务器,例如选择负载较少的服务器,如此,可以提高程序代码生成和编译的有效性和效率。
进一步地,在一实施方式中,服务器将所述目标文件打包成驱动包文件。
这里,服务器调用编译器将编译成功的产物,例如二进制目标文件,进行压缩,得到驱动包文件,所述驱动包文件同样也可以供终端运行,且驱动包文件可以供终端在下一次的针对同一可视化工程部署时直接运行。
需要补充的是,所述方法还包括,服务器返回所述生成所述可视化工程标识所标识的可视化工程的代码文件和/或所述编译所述代码文件中所产生的错误信息;接收所述终端基于所述错误信息重新发送的校正后的作业信息。
这里,服务器在所述生成所述可视化工程标识所标识的可视化工程文件的过程中,若代码生成有误,则向终端返回错误信息。终端在接收到所述错误信息之后,重新调整图形化编程部署,重新上传校正后的作业信息。相应地,服务器在所述编译所述代码文件过程中,若编译有误,则向终端返回错误信息,同样由终端在接收到所述错误信息之后,重新调整图形化编程部署,重新上传校正后的作业信息。
进一步地,为了能够更好地保护商家针对可视化工程所编写的相关程序文件以及可视化工程在代码生成以及编译过程中所产生的各类文件信息的安全性,在一实施方式中,所述将所述目标文件发送给所述终端之后,服务器将所述生成所述可视化工程标识所标识的可视化工程的代码文件和/或所述编译所述代码文件中所产生的第二中间文件删除。
这里,所述第二中间文件是服务器在基于第一中间文件进行代码生成以及编译中所产生的其他文件,例如,服务器在基于第一中间文件进行代码生成以及编译中所产生的C/C++的源代码文件,包括.h或.cpp文件等。在服务器将所述目标文件发送给所述终端后,将这些第二中间文件删除,能够更好地保护在代码生成以及编译过程中所产生的各类文件信息的安全。
需要补充的是,在服务器与终端的交互中采用加密通信方式,也就是说,服务器接收终端发送的任何信息都需要验证密码,而终端接收服务器发来的任何信息也需要输入密码进行验证才能获取到这些交互的信息。如此,可以进一步保证商家针对可视化工程所编写的相关程序文件以及可视化工程在程序代码生成以及编译过程中所产生的各类文件信息的安全性。
还要补充的是,在一些实施方式中,在所述目标文件传输结束之后,终端或服务器可以通过分别验证终端与服务器的目标文件的MD5(MD5Message-Digest Algorithm,密码散列函数)值来判断所述目标文件内容的完整性和有效性,并且,还可以通过对终端与服务器之间的交互信息的每帧报文采用CRC(Cyclic Redundancy Check,循环冗余校验)校验,来检测或校验数据传输或保存后可能出现的错误,保证交互信息的有效性和完整性。
进一步地,基于上述程序处理系统,本发明实施例还提出了一种应用于终端的程序处理方法。图2为本发明实施例所提供的程序处理方法的流程示意图,如图2所示,所述方法包括以下步骤:
步骤201:向服务器上传可视化工程的作业信息;其中,所述作业信息至少包括:可视化工程标识以及可视化开发编译环境信息。
这里,终端为用户提供可以供用户输入可视化工程标识以及可视化开发编译环境信息的操作界面,基于操作界面,接收用户输入的所述可视化工程的相关信息,并根据相关信息得到作业信息。例如,可以在可视化开发编译环境的选择栏中选择可视化开发编译环境A,因此,可以根据所选择的可视化开发编译环境A,确定出可视化开发编译环境A对应的可视化开发编译环境信息。所述可视化工程标识可以是基于用户所选择的可视化工程的图标对应的标识的集合。
步骤202:接收服务器根据所述作业信息返回的目标文件。
这里,终端接收服务器基于作业信息,进行代码生成以及编译后的产物生成的,能够直接被终端运行的目标文件。
步骤203:运行所述目标文件并输出所述目标文件的运行结果。
在本实施例中,终端仅能向服务器上传可视化工程的作业信息,然后再从服务器端直接接收到能够直接运行的目标文件,这样,终端不参与基于作业信息的代码生成以及编译过程,如此,一方面可以将程序代码生成所需要的相关文件的存储空间节省下来;另一方面,对于商家而言,能够有效保护商家针对可视化工程所编写的相关程序代码以及可视化工程在程序文件以及可视化工程在程序代码生成以及编译过程中所产生的各类文件信息的安全性。
基于此,所述方法还包括:终端向服务器发起连接请求;接收所述服务器基于所述连接请求反馈的连接结果;若所述连接结果为连接成功,则向所述服务器上传可视化工程的作业信息。
这里,终端向服务器发起的TCP连接,在与服务器经过三次握手成功后,与终端建立连接,在连接成功后,可以开始传输数据,这里,终端在与服务器连接成功后,可以向所述服务器上传可视化工程的作业信息。
进一步地,在所述终端向所述服务器发起连接请求之前,所述方法还包括:向所述服务器所在的集群发送查询广播消息;其中,所述集群中的各个服务器采用平行架构的方式进行部署;接收所述集群中各个服务器基于所述查询广播消息回复的对应的状态信息;基于所述各个服务器对应的状态信息,选出所述服务器。
这里,所述服务器在集群中采用平行架构的方式部署,能够实现当部分服务器出现故障时,剩余服务器仍可响应终端的作业信息,避免一主多从架构的主服务器出现故障后集群瘫痪的情况。
这里,所述终端在局域网内发起UDP(User Datagram Protocol,用户数据报协议)查询广播信息。在网络中,UDP与TCP协议一样用于处理数据包,是一种无连接的协议;但是TCP是面向连接;而UDP是无连接的,即发送数据之前不需要建立连接。集群中的各个服务器在接收到UDP查询广播消息后,会将自身对应的状态信息以及服务器标识一并发送至终端。终端根据这些状态信息来判断哪些服务器可用,哪些服务器不可用,然后选择一台服务器与之连接。
在一实施方式中,终端基于所述各个服务器对应的状态信息,选出所述服务器包括:根据所述各个服务器对应的状态信息,确定所述各个服务器的负载率;根据各个服务器的负载率,确定负载率最小的服务器,作为选出的所述服务器。
实际上,终端是根据负载均衡算法选择出负载率最小的服务器作为终端所要连接的服务器,如此,由于选择的是负载率最小的服务器,可以保证服务器在程序代码生成与编译过程中不会因为负担过重造成处理速度慢以及处理中断等现象,提升了程序处理的效率,提高了程序处理的有效性等。
具体地,终端根据各个服务器返回的状态信息,确定各个服务器的负载率,包括:根据各个服务器返回的状态信息,利用负载均衡算法计算出各个服务器的复杂率。其中,所述状态信息包括以下至少之一:服务器的当前终端连接数L1,服务器的CPU占用率L2、服务器的内存占用率L3。
具体的计算方法如下:
终端按照负载均衡算法优选其中一台服务器发起TCP连接。所述的负载均衡算法由L1、L2、L3三个参数线性加权决定,其中,ωi为对应指标的权重,对应的指标越重要,则ωi的值越大。同时ωi满足约束条件:选择V值最小的服务器作为所要连接的服务器。
进一步地,所述方法还包括:接收所述服务器根据所述作业信息返回的目标文件过程中所产生的错误信息;基于所述错误信息,校正所述作业信息。
为了能够便于对本申请实施例所提供的程序处理方法的进一步理解,提供了一具体实施方式。
本实施例的目标是提供一种作业集群协同工作方法,实现客户端部署,在服务器侧平行架构响应客户端作业请求。这里,客户端即为上述实施例所述的终端。
请参阅图3,图3为本发明具体实施例所提供的程序处理的系统组成示意图,如图3所示,程序处理系统3中部署了多个客户端,以及多个服务器端,客户端与服务器通过UDP/TCP协议进行通信,所述系统还包括非关系型数据库,所述可视化工程中程序处理的相关文件可存储在非关系型数据库中,通过客户端与服务器端,服务器端与非关系型数据库之间的交互,实现将程序代码的生成与编译从客户端中分离出来,客户端只保留用户操作界面及编译后生成的目标文件,有效保护商家针对可视化工程所编写的相关程序文件以及可视化工程在程序代码生成以及编译过程中所产生的各类文件信息的安全性。同时,由于该系统还支持多台客户端与多台服务器之间的同时交互,可实现多人协同工作下统一的编译环境,支持多人并发操作。以下仍以一台服务器与一台终端进行交互为例。
请参阅图4,图4为本发明具体实施例所提供的程序处理方法的流程示意图,如图4所示,所述方法包括:
步骤401:客户端发起UDP广播查询消息。
这里,客户端在局域网发起代码生成和编译的UDP广播查询消息,以便获取可用服务器运行工况。
步骤402:服务器回复当前连接数、CPU使用率、内存使用率、可用的可视化开发编译环境等信息。
这里,集群中各台服务器上电启动时自动启动通信主进程,该进程创建UDP侦听端口,接收到UDP广播查询消息后,各台服务器回复各自的当前状态信息,其中集群为采用多台服务器构建的平行架构集群,各个服务器均可响应客户端的UDP广播查询消息,服务器回复的当前状态信息包括:本服务器当前的客户端连接数L1、CPU占用率L2、内存占用率L3。
步骤403:通过负载均衡算法,选择工况合适的服务器。
这里,根据本服务器当前的客户端连接数L1、CPU占用率L2、内存占用率L3,利用归一化公式,选择负载率最小的服务器发起TCP连接。这里,归一化公式与上述实施例所述的负载均衡算法一致。
步骤404:终端向服务器发起TCP连接请求。
步骤405:服务器与终端TCP经过三次握手与客户端建立连接。
步骤406:发起生成代码任务,发送作业信息。
这里,TCP连接成功后,客户端上传作业信息,服务器调用形参,启动代码生成进行。作业信息包括:可视化开发编译环境信息,其中,可视化开发编译环境信息又包括可视化开发编译环境类型,可视化开发编译环境版本;可视化工程标识,其中,可视化工程标识能够用于标识可视化工程在非关系型数据库中的ID(identity,身份标识码)。
步骤407:根据编译环境版本及可视化工程信息,创建用户临时目录,调用代码生成进行(Coder)。
步骤408:Coder根据ID信息从数据库群读取数据到内存中,根据可视化开发编译环境版本读取符号库和系统库,开始生成代码。
这里,代码生成进程根据传入的形参,获取可视化工程在非关系型数据库中的ID,连接非关系型数据库,并读取对应的可视化工程数据文件,在服务器形成并存储代码,以及读取终端运行所需要的配置文件、IEC61850等通信建模文件。
这里,Coder所生成的代码即为上述实施例所述的代码文件。
步骤409:服务器判断代码是否生成成功。
步骤410:若否,服务器则向客户端返回错误信息,并结束进程。
步骤411:若是,服务器调用编译进程(maker)形成Makefile,调用编码器形成目标文件。
这里,若代码生成返回错误信息,则服务器将错误信息下传给客户端,并断开和客户端的连接。若代码生成无错误,则服务器启动编译进程,该进程根据作业信息选择合适的可视化开发编译环境,形成Makefile文件,调用对应的第三方编译器编译所述代码文件,形成二进制目标文件。
步骤412:服务器判断编译是否成功。
步骤413:若否,服务器向客户端返回错误信息,并结束进程。
步骤414:若是,Maker将编译成功的产物打包成驱动包文件。
步骤415:服务器将驱动包文件发送给客户端。
这里,若编译器返回错误信息,则服务器将错误信息下传给客户端,并断开和客户端连接。若编译无错误,则服务器一并将配置建模文件、二进制目标文件打包形成一个自定义格式的驱动包文件,并下传给客户端。优选地,客户端和服务器通信采用加密方式通信,文件传输结束后通过校验两端文件的MD5值来判断文件内容的完整性和有效性,并且对每帧报文用CRC校验,保证交互文件的有效性。
步骤416:客户端将接收到的驱动包文件保存到工程目录,断开TCP连接。
这里,客户端断开TCP连接,服务器清空作业形成的临时文件和目录。可以理解的是,所述临时文件和目录即为上述实施例所述的第二中间文件。
上述实施中提供的作业集群将编译系统架构主要划分为客户端和服务器端,远程编译系统将代码生成与编译功能从本地客户端分离部署到服务器端运行,本地客户端只保留用户操作界面并且只能获取到编译生成的产物,这样可以将商家的可视化程序对应的产物与客户端隔离,有效保护可视化工程的相关文件的知识产权,并且提供多人协同工作下统一的编译环境,支持多人并发操作。
进一步地,本发明实施例还提供一种程序处理装置,图5为本发明实施例所提供的程序处理装置的功能结构示意图,如图5所示,所述程序处理装置,包括:第一接收模块51、第一生成模块52、编译模块53、第二生成模块54、第一发送模块55;其中,
所述第一接收模块51,用于接收终端发送的可视化工程的作业信息,其中,所述作业信息至少包括:可视化工程标识以及可视化开发编译环境信息;
所述第一生成模块52,用于在所述可视化开发编译环境信息对应的可视化开发编译环境中,生成所述可视化工程标识所标识的可视化工程的代码文件;
所述编译模块53,用于编译所述代码文件;
所述第二生成模块53,用于根据编译后的代码文件,生成供所述终端运行的目标文件;
所述第一发送模块54,用于将所述目标文件发送给所述终端。
可选地,所述可视化开发编译环境信息包括:可视化开发编译环境类型、可视化开发编译环境版本;
所述第一生成模块52,还用于根据所述可视化开发编译环境类型、可视化开发编译环境版本,确定对应的可视化开发编译环境;在所述可视化开发编译环境中,生成所述可视化工程标识所标识的可视化工程的代码文件。
可选地,所述第一生成模块52,还用于根据可视化工程标识以及可视化开发编译环境信息,在非关系型数据库中读取所述可视化工程的第一中间文件;根据所述第一中间文件,生成所述可视化工程对应的代码文件。
可选地,所述第一接收模块51,还用于接收所述终端发起的连接请求;基于连接请求,反馈连接结果;若连接结果为连接成功,则接收终端发送的可视化工程的作业信息。
可选地,所述第一接收模块51,还用于接收终端发送的查询广播消息;
所述第一发送模块54,还用于基于所述查询广播消息,向所述终端回复对应的状态信息;其中,所述状态信息用于供所述终端能够根据所述状态信息选择所连接的服务器。
可选地,所述第一发送模块54,还用于将所述目标文件打包成驱动包文件。
可选地,所述第一发送模块54,还用于反馈所述生成所述可视化工程标识所标识的可视化工程的代码文件和/或所述编译所述代码文件中所产生的错误信息;
所述第一接收模块51,还用于接收所述终端基于所述错误信息重新发送的校正后的作业信息。
可选地,所述装置还包括删除模块,用于将所述目标文件发送给所述终端之后,将所述生成所述可视化工程标识所标识的可视化工程的代码文件和/或所述编译所述代码文件中所产生的第二中间文件删除。
进一步地,进一步地,本发明实施例还提供一种程序处理装置,图6为本发明实施例所提供的程序处理装置的另一功能结构示意图,如图6所示,所述程序处理装置,包括:第二发送模块61、第二接收模块62及运行模块63;其中,
所述第二发送模块61,用于向服务器上传可视化工程的作业信息;其中,所述作业信息至少包括:可视化工程标识以及可视化开发编译环境信息;
所述第二接收模块62,用于接收服务器根据所述作业信息返回的目标文件;
所述运行模块63,用于运行所述目标文件并输出所述目标文件的运行结果。
可选地,所述第二发送模块61,还用于向所述服务器发起连接请求;
所述第二接收模块62,还用于接收所述服务器基于所述连接请求反馈的连接结果;
所述第二发送模块61,还用于若所述连接结果为连接成功,则向所述服务器上传所述可视化工程的作业信息。
可选地,所述装置还包括选择模块,所述第二发送模块61,还用于向所述服务器发起连接请求之前,向所述服务器所在的集群发送查询广播消息;其中,所述集群中的各个服务器采用平行架构的方式进行部署;
所述第二接收模块62,还用于接收所述集群中各个服务器基于所述查询广播消息回复的对应的状态信息;
所述选择模块,用于基于所述各个服务器对应的状态信息,选出所述服务器。
可选地,所述选择模块,具体用于根据各个服务器对应的状态信息,确定各个服务器的负载率;根据各个服务器的负载率,确定负载率最小的服务器,作为选出的所述服务器。
可选地,所述第二接收模块62,还用于接收所述服务器根据所述作业信息返回的目标文件过程中所产生的错误信息;基于所述错误信息,校正所述作业信息。
上述实施例提供的程序处理装置在进行应用程序的处理时,仅以上述各程序模块的划分进行举例说明,实际应用中,可以根据需要而将上述处理分配由不同的程序模块完成,即将装置的内容结构划分成不同的程序模块,以完成以上描述的全部或者部分处理。另外,上述实施例提供的程序处理装置与程序处理方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
如图7所示,本发明实施例还提供了一种服务器,所述服务器包括存储器72、处理器71及存储在存储器72上并可在处理器71上运行的计算机指令;所述处理器71执行所述指令时实现应用于所述服务器或者终端中的程序处理方法的步骤。
在一些实施例中,本发明实施例中的存储器72可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double DataRate SDRAM,DDRSDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(Synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(Direct Rambus RAM,DRRAM)。本文描述的系统和方法的存储器72旨在包括但不限于这些和任意其它适合类型的存储器。
而处理器71可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器71中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器71可以是通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(FieldProgrammable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器72,处理器71读取存储器72中的信息,结合其硬件完成上述方法的步骤。
在一些实施例中,本文描述的这些实施例可以用硬件、软件、固件、中间件、微码或其组合来实现。对于硬件实现,处理单元可以实现在一个或多个专用集成电路(Application Specific Integrated Circuits,ASIC)、数字信号处理器(Digital SignalProcessing,DSP)、数字信号处理设备(DSP Device,DSPD)、可编程逻辑设备(ProgrammableLogic Device,PLD)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、通用处理器、控制器、微控制器、微处理器、用于执行本申请所述功能的其它电子单元或其组合中。
对于软件实现,可通过执行本文所述功能的模块(例如过程、函数等)来实现本文所述的技术。软件代码可存储在存储器中并通过处理器执行。存储器可以在处理器中或在处理器外部实现。
本发明又一实施例提供了一种计算机存储介质,该计算机可读存储介质存储有可执行程序,所述可执行程序被处理器71执行时,可实现应用于所述7服务器或终端中的程序处理方法的步骤。例如,如图1或图2或图3所示的方法中的一个或多个。
在一些实施例中,所述计算机存储介质可以包括:U盘、移动硬盘、只读存储器(ROM,Read Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是:本发明实施例所记载的技术方案之间,在不冲突的情况下,可以任意组合。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。本发明的保护范围应以所述权利要求的保护范围以准。