《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > EDA與制造 > 設(shè)計(jì)應(yīng)用 > VLD遠(yuǎn)程編譯系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
VLD遠(yuǎn)程編譯系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
2016年電子技術(shù)應(yīng)用第11期
陳獻(xiàn)慶,,郭亞楠,,張玉龍,閆振宇
許繼電氣股份有限公司,,河南 許昌461000
摘要: 為了解決VLD(Visual Logic Design,VLD)工具在軟件知識(shí)產(chǎn)權(quán)方面保護(hù)薄弱的問題,,設(shè)計(jì)了一個(gè)VLD遠(yuǎn)程編譯系統(tǒng)架構(gòu),,核心資源代碼部署在構(gòu)建服務(wù)器端,客戶端只提供交互界面,,兩者通過分發(fā)服務(wù)器建立連接,,編譯工作只在構(gòu)建服務(wù)器端完成,可有效控制工具使用范圍,,避免資源代碼外泄,。該系統(tǒng)采取模塊化的實(shí)現(xiàn)方式,對(duì)系統(tǒng)功能進(jìn)行抽象,,將其封裝為資源庫函數(shù),,提高了系統(tǒng)的擴(kuò)展性和重用性。按該架構(gòu)開發(fā)的VLD遠(yuǎn)程編譯系統(tǒng)通過了可靠性和時(shí)效性測試,,驗(yàn)證了該方法的可行性,。
中圖分類號(hào): TP311
文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.2016.11.031
中文引用格式: 陳獻(xiàn)慶,郭亞楠,,張玉龍,,等. VLD遠(yuǎn)程編譯系統(tǒng)的設(shè)計(jì)與實(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è)計(jì)(Visual Logic Design,,VLD)工具是一種以圖形化、模塊化邏輯功能圖形代替編寫程序源代碼的程序開發(fā)工具[1],,是許繼自主研發(fā)和擁有自主知識(shí)產(chǎn)權(quán)的軟件,。其以避免重復(fù)設(shè)計(jì)、節(jié)省開發(fā)時(shí)間,、程序設(shè)計(jì)標(biāo)準(zhǔn)化,、方便程序修改和維護(hù)等特點(diǎn)廣泛應(yīng)用于公司繼電保護(hù)領(lǐng)域的保護(hù)邏輯設(shè)計(jì)、保護(hù)功能實(shí)現(xiàn)等方面[2-3],。但是由于VLD工具設(shè)計(jì)之初缺乏對(duì)自主知識(shí)產(chǎn)權(quán)的保護(hù)考慮,,導(dǎo)致其無有效認(rèn)證保護(hù)機(jī)制[4],任何電腦都可安裝使用,,且用戶可通過工具獲取公司多年積累的保護(hù)、測控等核心代碼,,給公司機(jī)密外泄和利益流失留下巨大隱患,。因此需要一種能避免核心代碼外泄、對(duì)工具的使用范圍可控的方法解決上述問題,。

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

jsj3-t1.gif

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

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

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

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

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

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

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

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

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

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

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

2.1 客戶端

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

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

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

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

    分發(fā)服務(wù)器心跳處理模塊接收構(gòu)建服務(wù)器定時(shí)發(fā)送的狀態(tài)信息,,并把其更新到本地存儲(chǔ)的構(gòu)建服務(wù)器列表中。選擇模塊是分發(fā)服務(wù)器的核心模塊,,其實(shí)現(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ù)器接收到編譯請(qǐng)求時(shí)返回給客戶端,,由客戶端更新到ID記錄文件中,同時(shí)分配完構(gòu)建服務(wù)器后,,分發(fā)服務(wù)器會(huì)把ID記錄到相應(yīng)構(gòu)建服務(wù)器狀態(tài)列表中,,以供下次分配時(shí)查詢。

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

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

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

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

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

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

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

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

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

3 系統(tǒng)時(shí)效性與可靠性驗(yàn)證

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

jsj3-t2.gif

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

3.1 可靠性驗(yàn)證

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

jsj3-b1.gif

3.2 時(shí)效性驗(yàn)證

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

jsj3-b2.gif

4 結(jié)束語

    本文設(shè)計(jì)的VLD遠(yuǎn)程編譯系統(tǒng)將VLD工具核心代碼部署到企業(yè)服務(wù)器端,,有效控制了工具使用范圍,,提高了代碼的安全性,防止了核心代碼的外泄,,同時(shí)用戶界面繼承了原工具的界面,,保證了用戶使用習(xí)慣,可靠性和實(shí)時(shí)性測試驗(yàn)證了本系統(tǒng)的有效性,。本編譯系統(tǒng)采取模塊化的設(shè)計(jì)實(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].電力自動(dòng)化設(shè)備,,2008(7):97-101.

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

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

[5] 彭進(jìn)展,,尹寶林,黃鑫.GRDBS:一種針對(duì)嵌入式系統(tǒng)的通用遠(yuǎn)程調(diào)試系統(tǒng)[J].計(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].計(jì)算機(jī)技術(shù)與發(fā)展,,2010(10):147-149.

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

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

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