VLD远程编译系统的设计与实现

陈献庆,郭亚楠,张玉龙,闫振宇

(许继电气股份有限公司,河南 许昌461000)

为了解决VLD(Visual Logic Design,VLD)工具在软件知识产权方面保护薄弱的问题,设计了一个VLD远程编译系统架构,核心资源代码部署在构建服务器端,客户端只提供交互界面,两者通过分发服务器建立连接,编译工作只在构建服务器端完成,可有效控制工具使用范围,避免资源代码外泄。该系统采取模块化的实现方式,对系统功能进行抽象,将其封装为资源库函数,提高了系统的扩展性和重用性。按该架构开发的VLD远程编译系统通过了可靠性和时效性测试,验证了该方法的可行性。

VLD工具;远程编译;客户端;构建服务器;分发服务器

TP311

文献标识码:A

10.16157/j.issn.0258-7998.2016.11.031

中文引用格式:陈献庆,郭亚楠,张玉龙,等. VLD远程编译系统的设计与实现[J].电子技术应用,2016,42(11):116-118.

英文引用格式:Chen Xianqing,Guo Yanan,Zhang Yulong,et al. Design and implementation of the remote compile system for VLD[J].Application of Electronic Technique,2016,42(11):116-118.

0 引言

可视化逻辑设计(Visual Logic Design,VLD)工具是一种以图形化、模块化逻辑功能图形代替编写程序源代码的程序开发工具[1],是许继自主研发和拥有自主知识产权的软件。其以避免重复设计、节省开发时间、程序设计标准化、方便程序修改和维护等特点广泛应用于公司继电保护领域的保护逻辑设计、保护功能实现等方面[2-3]。但是由于VLD工具设计之初缺乏对自主知识产权的保护考虑,导致其无有效认证保护机制[4],任何电脑都可安装使用,且用户可通过工具获取公司多年积累的保护、测控等核心代码,给公司机密外泄和利益流失留下巨大隐患。因此需要一种能避免核心代码外泄、对工具的使用范围可控的方法解决上述问题。

本文提出了一种基于企业内网的VLD远程编译系统架构[5],该架构采取了模块化的设计思想,分离了VLD工具的操作界面和核心资源代码,把在本地的编译处理工作部署到服务器端,本地只保留通用的用户操作界面,有效提高了VLD工具核心代码的安全性。

1 VLD远程编译系统架构

1.1 VLD远程编译系统总体架构

远程编译系统架构采用了模块化的设计思想,将系统划分为3个部分:客户端、分发服务器和构建服务器。这样设计是为了将解决方案的功能分隔到不同的功能模块中,每一功能模块保持内聚性,大致在同一抽象级别,并且每一模块都与其他的模块保持松散耦合,增强了系统的可扩展性、可维护性和复用性[6-7]。系统的总体架构如图1所示。

VLD远程编译系统的设计与实现

图1中,客户端是编译任务的发起者,负责编译请求的发送、工程文件的发送和编译结果的接收;分发服务器是连接客户端和构建服务器的接口,负责接收编译请求后选择合适的构建服务器,并实时监视和更新构建服务器信息;构建服务器是编译任务的执行者,主要完成编译任务和编译结果文件的传输。

1.2 VLD远程编译系统工作流程

系统的工作流程如图1中序号所示,基本流程如下:

(1)客户端发起编译请求,分发服务器接收到后对报文进行解析,获取客户端ID、VLD版本号、客户端IP和端口号等信息;

(2)分发服务器监听构建服务器相的工况信息,记录其工作状态、内存使用率、构建服务器的IP和端口号等;

(3)分发服务器根据步骤(2)中更新的构建服务器工况信息选择合适的服务器,并将分配结果返回给客户端,同时将编译请求信息更新后转发给构建服务器;

(4)客户端和构建服务器建立连接,客户端在收到构建服务器的上传工程文件请求消息后,向构建服务器发送文件;

(5)构建服务器接收工程文件结束,进行工程编译,编译完成后向发送编译请求的客户端回传编译结果文件。

经过以上5个主要步骤,编译系统可进行一次完整的VLD远程编译工作。

2 功能模块设计实现

基于系统的总体架构,并根据模块的功能需求,每个大的模块又由不同的小功能模块构成。模块间的通信使用TCP和UDP协议实现,其中状态监听和编译请求信息采用系统开销较小的UDP协议进行通信,文件传输采用传输可靠性较高的TCP协议进行通信[8-9]

2.1 客户端

为了保证原使用者的使用习惯,客户端界面继承了原VLD工具的操作界面,其新加功能以新增按钮和选项的方式添加。根据需求,客户端分为4个功能模块:编译请求模块、ID管理模块、文件传输模块、文件压缩模块。

编译请求模块实现了向分发服务器发送编译请求的功能。ID管理模块负责工程ID的记录管理工作,ID是为了系统亲和性考虑,每个工程分配一个系统唯一的ID编号,当工程第二次请求编译时,分发服务器会根据ID号分配上次编译过此工程的构建服务器,以减少重复传输工程文件时间,提高系统效率。文件传输模块和文件压缩模块联合完成了文件发送及文件接收的操作。

2.2 分发服务器

分发服务器将客户端和构建服务器联系在一起,接收客户端的编译请求,并存储和更新构建服务器的状态,完成构建服务器的选择工作。其主要功能模块划分为:心跳处理模块、选择模块、ID生成模块、队列共享模块。

分发服务器心跳处理模块接收构建服务器定时发送的状态信息,并把其更新到本地存储的构建服务器列表中。选择模块是分发服务器的核心模块,其实现了系统的亲和性功能和负载均衡算法,首先根据工程ID选择编译过的构建服务器,如果是新建工程或原构建服务器不在编译等待状态,则根据其他构建服务器的工作状态以及内存使用率等条件选择合适的构建服务器分配编译任务。

ID生成模块生成系统唯一的工程ID,此ID在分发服务器接收到编译请求时返回给客户端,由客户端更新到ID记录文件中,同时分配完构建服务器后,分发服务器会把ID记录到相应构建服务器状态列表中,以供下次分配时查询。

队列共享模块避免了网络拥塞时编译请求的丢失,其会对不同时刻到来的编译请求进行缓存,当先到的编译请求还未处理完毕,后面的编译请求将按时间进行排队处理。

2.3 构建服务器

构建服务器主要完成工程编译,并将编译完成的工程文件回传给客户端。按照其功能可划分为4个主要模块:心跳模块、代码编译模块、文件传输模块、文件压缩模块。

为了一台构建服务器能够同时完成多个编译任务,避免资源的浪费,构建服务器采取多任务并发模式实现。每个构建服务器可创建多个独立的构建进程,每个进程根据IP地址和端口号区分,可独立完成编译任务。构建服务器中心跳模块功能是向构建服务器提供自身的工况,包括IP地址、端口号、进程ID、工作状态,以使构建服务器根据自身状态抉择是否分配编译任务。

代码编译模块处理客户端发送的工程文件,其编译原理是将VLD原编译功能以动态库的方式封装,编译模块接到编译任务后调用动态库并实时将编译过程回传到客户端,这样实现可使系统具有良好的可移植性。例如当更换动态库以后,构建服务程序不需要大的更改,只需要添加相应的接口函数,并根据需要完成配置文件的配置即可。

文件传输模块和文件压缩模块复用了客户端的相应模块,完成文件的压缩传送和文件接收功能。

2.4 系统可视化工具和服务看门狗

由于系统各模块以后台服务的形式设计实现,运行期间数据对用户和开发者不可见,为了便于系统的维护和测试,开发了系统可视化工具,将分发服务器存储的构建服务器数据表结合其分发结果以表的形式实时展现在工具上。

同时,系统一旦正式投入使用,分发服务器和构建服务器将部署在企业机房,当出现系统死循环、进程关闭等问题时无法实时维护。为了提高系统运行的稳定性和可靠性,实现了服务看门狗工具。看门狗工具对每个构建服务进程和分发服务进程进行监视,一旦检测到某个进程在规定时间内无喂狗响应,则判定此进程为离线状态,将强制结束并重启该进程。

3 系统时效性与可靠性验证

根据系统设计,搭建如图2所示的测试环境。

VLD远程编译系统的设计与实现

部署4台构建服务器电脑,每台电脑运行5个构建服务进程,另部署4台电脑作为客户端,每台电脑最少运行两个VLD客户端,分别从时效性和可靠性两个方面对系统进行测试验证。

3.1 可靠性验证

4台客户端电脑随机发送编译请求,通过可视化工具监视进行编译任务的构建服务器,编译完成后在相应构建服务器运行原VLD工具编译相同工程,将编译结果分别与本地以及客户端接收的编译结果进行对比,经过多次反复测试,编译结果相同。测试数据如表1所示。

3.2 时效性验证

系统在保证功能可靠性的同时,需要保证其时效性,以提高用户体验。测试通过选取502 KB~20 MB不同大小的工程文件进行编译,从客户端发送编译请求开始计时,到客户端提示编译完成计时结束。在企业内网的测试中,最快编译时间为55 s,最慢编译时间为320 s。同时在相同客户端进行本地工程编译计时进行对比,测试结果如表2所述,表明平均编译时间控制在3 min之内,虽然较本地编译有一定延时,但在可接受范围之内。

4 结束语

本文设计的VLD远程编译系统将VLD工具核心代码部署到企业服务器端,有效控制了工具使用范围,提高了代码的安全性,防止了核心代码的外泄,同时用户界面继承了原工具的界面,保证了用户使用习惯,可靠性和实时性测试验证了本系统的有效性。本编译系统采取模块化的设计实现方式,具有良好的扩展性和维护性,为以后其他工具的远程操作移植提供了框架。

参考文献

[1] 杨超,李刚,安永帅.一种基于VLD开发的智能高压隔离开关到位监测方法[J].高压电器,2014(7):76-82.

[2] 黄继东,周晓龙,马和科.基于VLD开发的超高压微机母线保护[J].电力自动化设备,2008(7):97-101.

[3] 艾淑云,毋炳鑫,谢卫华.基于VLD设计的微电网模式切换研究[J].电子科技,2014(9):160-164.

[4] 谭貌,陈义,涂杰.软件版权保护技术的研究与分析[J].计算机应用与软件,2007(1):54-57.

[5] 彭进展,尹宝林,黄鑫.GRDBS:一种针对嵌入式系统的通用远程调试系统[J].计算机工程,2003(2):109-111.

[6] 田安琪,金天.嵌入式测姿系统软件的模块化[J].电子技术应用,2015(7):26-29.

[7] 张志杰.基于分层结构的管理信息系统架构设计[J].计算机技术与发展,2010(10):147-149.

[8] 龙玉军,龚彬.基于TCP、UDP的多路多数据流融合网络系统设计[J].电子设计工程,2011(21):69-72.

[9] 瞿有甜,盛贤良.基于TCP套接字的应用研究[J].计算机应用研究,2006(7):47-49.

AET会员年终大福利!

来源:电子技术应用ChinaAET

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2016年11月20日
下一篇 2016年11月20日

相关推荐