这几天在做一个从采集系统中获取数据,然后插入到自己的业务系统中,然后做适当的分析。这个过程中用到了Windows Service的开发。
这里也不说什么很深入的东西,就针对我的这个需求来从头到脚对Windows Service开发的流程做下备忘。
一.开发
1.在VS2008中新建一个Windows Service的项目,我这里命名为WXJDJCJ
2.这里为了干净一点,删除了默认的Service1.cs,然后添加了一个新的windows Service项,命名为DJServiceGetDataFromCJ。
3.接下来往DJServiceGetDataFromCJ的设计器中添加一个Timer控件组件,这里的Timer控件是在组件一栏里面的,不是Windows form中的Timer,这里可以
通过Timer的事件来辨别,也就是点击属性上面的闪电的标志,如果是Click,说明是Windows form的,如果是Elapsed,则是组件的。如果组件当中没有的话,那么就
通过工具箱中的选择项来添加这个组件,命名控件是:System.Timers.Timer
4.双击 Timer 组件在CJTimer_Elapsed的事件中添加自己需要的业务。我需要的业务就是定时从数据库中取数据,然后插到另外一个数据库中。
5.设置Timer的属性,在Enabled处设置为True,这样保证Timer控件能使用,这个很关键,不然没有效果。还有设置Interval为5000,这样相隔五秒就会去做
一次Elapsed中的事。
6.右键服务的“设计视图”,然后选择“添加安装程序”。
7.切换到 ServiceInstaller 设置其属性:ServiceName=DJServiceGetDataFromCJ,这个属性是用来标志在系统服务中的名字。StartType=Automatic,这个就是
自动启动。随系统的启动而启动。
8.切换到ServiceProcessInstaller设置其属性:Account=localSystem
9.编译,可以在bin\debug目录下找到WXJDJCJ.exe这个windows 服务,但是无法通过双击来运行。
二.部署
部署也可以说是安装Windows Service,这里有两个方法:
第一,是用.net Framework下的Installutil.exe程序,我们通过开始->程序->Visual Studio2008->Visual StudioTool中的命令提示符来安装我们的服务。Installutil.exe WXJDJCJ.exe,然后右键我的电脑,管理里面的服务中去启动我们的服务就可以了。停止的命令net stop DJServiceGetDataFromCJ,因为我这里设置的服务名称为DJServiceGetDataFromCJ。删除服务为Installutil.exe /u WXJDJCJ.exe。这里要区分一般的Windows服务的卸载,一般的服务卸载:delete sc WXJDJCJ。
第二,就是通过VS的自带的安装向导,在解决方案下面添加一个项目,选择其他项目中的安装程序,在应用程序文件夹中添加主要输出,然后添加我们的这个WXJDJCJ的项目,光光这样还不够的,因为这样我们只是做到了输出内容到我们的一个目录下面。我们还需要在自定义操作,通过:视图->编辑器->自定义操作然后对每一个步骤都添加刚刚那个主要输出项目就可以了。然后对安装程序进行编译。到其bin\debug目录下找到安装程序,安装完,然后就可以在系统服务中看到了,然后启动这个服务就可以了。
OK。