構(gòu)建一個“即插即用”的XML Windows Service
發(fā)表時間:2023-08-12 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]Windows Services(以前被稱為NT services)是在后臺的Windows server 或workstation上運(yùn)行的程序。在進(jìn)行一些適當(dāng)?shù)脑O(shè)置以后,它們便可以在電腦重啟之后自...
Windows Services(以前被稱為NT services)是在后臺的Windows server 或workstation上運(yùn)行的程序。在進(jìn)行一些適當(dāng)?shù)脑O(shè)置以后,它們便可以在電腦重啟之后自動開啟,而無需進(jìn)行人工干預(yù)。這同樣適用于那些需要定期執(zhí)行的長時間程序。
這里我將介紹一種Timer Windows Service,它使你只需簡單地將一個assembly拖到適當(dāng)?shù)膽?yīng)用程序文件夾中便能夠自動實(shí)現(xiàn)將不同的.NET組件插入其中。更確切地說,Timer Windows Service允許一些完成特定功能的組件定時運(yùn)行。這在你需要頻繁調(diào)用一個Web service以便獲得天氣、股票或新聞等信息或者在你經(jīng)常需要對一個Web頁面進(jìn)行screen-scrape來汲取數(shù)據(jù)時會非常有用。你還可以用Timer Windows Service 來查看FTP站點(diǎn)上的新的普通文件(flat file)或者XML文檔,以及成千上萬個任務(wù)中的一個。這個可下載的程序包括三種執(zhí)行這一任務(wù)的“可插入”組件:
在重復(fù)的基礎(chǔ)上調(diào)用Weather Web service,并將結(jié)果存儲到XML文件中。
在重復(fù)的基礎(chǔ)上調(diào)用Stock Quote Web service,并將結(jié)果存儲到XML文件中。
Screen-scrape(使用常規(guī)表達(dá)式)一個由system-monitoring package生成的Web頁面,并將結(jié)果存到XML文件中。
你可以通過將一個條目添加到XML配置文件中來將自定義組件插入Windows Service,然后將自定義assembly放到Windows Service的程序文件夾中: <ServicesConfiguration>
<!-- key: Assembly name
value:Type (including namespace)-->
<Services>
<add key="EBCWeatherService.dll"
value="EBCServices.EBCWeatherService.
WeatherService" />
<add key="EBCStockQuoteService.dll"
value="EBCServices.EBCStockQuoteService.
StockQuoteService" />
<add key="EBCSiteScopeService.dll"
value="EBCServices.EBCSiteScopeService.
SiteScopeService" />
</Services>
<!-- more configuration data follows -->
</ServicesConfiguration>
Windows Service會對配置文件的改變進(jìn)行監(jiān)視,并且它會自動將新的assembly添加到處理過程中而無需重啟機(jī)器。這種情況是可能的,因?yàn)槊總自定義組件均實(shí)現(xiàn)了一個名為IService的接口,它定義了兩個分別叫做StartTimer()和StopTimer()的方法。當(dāng)配置文件改變以后,Windows Service會自動通過調(diào)用StopTimer()來終止所有組件的行為,并加載定義在配置文件中的適當(dāng)?shù)念愋,然后調(diào)用每個對象的StartTimer()方法。該程序支持通過代理來調(diào)用遠(yuǎn)程程序及Web services、給每個控件提供可變計(jì)時器、自動記錄事務(wù)日志、定制XML配置文件等等功能。
如果你想試用這個Timer Windows Service以及其它相關(guān)組件,你可以下載該MSI文件,運(yùn)行它,在Control Panel中找到Services并啟動名為EBCWindowsService的service。點(diǎn)此下載Timer Windows Service的完整代碼及其相關(guān)組件。當(dāng)然前提是你要安裝了.NET Framework才行。
你還要確保你的service被賦予了能夠?qū)腤eb services 中讀取的數(shù)據(jù)保存到XML文件中的權(quán)限。如果你在使用代理服務(wù)器,你需要將必要的代理信息添加到安裝了Windows Service(在安裝時指定的位置上)的XML配置文件(名為EBCWindowsService.exe.config)中。該文件中包含許多組件,它們用來對每種配置文件的設(shè)置進(jìn)行解釋。
如果你編寫了其他實(shí)現(xiàn)了Iservice的組件且可以插入到Timer Windows Service中,請寫信與我聯(lián)系dwahlin@xmlforasp.net。如果你的組件能夠提供一種其他組件能夠利用的service,我將會把它添加到安裝包中并放到XML for ASP.NET Developers Web site里。
關(guān)于作者:
Dan Wahlin著有XML for ASP.NET Developers(Sams)一書,并創(chuàng)辦了Wahlin Consulting公司,這家公司主要致力于XML和Web Service的咨詢和培訓(xùn)。Dan也管理XML for ASP.NET Developers網(wǎng)站:www.XMLforASP.NET。要了解更多信息,請?jiān)L問www.xmlforasp.net/content.asp?content=dan。