windows服務與自啓動程序的區別

在客戶端服務器項目實踐中,作爲服務端必須保持程序的24小時不間斷運行,需要做一個監控,當監控到該程序已關閉時則重新啓動下。

     有兩種方法可以實現這個功能:

第一是做windows服務,作爲後臺的系統服務監控程序的運行狀態。

第二是編寫另外一個程序作爲監控程序,通過添加計劃任務,將監控程序設置爲開機啓動。

網上討論兩者的區別很少,大概都是集中在監控程序有界面而windows服務沒有界面,其實監控程序也是可以寫成沒有界面顯示,只是後臺運行,即只能在任務管理器裏面看到進程。     自己總結了下,註冊一個服務,也是調用本地的一個exe來實現的,只不過該EXE入口函數包裝了windows服務的一些參數,或者說服務就是將本地的exe包裝了一下。在啓動服務的時候,其實際使用的還是exe程序的。兩者的主要區別:
一、啓動時間與啓動域不同,windows服務在用戶未登陸(即計算機賬號設置了密碼,需要輸入密碼才進入系統)時已開始啓動,而自啓動程序啓動時間爲登陸後。同樣的,程序作用範圍爲一個該帳戶下運行,而服務是一個work station,你切換不同帳戶該服務還是在運行中的。

三、windows服務可以設置運行時候參數,比如設置爲無法關閉,而自啓動程序在任務管理器中直接關閉是可以X掉的。


最後一點:
  一方面、自啓動程序一般是GUI程序,能夠跟桌面交互的。一個應用程序可以包括很多進程,不過一般應用程序也只是運行一個進程。可以設置自啓動程序無界面,運行於後臺,我感覺這樣其實跟服務沒有什麼區別了。
    另外一方面、一個服務其實就是運行在後臺的進程,與桌面無交互。服務只能有一個進程,在服務上啓動其他程序在桌面上也是不會出現界面的,要出現界面,必須在設置服務時候選擇與界面交互(這個時候服務啓動的其他程序出現界面了,該服務依然是沒有界面)。

    說了這麼多,其實製作windows服務監控與直接編程另外一個程序作爲自啓動程序來監控其實沒有差別。

   補充:如果windows服務程序或者自啓動程序因爲異常自身退出了,這個時候兩者表現有差別。windows服務程序可以通過設置異常後自動重啓來保持一直監控,而自啓動程序只能通過計劃任務,重啓或者編寫另外的程序來啓動了。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章