張忠寶 劉春梅
(1.大連博瑞致信息技術有限公司,遼寧 大連 116023; 2.大連大地基礎工程有限公司,遼寧 大連 116023)
企業信息化系統已經成為企業生產、辦公的重要組成部分,尤其“兩化”融合以來變得更為重要。信息化系統為企業帶來重要價值的同時,也為企業帶來信息安全隱患。企業敏感、隱私數據泄漏事件屢有發生,在2015年—2018年期間,企業數據泄露事件數量變化不到200起,而且2019年上半年,數據泄露事件與2018年同比增長54%。如何防止企業泄露是企業信息化過程中必須克服的痛點。大型企業在信息化過程中可以請專業信息安全領域公司專業指導完成,從而保障企業信息安全的需要,但是,對于中小企業由于資金短缺,信息化規范有限的情況下如何防止數據泄露。最簡單直接的方法就是在網絡層阻斷企業隱秘數據與外網(互聯網)的交互,將企業隱秘數據存儲在公司內(局域網)中。企業為數據安全做內外隔離的同時,也造成非隱秘數據的隔離,因此在做數據安全時,企業希望非隱秘數據能夠在網絡層物理隔離的前提下自由交換。
網絡物理隔離僅能通過人工定時導入,這種方案會增加人工成本,而且不能實現數據的實時同步;采用網閘會提高硬件采購成本,中小企業無能力承受。其實,在同步數據量較小的情況下,可以采用計算機串口進行數據同步,并定義好串口通信的私有協議,而且基于串口通信,意味著以太網層面實現了網絡物理隔離。
系統軟件設計采用面向對象的設計理念,將主程序及子程序封裝、抽象成不同的類,運行時各個類對象之間相互獨立,提高軟件的復用度,實現松耦合設計。在數據傳輸層,采用多線程技術,保證數據傳輸的實時性和可靠性。
按照計算機串口通信的規范,使用串口線將兩臺計算機的串口相連,本文采用全雙工的RS232通信協議實現兩臺計算機之間的數據傳遞。軟件設計流程如圖1所示。

串口通信過程中經常會遇到丟包問題,因此必須有完整的數據校驗機制,防止數據傳輸過程的丟包現象。當發生丟包時,數據必須重新傳送。因此在串口通信過程中,保證數據的完整性,是程序編寫的難點之一。
因為串口傳輸有丟包問題,會造成數據傳輸不完整,因此發送方必須告訴接收方本次傳輸了多少字節。另外,信息化系統中,交換的數據可能表示不同的邏輯,因此要根據交換數據的種類,定義不同的相應事件,接收端接到不同的數據,執行對應的事件,處理已經接收到的數據。數據格式設計如圖2所示。

事件代碼:占2個字節;
數據長度:占2個字節;
數據主體:值傳輸的數據,建議不超過5k;
結束標識:占1個字節。
傳輸數據可以采用逗號分割的CSV文件格式、XML格式或者JSON格式。
CSV文件:逗號分隔值純文本文件。在數據傳輸時,采用CVS文件的規范,格式化待傳輸數據,方便于表示和解析二維表關系型數據。
由于CSV是純文本形式,很難解決二進制圖片,文本中存在分隔符的問題。所以,簡單數據可以考慮CSV方式傳輸,CSV冗余數據最少。
XML:跨平臺的擴展標記語言,可用于不同平臺之間的數據交換,字符、圖片、視頻、音頻等復制結構的數據可輕而易舉地編譯成XML數據,XML數據能夠在不同程序中傳輸及解析。但是,XML傳輸時,數據冗余過多,原本串口的帶寬就不高,XML帶來的數據冗余增加了傳輸負擔。一般情況下,不推薦這種數據傳輸方式。
JSON:目前為止,互聯網上輕量級的、最為流行的數據交換協議。JSON使用逗號、大括號及中括號等符合分割數據,取代了XML的標識符。JSON和XML從可讀性、可擴展性、編碼難度、解碼難度等方面相比,JSON均不輸于XML,而且傳輸數據冗余遠遠小于XML,因此推薦JSON作為數據傳輸的格式。
在采用JSON傳輸數據的前提下,經常會遇到二進制數據的傳輸,例如圖片的傳輸。
利用JSON傳輸圖片時,可以采用兩種方法,以C#語言實現為例:
1)字符串方式,步驟如下:a.將圖片轉成字節數組;b.將字節數組轉為字符串;c.將字符串壓縮,放入JSON中傳輸。
2)Base64傳輸:a.圖片序列化為二進制流;b.二進制流轉成Base64;c.將圖片的Base64編碼放入JSON中傳輸。
兩臺電腦通過串口進行數據通信時,通常是將接收到的數據寫入遠程的數據庫服務器或文件系統中。由于同步過程實時進行,無法保證在訪問遠程數據庫時網絡暢通,因此需要將同步接收的數據暫時保存到本地,待網絡暢通時,將緩存的數據寫入遠程數據庫或文件系統中。所以,實時的數據同步系統需要本地緩存機制,從而保障同步系統可靠、穩定的運行。
本地數據緩存分為兩類數據處理,關系文本數據采用SQLite數據庫緩存,二進制文件數據,直接緩存到本地文件系統中。SQLite,是一種輕量級的本地數據庫,支持多種平臺,讀寫速度快,占用資源少,因此在嵌入系統中得到普遍應用。因此,串口傳輸過程中,SQLite數據庫作為數據交換過程中的緩存數據庫。
推薦環境:
Window 7/2008/Embedded,FrameWord 4.0以上。
也可以使用Linux操作系統,采用C/C++或Java等語言開發。
界面設計必須直觀、簡潔、易操作。頁面實時顯示數據同步過程的報告,能夠直觀的看到數據同步數據量,正確接收數量,正確處理了多少數據。頁面設計如圖3所示。

當軟件故障時,自動重啟服務端和客戶端軟件,即使恢復數據同步機制,同時留有日志。
本文設計了基于計算機串口通信原理為設計基礎,在企業內外網物理隔離的情況下,如何利用計算機串口實現內外數據的自動同步技術,從而降低企業信息化系統內外數據交換而產生的人工成本,提高工作速度,達到數據信息及時更新反饋,經本系統的編程設計運行結果表明,各項功能均可實現,達到預期,設計滿足要求。