999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于 Electron 的跨平臺校內服務聚合平臺實現

2021-03-04 11:38:24黑大任,康嘉,崔旭,孫銓鍇,張曉賢
電腦知識與技術 2021年34期
關鍵詞:跨平臺

黑大任,康嘉,崔旭,孫銓鍇,張曉賢

摘要:隨著新操作系統和各種新接口的不斷推出,許多老舊軟件的兼容性不能滿足新平臺的要求。同時,多種新型網絡攻擊方式增加了采用傳統方案的服務器的安全隱患。該文使用 Electron和NodeJS等技術構建了更加安全的跨平臺的新型校內聚合服務平臺,并通過內置校園網認證工具解決了原有校園網客戶端在新操作系統上無法運行的問題。

關鍵詞:跨平臺;Vue;響應式;Electron

中圖分類號:TP311? ? ? ?文獻標識碼:A

文章編號:1009-3044(2021)34-0055-02

由于操作系統的不斷更新,很多操作系統不再支持當前的校園網客戶端。并且,對于大部分校內服務而言,由于使用學校內網沒有提供經過 SSL 加密的連接,因此存在中間人攻擊的可能。同時許多校內服務在瀏覽器環境中運行,沒有經過單獨的隔離,也可能會在瀏覽器中被篡改。

本文基于Electron和NodeJS等技術,通過操作命令行版本的校園網客戶端來實現校園網在多種操作系統下的認證,既具有校園網客戶端的功能特性,又通過內嵌自簽名 SSL 證書實現了對校內服務的聚合導航以及加密訪問。

1 項目整體結構

項目由 daemonserver和 客戶端軟件構成。客戶端軟件面向用戶,提供 GUI來進行校內服務訪問以及校園網故障協助診斷等。

客戶端軟件采用 electron 進行構建大致可以分為 GUI 和邏輯層。GUI 采用 Vue.js 框架進行構建,邏輯層使用 NodeJS,可訪問系統接口,通過 shell 來訪問校園網登錄認證程序,實現校園網認證。

2 技術實現

2.1 客戶端軟件技術實現

客戶端主要基于 Electron技術。Electron 是基于 chromium 開源項目的一套開源跨平臺解決方案。Chromium 項目本身提供了多平臺支持和沙盒支持,使 electron能夠安全地運行在Linux,Windows和macOS 上,實現跨平臺支持。

實現跨平臺需要統一的系統 API抽象層 libuv。libuv是Node的跨平臺異步抽象層,用于抽象 Windows的 IOCP以及 POSIX的 libdev。通過 libuv可以調用系統 API對底層基于 C++ 的校園網客戶端核心進行操作。

electron 中保留了 chromium 使用 webview 來渲染頁面和 V8引擎來執行 JS 代碼的特性,用于渲染桌面應用程序的GUI,而且 electron 在此基礎上添加了 NodeJS 的支持,使得程序可以直接調用系統接口。

electron 中也保留了 chromium 中的進程管理模式,每一個窗口都屬于獨立的渲染進程(Render Process),由主進程進行管理(Main Process)。這種方式的好處是每個窗口都可以有自己的封裝,如果有渲染進程崩潰,也不會影響到其他的渲染進程,同時每一個渲染進程都有自己的沙盒,進程之間彼此隔離,提高安全性。

目前,由于維護成本較低,代碼復用程度高,用戶體驗優異,該技術方案已經被各大軟件巨頭廣泛采用。其中包括微軟,百度,GitHub 等公司都有基于 electron 的產品。

2.1.1 GUI 實現方案

GUI 采用 Vue.js 框架進行構建,運行于渲染進程。Vue.js 是廣受好評的 MVVM 模式的前端框架,通過數據與界面層進行雙向綁定,使得數據和界面能夠分離進行處理,使得開發 Web App 更加方便維護,借助Vue.js可以更好地實現 MVVM模式。

2.1.2 集中式狀態管理

為了更好地實現組件之間的數據交換, 我們使用 vuex 來進行前端組件之間的狀態管理。通過 vuex 可以讓組件之間在傳統的事件/Props方式傳遞數據之外, 使用集中式存儲前端中所有組件的狀態。

vuex 把所有的數據放在一處方便所有組件進行訪問,解決了同級組件以及多層組件之間的信息傳遞問題。

2.1.3 邏輯層實現

使用 electron的主進程來控制渲染進程的邏輯,主進程中內嵌 NodeJS接口,可以直接訪問系統接口來進行操作,主要用于讀取配置文件,以及通過shell 操作校園網登錄認證程序。

2.1.4 進程間通訊

electron 有原生的 IPC 系統,并且和 JS? 的事件進行高度整合。在主進程中使用 ipcMain模塊負責主進程的事件監聽和事件發送,在渲染進程中使用 ipcRenderer模塊進行事件的監聽和發送。這兩個模塊都是繼承自 NodeJS中的 EventEmitter模塊。

校園網認證程序也是作為軟件的子進程運行,由于是調用 shell 所以直接使用命令行參數向校園網認證程序發送數據,同時 NodeJS會記錄 shell的各種流來向用戶返回信息。例如如果校園網認證程序通過 stdout輸出正常的 log信息,主進程收到之后會調用回調函數將log發送給渲染進程或記錄到log文件中,如果校園網認證程序通過stderr返回錯誤,主進程也會向渲染進程發送有關事件,進而在UI提示用戶有關錯誤。

2.1.5 應用打包和保護

由于 JavaScript是一種相對而言比較自由的語言,在編碼過程中開發者可能會使用不安全的或者可能造成內存泄漏的代碼模式,所以我們需要使用 ESLint來對代碼進行規范,對代碼中的問題進行及時檢查。ESLint是一種幫助開發者查找代碼中可能存在問題的語法檢查工具,使用 AST技術除了進行編程模式的檢查,ESLint還可以對代碼的縮進格式進行規范,幫助開發者生產穩定的便于維護的代碼。

雖然electron有了 V8 解釋器能夠讓代碼快速執行,但是JS 的最大缺陷在于它是一種腳本語言,并且暫時沒有像KPHP 一樣能夠編譯成二進制的方案,這也導致早期的基于electron 的應用程序極易被篡改或破解。本程序使用 asar 封裝確保應用的內部邏輯不會被用戶隨意訪問和修改。

asar 是electron 使用的一種拓展存檔文件,類似 tar 文件,在沒有壓縮的情況下把所有的文件打包到一起,同時具備隨機訪問優化,可以在一定程度上提升程序的運行速度。

要把UI代碼和邏輯層代碼存放在一起,如果要打包成能夠發行的客戶端軟件,需要先試用 Webpack將有關邏輯進行打包,之后使用 electron-builder封裝到對應平臺的安裝文件中。

2.1.6 通過與DaemonServer協同診斷網絡

DaemonServer可以協助桌面客戶端對網絡進行診斷。由于 DaemonServer 24小時在線,所以可以協助校園網用戶在遇到網絡故障的時候判斷有沒有成功連接到LAN,如果客戶端無法ping通DaemonServer, 則說明該用戶沒有連接到 LAN,此時用戶可以檢查是不是網線沒有插好,或者交換機有沒有宕機。如果用戶能夠ping通DaemonServer卻依然不能上網,說明用戶是因為其他原因導致的無法連接到外網,此時用戶可以查閱DaemonServer提供的網絡診斷頁面,幫助用戶進行排查。

2.2 DaemonServer技術實現

由于校內服務的部署狀態有時會發生變化,所以軟件并沒有將校內服務寫死在程序中,而是使用外部的 DaemonServer來動態配置校內服務的信息,每次程序運行就會向 DaemonServer發送請求來獲取校內服務的IP地址。

除了提供校內服務的鏈接之外,DaemonServer還可協助進行校園網故障診斷,同時提供靜態的幫助文檔頁面,協助校園網用戶排查故障。

2.2.1 反向代理

由于 DaemonServer同時需要提供多種服務,所以使用 Nginx進行反向代理,把不同的服務分配個不同的端口。

有關校園網故障的幫助文檔屬于靜態資源,直接由 Nginx分配給80端口。有關校內服務列表存放在 DaemonServer的MySQL數據庫中,使用 express提供 API來進行訪問和修改,由Nginx分配給8080端口。

2.2.2 角色分配和權限設計

由于校內服務不是一成不變的,所以 DaemonServer將有關校內服務的 IP地址存放在自身的數據庫中,管理員可以定期對相關數據進行維護。據此將 expressAPI分成兩類:需要認證即可訪問的用戶接口以及需要身份驗證的管理員接口。

管理員接口可以對數據庫中的校內服務信息進行增刪和修改,需要在 HTTP訪問頭添加Header才能正常訪問。相關驗證在 API訪問時的中間件進行,面向切面進行處理。

3結語

本項目將校園網登錄認證服務以及其他校內服務進行整合,實現了校內服務的聚合。通過自簽名 SSL證書實現了在學校內網中的加密訪問,使用 Electron技術實現了軟件的多平臺運行,并且借助 Vue.js實現了用戶體驗良好、現代化的響應式用戶界面。

參考文獻:

[1] 馮傳波,彭章友,張鐘浩.基于Vue.js的移動應用可視化平臺的研究[J].工業控制計算機,2019,32(5):102-103.

[2] 皮宗輝,王樹國,簡明.高校校園網規劃設計及性能優化——以喀什大學為例[J].喀什大學學報,2020,41(6):65-68.

【通聯編輯:代影】

猜你喜歡
跨平臺
跨層級網絡、跨架構、跨平臺的數據共享交換關鍵技術研究與系統建設
一款游戲怎么掙到全平臺的錢?
電腦報(2021年11期)2021-07-01 08:10:05
潛力雙跨平臺:進階:誰將跨入下一個“十大”?
跨平臺APEX接口組件的設計與實現
測控技術(2018年9期)2018-11-25 07:44:58
基于C++語言的跨平臺軟件開發的設計
數碼世界(2017年12期)2017-12-28 15:45:13
基于C++語言的跨平臺軟件開發
移動互聯網應用跨平臺開發
一種虛擬現實應用程序跨平臺方法的研究
基于QT的跨平臺輸電鐵塔監控終端軟件設計與實現
基于OPC跨平臺通信的電機監測與診斷系統
主站蜘蛛池模板: 国产噜噜噜视频在线观看| 亚洲三级视频在线观看| 亚洲五月激情网| 99青青青精品视频在线| 精品人妻一区二区三区蜜桃AⅤ| 国产成人综合久久精品下载| 日韩中文精品亚洲第三区| 久久国产拍爱| 色婷婷综合激情视频免费看| 亚洲国产精品VA在线看黑人| 久久婷婷六月| 毛片视频网| 久久精品国产亚洲麻豆| 国产精品99在线观看| 精品色综合| 久久精品娱乐亚洲领先| 亚洲欧洲日产无码AV| 亚洲国产成熟视频在线多多| 国产系列在线| 欧美第九页| 欧美一级专区免费大片| 九九九精品视频| 高清乱码精品福利在线视频| 亚洲欧美日韩久久精品| 国产剧情国内精品原创| 亚洲午夜天堂| 午夜a级毛片| 2020国产精品视频| 先锋资源久久| 国产黄在线观看| 波多野结衣中文字幕久久| 成年A级毛片| 国产69囗曝护士吞精在线视频| 一区二区理伦视频| 中文字幕精品一区二区三区视频| 国产在线精品网址你懂的| 国产成人精品一区二区| 欧洲熟妇精品视频| 无码专区国产精品第一页| 亚洲精品在线观看91| 久久国产精品国产自线拍| 99re视频在线| 国产精品香蕉| 久久五月视频| 国产精品污污在线观看网站| 国产精品久久久久久久久kt| 97se亚洲综合在线韩国专区福利| h网站在线播放| 国内自拍久第一页| 国产一区二区三区夜色| 亚洲中文在线看视频一区| 伊人久久久久久久久久| 美女扒开下面流白浆在线试听 | 香蕉蕉亚亚洲aav综合| 国产女人在线观看| 91色爱欧美精品www| 欧美成在线视频| 亚洲天堂视频在线观看免费| 亚洲国产成人精品一二区 | 亚洲人成在线精品| 欧美激情福利| 欧美精品伊人久久| 国产自无码视频在线观看| 国内毛片视频| 国产白浆一区二区三区视频在线| 欧美成人怡春院在线激情| 亚洲一级毛片在线观播放| 九月婷婷亚洲综合在线| 国产黑丝视频在线观看| 中文字幕2区| 亚洲h视频在线| www.亚洲国产| 成人免费网站在线观看| av免费在线观看美女叉开腿| 成人年鲁鲁在线观看视频| 在线高清亚洲精品二区| 亚洲国产理论片在线播放| 欧美亚洲日韩不卡在线在线观看| 精品99在线观看| 精品国产三级在线观看| 亚洲日韩精品欧美中文字幕 | 91亚洲免费|