Windows Services(以前被稱為NT services)是在后臺的Windows server 或workstation上運行的程序。在進行一些適當的設置以后,它們便可以在電腦重啟之后自動開啟,而無需進行人工干預。這同樣適用于那些需要定期執行的長時間程序。
這里我將介紹一種Timer Windows Service,它使你只需簡單地將一個assembly拖到適當的應用程序文件夾中便能夠自動實現將不同的.NET組件插入其中。更確切地說,Timer Windows Service允許一些完成特定功能的組件定時運行。這在你需要頻繁調用一個Web service以便獲得天氣、股票或新聞等信息或者在你經常需要對一個Web頁面進行screen-scrape來汲取數據時會非常有用。你還可以用Timer Windows Service 來查看FTP站點上的新的普通文件(flat file)或者XML文檔,以及成千上萬個任務中的一個。這個可下載的程序包括三種執行這一任務的“可插入”組件:
在重復的基礎上調用Weather Web service,并將結果存儲到XML文件中。 在重復的基礎上調用Stock Quote Web service,并將結果存儲到XML文件中。 Screen-scrape(使用常規表達式)一個由system-monitoring package生成的Web頁面,并將結果存到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會對配置文件的改變進行監視,并且它會自動將新的assembly添加到處理過程中而無需重啟機器。這種情況是可能的,因為每個自定義組件均實現了一個名為IService的接口,它定義了兩個分別叫做StartTimer()和StopTimer()的方法。當配置文件改變以后,Windows Service會自動通過調用StopTimer()來終止所有組件的行為,并加載定義在配置文件中的適當的類型,然后調用每個對象的StartTimer()方法。該程序支持通過代理來調用遠程程序及Web services、給每個控件提供可變計時器、自動記錄事務日志、定制XML配置文件等等功能。
如果你想試用這個Timer Windows Service以及其它相關組件,你可以下載該MSI文件,運行它,在Control Panel中找到Services并啟動名為EBCWindowsService的service。點此下載Timer Windows Service的完整代碼及其相關組件。當然前提是你要安裝了.NET Framework才行。
你還要確保你的service被賦予了能夠將從Web services 中讀取的數據保存到XML文件中的權限。如果你在使用代理服務器,你需要將必要的代理信息添加到安裝了Windows Service(在安裝時指定的位置上)的XML配置文件(名為EBCWindowsService.exe.config)中。該文件中包含許多組件,它們用來對每種配置文件的設置進行解釋。
如果你編寫了其他實現了Iservice的組件且可以插入到Timer Windows Service中,請寫信與我聯系dwahlin@xmlforasp.net。如果你的組件能夠提供一種其他組件能夠利用的service,我將會把它添加到安裝包中并放到XML for ASP.NET Developers Web site里。
關于作者: Dan Wahlin著有XML for ASP.NET Developers(Sams)一書,并創辦了Wahlin Consulting公司,這家公司主要致力于XML和Web Service的咨詢和培訓。Dan也管理XML for ASP.NET Developers網站:www.XMLforASP.NET。要了解更多信息,請訪問www.xmlforasp.net/content.asp?content=dan。
|