• 
    

    
    

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

      ?

      基于C#的進(jìn)程守護(hù)程序的設(shè)計

      2020-06-11 14:28:18
      視聽 2020年3期
      關(guān)鍵詞:服務(wù)程序服務(wù)端列表

      (廣西廣播電視無線傳播樞紐臺)

      一、背景

      在實際工作中,運(yùn)行在服務(wù)器上的各類軟件服務(wù)程序,偶爾出現(xiàn)異常后退出或者不能正常工作,這樣該軟件服務(wù)程序就無法提供準(zhǔn)確的數(shù)據(jù)和執(zhí)行各項指令,給使用者造成了困擾。為了解決這個問題,本文提出了一種基于C#的進(jìn)程守護(hù)程序解決方案,在服務(wù)器上運(yùn)行一個守護(hù)程序,實時監(jiān)視軟件服務(wù)程序的進(jìn)程或心跳包,當(dāng)軟件服務(wù)程序出現(xiàn)異常退出或者進(jìn)入假死狀態(tài)不能正常工作時,進(jìn)程守護(hù)程序的監(jiān)視端可自動對出現(xiàn)故障的軟件服務(wù)程序進(jìn)行復(fù)位重啟,亦可人工在進(jìn)程守護(hù)程序的客戶端界面上對出現(xiàn)故障的軟件服務(wù)程序進(jìn)行復(fù)位重啟,使軟件服務(wù)程序恢復(fù)正常運(yùn)行。

      二、方案設(shè)計

      (一)目標(biāo)、涉眾分析

      1.目標(biāo)

      使用者能方便地查看所監(jiān)視的各軟件服務(wù)程序的當(dāng)前運(yùn)行狀態(tài),并可以手動復(fù)位重啟程序。

      2.涉眾

      主要涉眾是各軟件服務(wù)程序的使用者。

      (二)系統(tǒng)概念分析

      本進(jìn)程守護(hù)程序分為三個部分:

      1.守護(hù)系統(tǒng)服務(wù)端(下稱服務(wù)端):負(fù)責(zé)將接收到的客戶端復(fù)位指令轉(zhuǎn)發(fā)給監(jiān)視端,又將監(jiān)視端復(fù)位軟件服務(wù)程序的結(jié)果、監(jiān)視端的通信狀態(tài)和軟件服務(wù)程序的運(yùn)行狀態(tài)轉(zhuǎn)發(fā)給客戶端。

      2.守護(hù)系統(tǒng)監(jiān)視端(下稱監(jiān)視端):該端部署在各軟件服務(wù)程序所在的服務(wù)器上,接收到復(fù)位指令后,按照指令復(fù)位指定軟件服務(wù)程序并將復(fù)位結(jié)果發(fā)送給服務(wù)端;定時將軟件服務(wù)程序的運(yùn)行狀態(tài)發(fā)送給服務(wù)端。軟件服務(wù)程序運(yùn)行在不同的服務(wù)器上,所以監(jiān)視端也將部署在多個服務(wù)器上。

      3.守護(hù)系統(tǒng)客戶端(下稱客戶端):負(fù)責(zé)將復(fù)位指令發(fā)送給服務(wù)端,并顯示復(fù)位的結(jié)果;顯示軟件服務(wù)程序的運(yùn)行狀態(tài)。客戶端部署在值班平臺的多個值班電腦上。

      圖1 系統(tǒng)業(yè)務(wù)概念分析圖

      (三)業(yè)務(wù)流程分析

      1.概述

      進(jìn)程守護(hù)程序主要有4個業(yè)務(wù)流程:

      (1)復(fù)位軟件服務(wù)程序;

      (2)顯示軟件服務(wù)程序的運(yùn)行狀態(tài)(正常,異常,未運(yùn)行);

      (3)顯示監(jiān)視端的通信狀態(tài);

      (4)顯示服務(wù)端的通信狀態(tài)。

      2.復(fù)位軟件服務(wù)程序的業(yè)務(wù)流程

      使用者在客戶端上點(diǎn)擊復(fù)位一個或多個軟件服務(wù)程序,客戶端接收到復(fù)位事件后,立即發(fā)送復(fù)位指令給服務(wù)端。服務(wù)端收到指令后,檢測接受指令的一個或多個監(jiān)視端是否在線,如不在線,則將“監(jiān)視端不在線,復(fù)位失敗”的結(jié)果返回客戶端,如果在線,則發(fā)送復(fù)位指令給監(jiān)視端。監(jiān)視端收到復(fù)位指令后,立即復(fù)位指定的軟件服務(wù)程序,然后將復(fù)位結(jié)果返回給服務(wù)端。服務(wù)端也立即將復(fù)位結(jié)果返回給客戶端??蛻舳私邮諒?fù)位結(jié)果的指令后,顯示在界面上。

      3.顯示軟件服務(wù)程序的運(yùn)行狀態(tài)的業(yè)務(wù)流程

      監(jiān)視端定時收集軟件服務(wù)程序的運(yùn)行狀態(tài)(正常,異常,未運(yùn)行)上報給服務(wù)端。服務(wù)端收到狀態(tài)數(shù)據(jù)后,存入軟件服務(wù)程序運(yùn)行狀態(tài)列表中??蛻舳藛映晒蠖〞r從服務(wù)端獲取軟件服務(wù)程序運(yùn)行狀態(tài)列表數(shù)據(jù),然后在界面上顯示。

      4.顯示監(jiān)視端的通信狀態(tài)

      監(jiān)視端定時發(fā)送心跳包給服務(wù)端,服務(wù)端收到心跳包后存入監(jiān)視端通信狀態(tài)列表,客戶端啟動成功后定時從服務(wù)端獲取監(jiān)視端通信狀態(tài)列表數(shù)據(jù),然后在界面上顯示。

      5.顯示服務(wù)端的通信狀態(tài)

      客戶端啟動成功后定時發(fā)送心跳包給服務(wù)端,并將通信狀態(tài)顯示在界面上。

      圖2 系統(tǒng)總用例圖

      (四)系統(tǒng)架構(gòu)

      進(jìn)程守護(hù)程序分為三個部分:

      1.服務(wù)端:是一個中間件,負(fù)責(zé)轉(zhuǎn)發(fā)客戶端和監(jiān)視端的數(shù)據(jù)信息,采用C#語言編寫,運(yùn)行于.Net Core3.1框架下,支持跨平臺運(yùn)行,服務(wù)端使用UDP協(xié)議與客戶端、監(jiān)視端進(jìn)行通信。

      2.監(jiān)視端:負(fù)責(zé)守護(hù)一個或多個軟件服務(wù)程序,部署在軟件服務(wù)程序所在的服務(wù)器上,采用C#語言編寫,運(yùn)行于.Net Core3.1框架下,支持跨平臺運(yùn)行。

      3.客戶端:是部署在值班平臺操作電腦上,C#語言編寫,因為值班操作電腦使用Windows系統(tǒng),故使用.Net FrameWork 4.7.2框架,提供WinForm友好可視界面,方便使用者直觀地查看各軟件服務(wù)程序的運(yùn)行狀態(tài)和進(jìn)行復(fù)位操作。

      圖3 系統(tǒng)架構(gòu)圖

      三、系統(tǒng)實現(xiàn)

      (一)服務(wù)端的實現(xiàn)

      服務(wù)端基于.Net Core框架來創(chuàng)建,主要實現(xiàn)轉(zhuǎn)發(fā)功能和狀態(tài)存儲功能。服務(wù)端啟動后,創(chuàng)建一個Lsit泛型列表對象,一個消息隊列,一個BackgroundWorker線程對象,一個Socket對象。

      Socket對象實例化后,綁定一個偵聽端口,實時接收客戶端和監(jiān)視端發(fā)送過來的UDP包,并對接收到的數(shù)據(jù)包進(jìn)行解析,如果是客戶端發(fā)來的復(fù)位的指令,就將復(fù)位指令轉(zhuǎn)發(fā)給相應(yīng)的監(jiān)視端;如果是監(jiān)視端返回的復(fù)位結(jié)果,則將結(jié)果轉(zhuǎn)發(fā)給客戶端;如果是監(jiān)視端發(fā)來其自身和所監(jiān)視的軟件服務(wù)程序的狀態(tài)數(shù)據(jù),就將該狀態(tài)數(shù)據(jù)推入消息隊列。

      BackgroundWorker線程對象實例化后,定時檢查消息隊列是否存在新消息,如果有新狀態(tài)數(shù)據(jù),則進(jìn)行解析處理,并將結(jié)果存入Lsit泛型列表對象中;然后又定時將這些關(guān)于監(jiān)視端和軟件服務(wù)程序的狀態(tài)列表數(shù)據(jù),通過Socket對象發(fā)送給客戶端。

      (二)客戶端的實現(xiàn)

      客戶端基于.Net FrameWork框架來實現(xiàn),主要是實現(xiàn)各監(jiān)視端和軟件服務(wù)程序狀態(tài)的實時顯示和進(jìn)行復(fù)位操作指令的下發(fā)以及復(fù)位結(jié)果的顯示。

      客戶端初始化時,創(chuàng)建一個Socket對象,并向服務(wù)端發(fā)送獲取監(jiān)視端和軟件服務(wù)程序狀態(tài)的請求,收到返回結(jié)果后,根據(jù)數(shù)據(jù)列表,動態(tài)創(chuàng)建Label對象和Button對象,將監(jiān)視端和軟件服務(wù)程序狀態(tài)顯示在UI界面上。此后就定時接收服務(wù)端推送過來的實時狀態(tài)列表數(shù)據(jù),并更新顯示在UI界面上。

      當(dāng)使用者選擇某個軟件服務(wù)程序進(jìn)行復(fù)位時,客戶端監(jiān)聽到給復(fù)位事件,就通過Socket對象發(fā)送復(fù)位指令給服務(wù)端;當(dāng)收到服務(wù)端轉(zhuǎn)發(fā)來的復(fù)位結(jié)果后,就將復(fù)位結(jié)果通過Label對象顯示出來。

      (三)監(jiān)視端的實現(xiàn)

      監(jiān)視端基于.Net Core框架來創(chuàng)建,主要實現(xiàn)自動或根據(jù)指令復(fù)位軟件服務(wù)程序,和定時監(jiān)測軟件服務(wù)程序的進(jìn)程和心跳包并上報的功能。

      監(jiān)視端初始化時,創(chuàng)建一個Socket對象,一個List泛型列表,一個BackgroundWorker線程對象。Socket對象實時監(jiān)聽服務(wù)端轉(zhuǎn)發(fā)過來的復(fù)位指令,根據(jù)指令內(nèi)容,找到相應(yīng)的軟件服務(wù)程序的進(jìn)程信息,然后Kill掉該進(jìn)程,再發(fā)送啟動命令啟動軟件服務(wù)程序,最后將復(fù)位結(jié)果返回給服務(wù)端。同時,Socket對象實時監(jiān)聽軟件服務(wù)程序發(fā)送過來的心跳包,并將心跳包存入List泛型列表中。

      BackgroundWorker線程對象定時監(jiān)測軟件服務(wù)程序的進(jìn)程是否還存在,心跳包時間是否已經(jīng)超時,如果進(jìn)程不存在或者心跳包已超時,則發(fā)送啟動命令啟動軟件服務(wù)程序。同時定時將軟件服務(wù)程序狀態(tài)上報給服務(wù)端。

      四、結(jié)語

      本進(jìn)程守護(hù)程序使用了.Net Core和.Net Framework兩個框架,C#語言編寫,采用UDP協(xié)議進(jìn)行通信。啟用本程序后,在一定程度上能改善軟件服務(wù)程序出現(xiàn)異常后的恢復(fù)速度,讓使用者能對各軟件服務(wù)程序的實時運(yùn)行狀態(tài)了如指掌。

      猜你喜歡
      服務(wù)程序服務(wù)端列表
      巧用列表來推理
      基于移動終端的人事信息員工自助服務(wù)系統(tǒng)設(shè)計
      基于移動終端的人事信息員工自助服務(wù)系統(tǒng)設(shè)計
      SylixOS系統(tǒng)的中斷嵌套機(jī)制研究與實現(xiàn)
      學(xué)習(xí)運(yùn)用列表法
      擴(kuò)列吧
      云存儲中基于相似性的客戶-服務(wù)端雙端數(shù)據(jù)去重方法
      新時期《移動Web服務(wù)端開發(fā)》課程教學(xué)改革的研究
      在Windows Server 2008上創(chuàng)建應(yīng)用
      水利工程施工監(jiān)理服務(wù)程序及質(zhì)量控制
      舟山市| 什邡市| 乌兰浩特市| 高台县| 云霄县| 哈巴河县| 东阿县| 山东| 修文县| 温州市| 庆阳市| 莒南县| 呼伦贝尔市| 来宾市| 武宁县| 武隆县| 屏东县| 威远县| 新竹市| 连山| 汝南县| 新津县| 连山| 张家界市| 丰台区| 高邮市| 曲靖市| 平顶山市| 福贡县| 天镇县| 鄢陵县| 贵德县| 南安市| 渭南市| 磐石市| 玉田县| 蓝山县| 古交市| 淄博市| 册亨县| 台江县|