• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于NodeJS的漁業(yè)資源調(diào)查數(shù)據(jù)采集系統(tǒng)框架重構(gòu)

      2020-01-02 05:58:16鐘德福張良國黃小華呂俊霖
      漁業(yè)現(xiàn)代化 2019年6期
      關(guān)鍵詞:漁業(yè)資源路由客戶端

      鐘德福,張良國,艾 紅,2,黃小華,2,呂俊霖

      (1 中國水產(chǎn)科學研究院南海水產(chǎn)研究所,廣東 廣州 510300;2 農(nóng)業(yè)農(nóng)村部外海漁業(yè)開發(fā)重點實驗室,廣東 廣州 510300)

      近年來全球范圍的漁業(yè)資源開發(fā)強度不斷提高,海洋生態(tài)系統(tǒng)遭到不同程度的破壞,漁業(yè)資源調(diào)查對維護漁業(yè)可持續(xù)發(fā)展和生態(tài)系統(tǒng)平衡起著重要作用[1- 2]。其中進行生態(tài)研究、漁場開發(fā)、漁業(yè)資源評估和捕撈策略制定等都離不開現(xiàn)場數(shù)據(jù)的采集和處理[3- 4]。由于對漁業(yè)資源調(diào)查的要求提高,以往傳統(tǒng)的數(shù)據(jù)采集方式已不能滿足調(diào)查數(shù)據(jù)采集的需求。近年來互聯(lián)網(wǎng)技術(shù)廣泛應(yīng)用于科學研究、野外調(diào)查和環(huán)境監(jiān)測等領(lǐng)域,如針對野外數(shù)據(jù)采集而開發(fā)的基于移動智能平臺、Android平臺和Windows Phone平臺的數(shù)據(jù)采集系統(tǒng),均能在相關(guān)領(lǐng)域?qū)崿F(xiàn)數(shù)據(jù)采集[5- 8]。同時,針對漁業(yè)數(shù)據(jù)的采集也開發(fā)出基于ArcGIS Mobile、Pocket PC平臺的數(shù)據(jù)采集系統(tǒng)[9- 10],在一定程度上解決了漁業(yè)數(shù)據(jù)采集的智能化問題。但以上系統(tǒng)框架結(jié)構(gòu)具有耦合程度高、移植性差、開發(fā)和維護成本高等缺點,不符合主流軟件框架的標準[11- 13]。

      鑒于漁業(yè)資源調(diào)查中數(shù)據(jù)采集具有復雜性、時效性和差異性等特點,重新構(gòu)建高內(nèi)聚和易維護的數(shù)據(jù)采集系統(tǒng)框架非常必要。為滿足系統(tǒng)框架重構(gòu)的要求,本數(shù)據(jù)采集系統(tǒng)整體框架采用前后端分離設(shè)計,前后端獨立開發(fā)部署,使用統(tǒng)一Restful風格規(guī)范的接口提供數(shù)據(jù)服務(wù)。其中采用Nginx作為路由控制,對不同資源的請求進行分配,業(yè)務(wù)服務(wù)層可以專注于業(yè)務(wù)邏輯處理和提供統(tǒng)一的數(shù)據(jù)接口服務(wù),從而使系統(tǒng)框架具有低耦合、易維護、可擴展等特點。

      1 系統(tǒng)功能設(shè)計

      漁業(yè)資源調(diào)查數(shù)據(jù)采集過程中由于參與者的需求各不相同,因此數(shù)據(jù)采集系統(tǒng)功能既要保證完整性又要降低使用的復雜性。按業(yè)務(wù)關(guān)系可劃分為前端用戶和后端用戶,前端用戶主要包括科研人員、基層數(shù)據(jù)采集人員等;后端用戶主要包括系統(tǒng)維護人員、數(shù)據(jù)處理人員等。隨著數(shù)據(jù)采集參與者的增加和數(shù)據(jù)采集需求的變化,導致傳統(tǒng)的數(shù)據(jù)采集系統(tǒng)功能不足、設(shè)計復雜和維護成本高等問題。

      為了確保系統(tǒng)功能的完整性、降低設(shè)計的復雜性,需根據(jù)不同參與者的需求設(shè)計功能模塊和采集參數(shù)(表1)。其中,前端用戶中的科研人員和基層人員都占有較多的原始數(shù)據(jù)資源,但科研人員在數(shù)據(jù)控制和識別需求上比基層人員高,而且科研人員還需根據(jù)不同場次的采集調(diào)整參數(shù);后端用戶中系統(tǒng)管理人員偏重對整個系統(tǒng)的設(shè)置,而數(shù)據(jù)處理人員多是對采集的數(shù)據(jù)進行加工與分析。

      表1 漁業(yè)資源調(diào)查數(shù)據(jù)采集系統(tǒng)功能Tab.1 Functions of fishery resource survey data acquisition system

      客戶端系統(tǒng):主要向用戶提供數(shù)據(jù)采集、數(shù)據(jù)查詢和數(shù)據(jù)編輯功能,針對不同需求的用戶分別提供一般采集和復雜采集兩種模式。根據(jù)不同采集場次,用戶可通過參數(shù)設(shè)置對復雜采集進行個性化調(diào)整。

      后臺服務(wù)系統(tǒng):主要向用戶提供用戶管理、數(shù)據(jù)處理和接口服務(wù)功能。系統(tǒng)管理人員通過用戶管理模塊對客戶端系統(tǒng)用戶和后臺服務(wù)系統(tǒng)用戶實現(xiàn)角色和權(quán)限控制。數(shù)據(jù)處理模塊為用戶提供全部采集數(shù)據(jù)的查詢、導出功能。系統(tǒng)管理和維護人員通過接口服務(wù)模塊快速定位系統(tǒng)故障,保障系統(tǒng)的穩(wěn)定性。

      2 前后端分離設(shè)計

      隨著互聯(lián)網(wǎng)技術(shù)水平的不斷提升,前后端分離逐漸成為業(yè)界標準的使用方式[14- 15]。通過合理的前后端分離方式進行有效解耦,并且為以后分布式框架、微服務(wù)、跨平臺服務(wù)打下基礎(chǔ)。傳統(tǒng)的系統(tǒng)主要使用模型-視圖-控制器(model view controller,MVC)[16]框架搭建服務(wù)應(yīng)用,以Java服務(wù)器頁面(java server pages,JSP)和服務(wù)器連接器(server applet,servlet)為例,結(jié)構(gòu)如圖1所示。其中前端所有的請求被發(fā)送到作為Controller層的Servlet,它根據(jù)請求信息將需求分發(fā)到指定的View層來響應(yīng)和渲染。同時Servlet還根據(jù)JSP的需求生成Model層的JavaBeans的實例并輸出給JSP環(huán)境。JSP通過標簽方式調(diào)用JavaBeans中的數(shù)據(jù)。為了提高渲染效率,View層可以采用Freemaker、Velocity等模版引擎[17- 19]。這種框架結(jié)構(gòu)在前端開發(fā)過度依賴后端,導致系統(tǒng)整體耦合性太強,而且前后端無法單獨調(diào)試,對于后期維護和移植帶來很大困難。

      圖1 傳統(tǒng)MVC系統(tǒng)框架模型Fig.1 Framework of traditional MVC system

      傳統(tǒng)系統(tǒng)一般從物理層做區(qū)分,也即客戶端為前端,服務(wù)端為后端[20],這種區(qū)分方法已經(jīng)無法滿足前后端分離的需求。前后端分離中的前端主要負責Controller層和View層,后端只是負責Model層、業(yè)務(wù)處理和數(shù)據(jù)持久化等,結(jié)構(gòu)如圖2所示。

      圖2 前后端分離系統(tǒng)框架模型Fig.2 Framework of the front- end and back- end separation system

      在前端的結(jié)構(gòu)中增加一個中間件程序用于連接前后端,相比以前的系統(tǒng)通過前后異步JavaScript 和XML(Asynchronous Javascript And XML,AJAX)到后端,后端直接返回所需的JS對象簡譜(JavaScript Object Notation,JSON)數(shù)據(jù)作為響應(yīng)[21- 22],中間件可以將請求按需求匹配路由,對響應(yīng)的JSON數(shù)據(jù)進行二次處理,減低與后端的耦合性。因此,前后端分離的設(shè)計,擴展了前端的職能,如路由的匹配、頁面的渲染等,后端更專注于業(yè)務(wù)的處理。同時,前后端可以獨立調(diào)試,只需通過雙方約定好的接口進行數(shù)據(jù)交互即可。

      3 整體框架設(shè)計

      3.1 設(shè)計目標

      (1)對于系統(tǒng)客戶端請求要區(qū)分靜態(tài)資源和動態(tài)資源,合理分配資源調(diào)用,加快客戶端頁面渲染,提高交互體驗。

      (2)將Web服務(wù)器暴露于外網(wǎng)之中,負責接收請求和路由分配,再通過https模式訪問業(yè)務(wù)服務(wù)器,提高數(shù)據(jù)交互的安全性。

      (3)整個系統(tǒng)的請求都要通過規(guī)范的Restful風格的接口實現(xiàn),接口對http中的各類請求做出區(qū)分,保障數(shù)據(jù)資源的安全。

      (4)整體框架設(shè)計要達到前后端低耦合,實現(xiàn)前后端獨立調(diào)試和運行,便于系統(tǒng)維護和擴展。

      3.2 框架模型與實現(xiàn)

      基于NodeJS構(gòu)建的中間件和Koa2框架來搭建漁業(yè)資源調(diào)查數(shù)據(jù)采集系統(tǒng)框架模型見圖3。移動客戶層主要為系統(tǒng)用戶提供友好的操作界面和個性化信息的交互,負責提交采集的數(shù)據(jù),是系統(tǒng)框架的第一環(huán)。Web服務(wù)層主要負責對客戶端請求的路由調(diào)配,存放靜態(tài)資源,處理業(yè)務(wù)服務(wù)端返回的數(shù)據(jù)結(jié)構(gòu),為客戶端調(diào)試提供模擬數(shù)據(jù),是前后端分離結(jié)構(gòu)的紐帶。業(yè)務(wù)服務(wù)層主要負責對采集數(shù)據(jù)處理和持久化,并向Web服務(wù)端返回結(jié)果數(shù)據(jù),是整個系統(tǒng)框架業(yè)務(wù)處理的基礎(chǔ)。

      圖3 基于NodeJS的漁業(yè)資源調(diào)查數(shù)據(jù)采集系統(tǒng)框架模型Fig.3 Framework of fishery resource survey data acquisition system based on NodeJS

      移動應(yīng)用層的實現(xiàn):針對移動設(shè)備不同的操作系統(tǒng),采用Cordova+ionic+AngularJS框架來搭建移動客戶端系統(tǒng)。其中Cordova作為快速創(chuàng)建跨平臺移動應(yīng)用程序的開發(fā)平臺,結(jié)合HTML5移動開發(fā)框架ionic和AngularJS,可以高效開發(fā)出適配大部分主流移動設(shè)備的客戶端系統(tǒng)[23- 25]。ionic提供了大量接近于原生的UI組件,快速創(chuàng)建客戶端的交互界面,大大提高使用體驗。AngularJS負責提供模板機制、數(shù)據(jù)綁定和動態(tài)請求,能快速處理返回的數(shù)據(jù)并渲染到頁面中[26]。Cordova目前支持大部分的主流移動操作系統(tǒng),比如Android、IOS、Windows Phone等,保障了客戶端的兼容性。

      Web服務(wù)層的實現(xiàn):作為系統(tǒng)框架前后端分離設(shè)計重要的一環(huán),主要采用Nginx搭建Web服務(wù)層,結(jié)構(gòu)見圖4。Nginx是一種基于Rest架構(gòu)風格,支持高并發(fā),作為反向代理進行負載均衡的高性能服務(wù)器[27- 29]。其中,Nginx主要負責請求的路由分配,實行反向代理到業(yè)務(wù)服務(wù)層,保障處于內(nèi)網(wǎng)的業(yè)務(wù)服務(wù)層的安全。另外,采用NodeJS構(gòu)建中間件應(yīng)用程序部署于Nginx上,負責響應(yīng)移動應(yīng)用層的請求,如果是靜態(tài)資源請求,則直接返回,如果是動態(tài)資源請求,則再向業(yè)務(wù)服務(wù)層發(fā)送https請求。對于業(yè)務(wù)服務(wù)層返回的JSON數(shù)據(jù)可以通過中間件應(yīng)用程序?qū)崿F(xiàn)二次處理,再渲染到頁面上,減輕客戶應(yīng)用層的渲染壓力。整個系統(tǒng)框架通過Web服務(wù)層可以避免傳統(tǒng)的Ajax直接請求到服務(wù)器獲取數(shù)據(jù)的高耦合情況,提高系統(tǒng)整體的運作效率,減低系統(tǒng)的維護成本。

      圖4 Web服務(wù)層框架模型Fig.4 Framework of Web service layer

      業(yè)務(wù)服務(wù)層的實現(xiàn):業(yè)務(wù)服務(wù)層主要負責處理采集數(shù)據(jù)的業(yè)務(wù)邏輯處理、提供移動應(yīng)用端所需的接口服務(wù),實現(xiàn)數(shù)據(jù)的持久化。業(yè)務(wù)服務(wù)層中采用基于NodeJS的Koa2框架來搭建業(yè)務(wù)管理系統(tǒng),Koa2應(yīng)用程序是具有極簡路由配置和優(yōu)秀錯誤處理機制的輕量級Web服務(wù)框架,能降低開發(fā)成本和提高擴展性和維護性[30- 32]。業(yè)務(wù)管理系統(tǒng)包括用戶管理模塊、數(shù)據(jù)處理模塊和接口服務(wù)模塊。用戶可以通過業(yè)務(wù)管理系統(tǒng)在權(quán)限范圍內(nèi)對采集數(shù)據(jù)進行交互,并對整個系統(tǒng)進行個性化設(shè)置,實現(xiàn)采集數(shù)據(jù)的互聯(lián)互通。

      4 結(jié)果與分析

      4.1 系統(tǒng)調(diào)試

      對本系統(tǒng)框架進行實驗調(diào)試,主要包括移動客戶端系統(tǒng)測試、Web服務(wù)層路由測試、業(yè)務(wù)服務(wù)層測試和整個系統(tǒng)的數(shù)據(jù)采集流程測試。

      (1)移動客戶端系統(tǒng)測試。分別在Android 9.0版本、Android 10.0版本和IOS 13.2.2版本上測試安裝客戶端系統(tǒng),能順利安裝系統(tǒng),無出現(xiàn)閃退現(xiàn)象,各模塊功能正常顯示。

      (2)Web服務(wù)層路由測試。在Web服務(wù)器上安裝網(wǎng)絡(luò)抓包工具WiresharkV1.113,客戶端系統(tǒng)點擊功能后,網(wǎng)絡(luò)抓包工具在不同的路徑和NodeJS中間件日志都有數(shù)據(jù)請求顯示,表明Web服務(wù)層能成功獲取客戶端系統(tǒng)的請求和響應(yīng)請求。

      (3)業(yè)務(wù)服務(wù)層測試。通過瀏覽器成功登陸業(yè)務(wù)服務(wù)系統(tǒng),各功能模塊正常運行,并通過接口服務(wù)測試成功獲取數(shù)據(jù)庫數(shù)據(jù)。

      (4)整體系統(tǒng)的數(shù)據(jù)采集流程測試。通過移動客戶端系統(tǒng)提供的數(shù)據(jù)采集表單,填入對應(yīng)數(shù)據(jù),提交數(shù)據(jù)后在移動客戶端系統(tǒng)和業(yè)務(wù)服務(wù)系統(tǒng)均能查詢數(shù)據(jù),檢查數(shù)據(jù)庫數(shù)據(jù)與新增采集數(shù)據(jù)一致,整個數(shù)據(jù)采集流程測試成功。

      4.2 試驗結(jié)果

      為了驗證經(jīng)過框架重構(gòu)后系統(tǒng)功能的可靠性,通過與傳統(tǒng)前后端未分離的框架在請求靜態(tài)資源和動態(tài)資源上進行對比(以下新系統(tǒng)代表重構(gòu)后的系統(tǒng),舊系統(tǒng)代表傳統(tǒng)的系統(tǒng))。試驗采用模擬請求方式,在相同4G網(wǎng)絡(luò)環(huán)境下對相同靜態(tài)資源進行多次請求,試驗結(jié)果見表2。

      表2 靜態(tài)資源請求結(jié)果對比Tab.2 Comparison of static resource request results

      另外,試驗結(jié)合數(shù)據(jù)采集和動態(tài)資源請求,對測試分為采集數(shù)據(jù)的查詢、新增、編輯和刪除操作4個方面,在相同4G網(wǎng)絡(luò)環(huán)境下對相同操作進行模擬請求試驗,以某次采集數(shù)據(jù)為例,試驗結(jié)果見表3。由于漁業(yè)資源調(diào)查時數(shù)據(jù)采集的網(wǎng)絡(luò)環(huán)境不同,因此在Android模擬器上安裝移動客戶端系統(tǒng),分別在3G和4G的環(huán)境下測試整體數(shù)據(jù)采集情況,試驗結(jié)果見表4。

      從表2、表3和表4中可看出,新系統(tǒng)能成功請求靜態(tài)資源和動態(tài)資源,所獲數(shù)據(jù)與移動客戶端系統(tǒng)的數(shù)據(jù)完全一致,響應(yīng)時間與舊系統(tǒng)相比略有優(yōu)勢;在網(wǎng)絡(luò)環(huán)境欠佳的情況下,雖然響應(yīng)時長有所增加,但各功能依然能成功運行。結(jié)果表明該系統(tǒng)經(jīng)過框架重構(gòu)后能正常實現(xiàn)實時數(shù)據(jù)采集工作。

      表3 動態(tài)資源請求結(jié)果對比Tab.3 Comparison of dynamic resource request results

      表4 3G和4G環(huán)境下數(shù)據(jù)采集結(jié)果對比Tab.4 Comparison of data acquisition results on 3G and 4G

      4.3 結(jié)果分析

      經(jīng)過調(diào)試和試驗,基于NodeJS的漁業(yè)資源調(diào)查數(shù)據(jù)集采集系統(tǒng)達到了系統(tǒng)設(shè)計目標,能滿足數(shù)據(jù)采集人員對漁業(yè)資源調(diào)查的需求,以及系統(tǒng)開發(fā)人員和維護人員對系統(tǒng)可擴展、易維護的需求,提高了數(shù)據(jù)采集系統(tǒng)的數(shù)據(jù)安全,降低了維護成本。但是,該系統(tǒng)也存在一些不足,如在網(wǎng)絡(luò)環(huán)境欠佳情況下提高響應(yīng)不穩(wěn)定,以及Web服務(wù)器的安全和負載均衡等問題。

      5 結(jié)論

      本系統(tǒng)框架重構(gòu)充分發(fā)揮了前后端分離設(shè)計低耦合、易維護、可擴展等優(yōu)點,既能實現(xiàn)數(shù)據(jù)采集人員實時數(shù)據(jù)采集功能,還可方便系統(tǒng)開發(fā)人員對各層系統(tǒng)獨立進行維護和拓展。由于該框架設(shè)計是以Restful風格接口實現(xiàn)各類請求,對于移動應(yīng)用層、業(yè)務(wù)服務(wù)層的變更可獨立進行,降低了聯(lián)調(diào)成本,提高了可靠性,對于日后多端應(yīng)用的拓展有一定的優(yōu)勢。

      猜你喜歡
      漁業(yè)資源路由客戶端
      沅江懷化段漁業(yè)資源增殖保護措施
      東海漁業(yè)資源重建的智慧技術(shù)思考
      中韓漁業(yè)資源聯(lián)合增殖放流活動在青島舉行
      簡述鱇浪白魚漁業(yè)資源相關(guān)研究成果、問題與建議
      探究路由與環(huán)路的問題
      縣級臺在突發(fā)事件報道中如何應(yīng)用手機客戶端
      傳媒評論(2018年4期)2018-06-27 08:20:24
      孵化垂直頻道:新聞客戶端新策略
      傳媒評論(2018年4期)2018-06-27 08:20:16
      基于Vanconnect的智能家居瘦客戶端的設(shè)計與實現(xiàn)
      電子測試(2018年10期)2018-06-26 05:53:34
      PRIME和G3-PLC路由機制對比
      WSN中基于等高度路由的源位置隱私保護
      計算機工程(2014年6期)2014-02-28 01:25:54
      汾西县| 云和县| 银川市| 拉萨市| 新沂市| 潞西市| 咸宁市| 洛南县| 肇东市| 乌审旗| 望都县| 宁远县| 视频| 铁岭市| 富宁县| 延寿县| 新平| 苗栗市| 泗洪县| 宽城| 泰和县| 玛沁县| 喀喇| 青龙| 通化市| 罗城| 靖州| 七台河市| 高安市| 马边| 金昌市| 福州市| 潜江市| 南投市| 渭南市| 齐河县| 抚顺县| 宿州市| 溧阳市| 武穴市| 民权县|