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。
|