C#Windows服務(wù)程序開(kāi)發(fā)之Windows服務(wù)淺析
C#Windows服務(wù)程序開(kāi)發(fā)之前要明白什么是Windows服務(wù),Windows Service,也稱Windows服務(wù),是32位Windows操作系統(tǒng)中一種長(zhǎng)期運(yùn)行的后臺(tái)程序。它們長(zhǎng)期后臺(tái)運(yùn)行,沒(méi)有用戶界面,默默無(wú)聞,但它們卻是支持Windows正常運(yùn)行的幕后英雄,卻永無(wú)出頭之日。
Windows服務(wù)程序開(kāi)發(fā)為其他系統(tǒng)模塊提供了非常重要的服務(wù),而且各個(gè)Windows服務(wù)分工明確,比如IISAdmin服務(wù)提供WEB內(nèi)容的發(fā)布功能,若IISAdmin服務(wù)不啟動(dòng),則靜態(tài)HTML頁(yè)面、ASP、ASP.NET或者WebService等等統(tǒng)統(tǒng)不行;有個(gè)名為“Print Spooler”的服務(wù)用于提供打印支持,若該服務(wù)不啟動(dòng),則任何軟件都不能進(jìn)行打印,比如Word,記事本或者報(bào)表軟件等等。
Windows服務(wù)程序開(kāi)發(fā)需要明白的事情:Windows啟動(dòng)后在沒(méi)有用戶登錄時(shí)就會(huì)啟動(dòng)Windows服務(wù)。Windows NT和Windows2000,以及更新的版本操作系統(tǒng)能運(yùn)行Windows服務(wù),但Windows98及其前期版本是不能運(yùn)行服務(wù)的。
我們打開(kāi)Windows資源管理器,在左邊的樹(shù)狀列表中選中“桌面-控制面板-管理工具”。
在右邊的列表中打開(kāi)“服務(wù)”項(xiàng)目即可打開(kāi)Windows服務(wù)管理器。
在這些服務(wù)中,有我們最熟悉的IIS Admin和World Wide Web Publishing服務(wù)了。我們雙擊一個(gè)服務(wù)項(xiàng)目即可打開(kāi)服務(wù)屬性對(duì)話框。
Windows服務(wù)程序開(kāi)發(fā)需要明白的事情:Windows服務(wù)有一個(gè)服務(wù)名稱屬性,該屬性是服務(wù)的惟一的不可重復(fù)的名稱,我們可以在命令行中使用命令“net start 服務(wù)名稱”來(lái)啟動(dòng)服務(wù),使用“net stop 服務(wù)名稱”來(lái)停止服務(wù)。
Windows服務(wù)程序開(kāi)發(fā)需要明白的事情:Windows服務(wù)的啟動(dòng)類型有自動(dòng),手動(dòng)和已禁用。當(dāng)啟動(dòng)類型為自動(dòng)時(shí),Windows啟動(dòng)后不等用戶登錄就自動(dòng)啟動(dòng)服務(wù),當(dāng)啟動(dòng)類型為手動(dòng)時(shí),需要某個(gè)操作員登錄后點(diǎn)擊這里的“啟動(dòng)”按鈕來(lái)啟動(dòng)服務(wù),而當(dāng)啟動(dòng)類型為已禁用時(shí),Windows服務(wù)不能啟動(dòng)。
該頁(yè)面中的“啟動(dòng)”按鈕用于啟動(dòng)尚未啟動(dòng)的Windows服務(wù),運(yùn)行提供服務(wù)的進(jìn)程;“停止”按鈕用于停止已經(jīng)啟動(dòng)的服務(wù),殺死服務(wù)進(jìn)程;而“暫?!卑粹o用于通知服務(wù)進(jìn)程暫時(shí)停止提供服務(wù),但服務(wù)進(jìn)程依然存在;而“恢復(fù)”按鈕用于通知處于暫停模式的服務(wù)進(jìn)程重新提供服務(wù)。
我們可以查看服務(wù)屬性對(duì)話框的“登錄”頁(yè)面。
可以指定服務(wù)使用本地系統(tǒng)帳戶登錄,也可另外指定其他的用戶,這里有一個(gè)允許服務(wù)和桌面交互的選項(xiàng),若選中此選項(xiàng),則Windows服務(wù)可以顯示圖形化用戶界面,比如顯示自己的窗體,顯示消息框等等。不過(guò)不建議使用該選項(xiàng),而且Windows服務(wù)運(yùn)行時(shí)不要顯示圖形化用戶界面。
我們切換到“依存關(guān)系”頁(yè)面,可以看到本服務(wù)和其他服務(wù)的依存關(guān)系。
各個(gè)Windows服務(wù)之間可能存在依賴關(guān)系,比如IISADMIN服務(wù)就依賴另外一個(gè)名為RPC的Windows服務(wù),當(dāng)啟動(dòng)一個(gè)Windows服務(wù)時(shí),系統(tǒng)會(huì)啟動(dòng)該服務(wù)所依賴的其他Windows服務(wù)。例如我們?cè)O(shè)置IISADMIN服務(wù)為自動(dòng)啟動(dòng),而RPC服務(wù)為手動(dòng)啟動(dòng),則Windows啟動(dòng)后會(huì)試圖自動(dòng)啟動(dòng)IISADMIN服務(wù),結(jié)果會(huì)首先啟動(dòng)RPC服務(wù),即使RPC服務(wù)不是自動(dòng)啟動(dòng)。若RPC服務(wù)為禁止,無(wú)論如何也不能啟動(dòng),則IISADMIN服務(wù)就無(wú)法自動(dòng)啟動(dòng)了。
C#Windows服務(wù)程序開(kāi)發(fā)之Windows服務(wù)的基本內(nèi)容就向你介紹到這里,希望對(duì)你了解和學(xué)習(xí)C#Windows服務(wù)程序開(kāi)發(fā)之Windows服務(wù)有所幫助。
【編輯推薦】