《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > EDA與制造 > 設(shè)計應(yīng)用 > VLD遠(yuǎn)程編譯系統(tǒng)的設(shè)計與實現(xiàn)
VLD遠(yuǎn)程編譯系統(tǒng)的設(shè)計與實現(xiàn)
2016年電子技術(shù)應(yīng)用第11期
陳獻(xiàn)慶,郭亞楠,張玉龍,閆振宇
許繼電氣股份有限公司,河南 許昌461000
摘要: 為了解決VLD(Visual Logic Design,VLD)工具在軟件知識產(chǎn)權(quán)方面保護(hù)薄弱的問題,設(shè)計了一個VLD遠(yuǎn)程編譯系統(tǒng)架構(gòu),核心資源代碼部署在構(gòu)建服務(wù)器端,客戶端只提供交互界面,兩者通過分發(fā)服務(wù)器建立連接,編譯工作只在構(gòu)建服務(wù)器端完成,可有效控制工具使用范圍,避免資源代碼外泄。該系統(tǒng)采取模塊化的實現(xiàn)方式,對系統(tǒng)功能進(jìn)行抽象,將其封裝為資源庫函數(shù),提高了系統(tǒng)的擴(kuò)展性和重用性。按該架構(gòu)開發(fā)的VLD遠(yuǎn)程編譯系統(tǒng)通過了可靠性和時效性測試,驗證了該方法的可行性。
中圖分類號: TP311
文獻(xiàn)標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.2016.11.031
中文引用格式: 陳獻(xiàn)慶,郭亞楠,張玉龍,等. VLD遠(yuǎn)程編譯系統(tǒng)的設(shè)計與實現(xiàn)[J].電子技術(shù)應(yīng)用,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.
Design and implementation of the remote compile system for VLD
Chen Xianqing,Guo Yanan,Zhang Yulong,Yan Zhenyu
XJ Electric Co.,Ltd.,Xuchang 461000,China
Abstract: According to the problem of the VLD tool in intellectual property protection, a VLD remote compile system architecture is proposed. The core resources codes are deployed on the server side, and the client side only provides interactive interface, they establish connection through the dispatch server,and compile work is done on the server side, so the system can prevent source code leaked effectively. With modular method,the system abstracts the functions and packages it to a series of resource library functions,which can remarkable increase expansible and reusable of the system. The reliability and timeliness test results prove the feasibility of this method.
Key words : VLD tool;remote compile;client;construction server;dispatch server

0 引言

    可視化邏輯設(shè)計(Visual Logic Design,VLD)工具是一種以圖形化、模塊化邏輯功能圖形代替編寫程序源代碼的程序開發(fā)工具[1],是許繼自主研發(fā)和擁有自主知識產(chǎn)權(quán)的軟件。其以避免重復(fù)設(shè)計、節(jié)省開發(fā)時間、程序設(shè)計標(biāo)準(zhǔn)化、方便程序修改和維護(hù)等特點廣泛應(yīng)用于公司繼電保護(hù)領(lǐng)域的保護(hù)邏輯設(shè)計、保護(hù)功能實現(xiàn)等方面[2-3]。但是由于VLD工具設(shè)計之初缺乏對自主知識產(chǎn)權(quán)的保護(hù)考慮,導(dǎo)致其無有效認(rèn)證保護(hù)機(jī)制[4],任何電腦都可安裝使用,且用戶可通過工具獲取公司多年積累的保護(hù)、測控等核心代碼,給公司機(jī)密外泄和利益流失留下巨大隱患。因此需要一種能避免核心代碼外泄、對工具的使用范圍可控的方法解決上述問題。

    本文提出了一種基于企業(yè)內(nèi)網(wǎng)的VLD遠(yuǎn)程編譯系統(tǒng)架構(gòu)[5],該架構(gòu)采取了模塊化的設(shè)計思想,分離了VLD工具的操作界面和核心資源代碼,把在本地的編譯處理工作部署到服務(wù)器端,本地只保留通用的用戶操作界面,有效提高了VLD工具核心代碼的安全性。

1 VLD遠(yuǎn)程編譯系統(tǒng)架構(gòu)

1.1 VLD遠(yuǎn)程編譯系統(tǒng)總體架構(gòu)

    遠(yuǎn)程編譯系統(tǒng)架構(gòu)采用了模塊化的設(shè)計思想,將系統(tǒng)劃分為3個部分:客戶端、分發(fā)服務(wù)器構(gòu)建服務(wù)器。這樣設(shè)計是為了將解決方案的功能分隔到不同的功能模塊中,每一功能模塊保持內(nèi)聚性,大致在同一抽象級別,并且每一模塊都與其他的模塊保持松散耦合,增強(qiáng)了系統(tǒng)的可擴(kuò)展性、可維護(hù)性和復(fù)用性[6-7]。系統(tǒng)的總體架構(gòu)如圖1所示。

jsj3-t1.gif

    圖1中,客戶端是編譯任務(wù)的發(fā)起者,負(fù)責(zé)編譯請求的發(fā)送、工程文件的發(fā)送和編譯結(jié)果的接收;分發(fā)服務(wù)器是連接客戶端和構(gòu)建服務(wù)器的接口,負(fù)責(zé)接收編譯請求后選擇合適的構(gòu)建服務(wù)器,并實時監(jiān)視和更新構(gòu)建服務(wù)器信息;構(gòu)建服務(wù)器是編譯任務(wù)的執(zhí)行者,主要完成編譯任務(wù)和編譯結(jié)果文件的傳輸。

1.2 VLD遠(yuǎn)程編譯系統(tǒng)工作流程

    系統(tǒng)的工作流程如圖1中序號所示,基本流程如下:

    (1)客戶端發(fā)起編譯請求,分發(fā)服務(wù)器接收到后對報文進(jìn)行解析,獲取客戶端ID、VLD版本號、客戶端IP和端口號等信息;

    (2)分發(fā)服務(wù)器監(jiān)聽構(gòu)建服務(wù)器相的工況信息,記錄其工作狀態(tài)、內(nèi)存使用率、構(gòu)建服務(wù)器的IP和端口號等;

    (3)分發(fā)服務(wù)器根據(jù)步驟(2)中更新的構(gòu)建服務(wù)器工況信息選擇合適的服務(wù)器,并將分配結(jié)果返回給客戶端,同時將編譯請求信息更新后轉(zhuǎn)發(fā)給構(gòu)建服務(wù)器;

    (4)客戶端和構(gòu)建服務(wù)器建立連接,客戶端在收到構(gòu)建服務(wù)器的上傳工程文件請求消息后,向構(gòu)建服務(wù)器發(fā)送文件;

    (5)構(gòu)建服務(wù)器接收工程文件結(jié)束,進(jìn)行工程編譯,編譯完成后向發(fā)送編譯請求的客戶端回傳編譯結(jié)果文件。

    經(jīng)過以上5個主要步驟,編譯系統(tǒng)可進(jìn)行一次完整的VLD遠(yuǎn)程編譯工作。

2 功能模塊設(shè)計實現(xiàn)

    基于系統(tǒng)的總體架構(gòu),并根據(jù)模塊的功能需求,每個大的模塊又由不同的小功能模塊構(gòu)成。模塊間的通信使用TCP和UDP協(xié)議實現(xiàn),其中狀態(tài)監(jiān)聽和編譯請求信息采用系統(tǒng)開銷較小的UDP協(xié)議進(jìn)行通信,文件傳輸采用傳輸可靠性較高的TCP協(xié)議進(jìn)行通信[8-9]。

2.1 客戶端

    為了保證原使用者的使用習(xí)慣,客戶端界面繼承了原VLD工具的操作界面,其新加功能以新增按鈕和選項的方式添加。根據(jù)需求,客戶端分為4個功能模塊:編譯請求模塊、ID管理模塊、文件傳輸模塊、文件壓縮模塊。

    編譯請求模塊實現(xiàn)了向分發(fā)服務(wù)器發(fā)送編譯請求的功能。ID管理模塊負(fù)責(zé)工程ID的記錄管理工作,ID是為了系統(tǒng)親和性考慮,每個工程分配一個系統(tǒng)唯一的ID編號,當(dāng)工程第二次請求編譯時,分發(fā)服務(wù)器會根據(jù)ID號分配上次編譯過此工程的構(gòu)建服務(wù)器,以減少重復(fù)傳輸工程文件時間,提高系統(tǒng)效率。文件傳輸模塊和文件壓縮模塊聯(lián)合完成了文件發(fā)送及文件接收的操作。

2.2 分發(fā)服務(wù)器

    分發(fā)服務(wù)器將客戶端和構(gòu)建服務(wù)器聯(lián)系在一起,接收客戶端的編譯請求,并存儲和更新構(gòu)建服務(wù)器的狀態(tài),完成構(gòu)建服務(wù)器的選擇工作。其主要功能模塊劃分為:心跳處理模塊、選擇模塊、ID生成模塊、隊列共享模塊。

    分發(fā)服務(wù)器心跳處理模塊接收構(gòu)建服務(wù)器定時發(fā)送的狀態(tài)信息,并把其更新到本地存儲的構(gòu)建服務(wù)器列表中。選擇模塊是分發(fā)服務(wù)器的核心模塊,其實現(xiàn)了系統(tǒng)的親和性功能和負(fù)載均衡算法,首先根據(jù)工程ID選擇編譯過的構(gòu)建服務(wù)器,如果是新建工程或原構(gòu)建服務(wù)器不在編譯等待狀態(tài),則根據(jù)其他構(gòu)建服務(wù)器的工作狀態(tài)以及內(nèi)存使用率等條件選擇合適的構(gòu)建服務(wù)器分配編譯任務(wù)。

    ID生成模塊生成系統(tǒng)唯一的工程ID,此ID在分發(fā)服務(wù)器接收到編譯請求時返回給客戶端,由客戶端更新到ID記錄文件中,同時分配完構(gòu)建服務(wù)器后,分發(fā)服務(wù)器會把ID記錄到相應(yīng)構(gòu)建服務(wù)器狀態(tài)列表中,以供下次分配時查詢。

    隊列共享模塊避免了網(wǎng)絡(luò)擁塞時編譯請求的丟失,其會對不同時刻到來的編譯請求進(jìn)行緩存,當(dāng)先到的編譯請求還未處理完畢,后面的編譯請求將按時間進(jìn)行排隊處理。

2.3 構(gòu)建服務(wù)器

    構(gòu)建服務(wù)器主要完成工程編譯,并將編譯完成的工程文件回傳給客戶端。按照其功能可劃分為4個主要模塊:心跳模塊、代碼編譯模塊、文件傳輸模塊、文件壓縮模塊。

    為了一臺構(gòu)建服務(wù)器能夠同時完成多個編譯任務(wù),避免資源的浪費,構(gòu)建服務(wù)器采取多任務(wù)并發(fā)模式實現(xiàn)。每個構(gòu)建服務(wù)器可創(chuàng)建多個獨立的構(gòu)建進(jìn)程,每個進(jìn)程根據(jù)IP地址和端口號區(qū)分,可獨立完成編譯任務(wù)。構(gòu)建服務(wù)器中心跳模塊功能是向構(gòu)建服務(wù)器提供自身的工況,包括IP地址、端口號、進(jìn)程ID、工作狀態(tài),以使構(gòu)建服務(wù)器根據(jù)自身狀態(tài)抉擇是否分配編譯任務(wù)。

    代碼編譯模塊處理客戶端發(fā)送的工程文件,其編譯原理是將VLD原編譯功能以動態(tài)庫的方式封裝,編譯模塊接到編譯任務(wù)后調(diào)用動態(tài)庫并實時將編譯過程回傳到客戶端,這樣實現(xiàn)可使系統(tǒng)具有良好的可移植性。例如當(dāng)更換動態(tài)庫以后,構(gòu)建服務(wù)程序不需要大的更改,只需要添加相應(yīng)的接口函數(shù),并根據(jù)需要完成配置文件的配置即可。

    文件傳輸模塊和文件壓縮模塊復(fù)用了客戶端的相應(yīng)模塊,完成文件的壓縮傳送和文件接收功能。

2.4 系統(tǒng)可視化工具和服務(wù)看門狗

    由于系統(tǒng)各模塊以后臺服務(wù)的形式設(shè)計實現(xiàn),運行期間數(shù)據(jù)對用戶和開發(fā)者不可見,為了便于系統(tǒng)的維護(hù)和測試,開發(fā)了系統(tǒng)可視化工具,將分發(fā)服務(wù)器存儲的構(gòu)建服務(wù)器數(shù)據(jù)表結(jié)合其分發(fā)結(jié)果以表的形式實時展現(xiàn)在工具上。

    同時,系統(tǒng)一旦正式投入使用,分發(fā)服務(wù)器和構(gòu)建服務(wù)器將部署在企業(yè)機(jī)房,當(dāng)出現(xiàn)系統(tǒng)死循環(huán)、進(jìn)程關(guān)閉等問題時無法實時維護(hù)。為了提高系統(tǒng)運行的穩(wěn)定性和可靠性,實現(xiàn)了服務(wù)看門狗工具。看門狗工具對每個構(gòu)建服務(wù)進(jìn)程和分發(fā)服務(wù)進(jìn)程進(jìn)行監(jiān)視,一旦檢測到某個進(jìn)程在規(guī)定時間內(nèi)無喂狗響應(yīng),則判定此進(jìn)程為離線狀態(tài),將強(qiáng)制結(jié)束并重啟該進(jìn)程。

3 系統(tǒng)時效性與可靠性驗證

    根據(jù)系統(tǒng)設(shè)計,搭建如圖2所示的測試環(huán)境。

jsj3-t2.gif

    部署4臺構(gòu)建服務(wù)器電腦,每臺電腦運行5個構(gòu)建服務(wù)進(jìn)程,另部署4臺電腦作為客戶端,每臺電腦最少運行兩個VLD客戶端,分別從時效性和可靠性兩個方面對系統(tǒng)進(jìn)行測試驗證。

3.1 可靠性驗證

    4臺客戶端電腦隨機(jī)發(fā)送編譯請求,通過可視化工具監(jiān)視進(jìn)行編譯任務(wù)的構(gòu)建服務(wù)器,編譯完成后在相應(yīng)構(gòu)建服務(wù)器運行原VLD工具編譯相同工程,將編譯結(jié)果分別與本地以及客戶端接收的編譯結(jié)果進(jìn)行對比,經(jīng)過多次反復(fù)測試,編譯結(jié)果相同。測試數(shù)據(jù)如表1所示。

jsj3-b1.gif

3.2 時效性驗證

    系統(tǒng)在保證功能可靠性的同時,需要保證其時效性,以提高用戶體驗。測試通過選取502 KB~20 MB不同大小的工程文件進(jìn)行編譯,從客戶端發(fā)送編譯請求開始計時,到客戶端提示編譯完成計時結(jié)束。在企業(yè)內(nèi)網(wǎng)的測試中,最快編譯時間為55 s,最慢編譯時間為320 s。同時在相同客戶端進(jìn)行本地工程編譯計時進(jìn)行對比,測試結(jié)果如表2所述,表明平均編譯時間控制在3 min之內(nèi),雖然較本地編譯有一定延時,但在可接受范圍之內(nèi)。

jsj3-b2.gif

4 結(jié)束語

    本文設(shè)計的VLD遠(yuǎn)程編譯系統(tǒng)將VLD工具核心代碼部署到企業(yè)服務(wù)器端,有效控制了工具使用范圍,提高了代碼的安全性,防止了核心代碼的外泄,同時用戶界面繼承了原工具的界面,保證了用戶使用習(xí)慣,可靠性和實時性測試驗證了本系統(tǒng)的有效性。本編譯系統(tǒng)采取模塊化的設(shè)計實現(xiàn)方式,具有良好的擴(kuò)展性和維護(hù)性,為以后其他工具的遠(yuǎn)程操作移植提供了框架。

參考文獻(xiàn)

[1] 楊超,李剛,安永帥.一種基于VLD開發(fā)的智能高壓隔離開關(guān)到位監(jiān)測方法[J].高壓電器,2014(7):76-82.

[2] 黃繼東,周曉龍,馬和科.基于VLD開發(fā)的超高壓微機(jī)母線保護(hù)[J].電力自動化設(shè)備,2008(7):97-101.

[3] 艾淑云,毋炳鑫,謝衛(wèi)華.基于VLD設(shè)計的微電網(wǎng)模式切換研究[J].電子科技,2014(9):160-164.

[4] 譚貌,陳義,涂杰.軟件版權(quán)保護(hù)技術(shù)的研究與分析[J].計算機(jī)應(yīng)用與軟件,2007(1):54-57.

[5] 彭進(jìn)展,尹寶林,黃鑫.GRDBS:一種針對嵌入式系統(tǒng)的通用遠(yuǎn)程調(diào)試系統(tǒng)[J].計算機(jī)工程,2003(2):109-111.

[6] 田安琪,金天.嵌入式測姿系統(tǒng)軟件的模塊化[J].電子技術(shù)應(yīng)用,2015(7):26-29.

[7] 張志杰.基于分層結(jié)構(gòu)的管理信息系統(tǒng)架構(gòu)設(shè)計[J].計算機(jī)技術(shù)與發(fā)展,2010(10):147-149.

[8] 龍玉軍,龔彬.基于TCP、UDP的多路多數(shù)據(jù)流融合網(wǎng)絡(luò)系統(tǒng)設(shè)計[J].電子設(shè)計工程,2011(21):69-72.

[9] 瞿有甜,盛賢良.基于TCP套接字的應(yīng)用研究[J].計算機(jī)應(yīng)用研究,2006(7):47-49.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。