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