Windows服务程序的编写、调试、部署
文章来自:http://www.cnblogs.com/lindping/ 感谢作者给大家的贡献致谢
L 基本概念
什么是Windows服务?作为.net开发人员,平常写的都是winform程序或者asp.net程序,可能对Windows服务程序接触的不多,下面我摘了个百度文献的解释给大家:
Microsoft Windows 服务(即以前的NT服务)使您能够创建在它们自己的 Windows 会话中可长时间运行的可执行
2. 编写服务运行代码
项目建立完毕以后,VS自动创建了程序启动类program.cs,和一个继承于ServiceBase的Service1类,当然我们可以修改Service1为适当的类名,比如我这里就改为
DemoService,然后可以在方法OnStart里填充我们需要该服务运行的代码,比如我这里就启动一个时钟,让它隔10秒就干点什么事
public partial class DemoService : ServiceBase
{
public DemoService()
{
InitializeComponent();
}
System.Timers.Timer timer;
protected override void OnStart(string[] args)
{
timer = new System.Timers.Timer(10000);
timer.Enabled = true;
timer.Elapsed +=new System.Timers.ElapsedEventHandler(timer_Elapsed);
}
private void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
// dosomethting();
}
protected override void OnStop()
{
timer.Enabled = false;
}
}
3. 服务的安装运行
3.1. 为了使服务能安装运行起来,我们还要添加一个安装类,如Installer1
3.2. 打开Installer1组件的设计界面,我们从工具箱里把两个组件ServiceInstaller和ServiceProcessInstaller拖到界面上,如果你的工具箱没有这两个组件,那么需要右击工具箱选择Choose Items从.net 类库里添加到工具箱。
3.3. ServiceInstaller主要用于定义服务属性,如ServiceName(这个很重要),DisplayName,服务的启动方式StartType(自动启动,手动启动,不启动),不要忘了parent指向Installer1
3.4. ServiceProcessInstaller则用于指定运行服务时使用的用户身份,一般选择LocalSystem,同样需要把Parent设为Installer1
3.5. 编译成功后,打开VS的Comand Prompt,进入项目的bin\debug目录下,运行命令”InstallUtil.exe DemoService.exe”,服务安装成功后,运行命令”net start DemoService”即可启动服务了(这里DemoService便是前面设置的ServiceName了)。
4. 服务的调试
由于windows服务不能像普通应用程序那样在VS里通过debug启动,所以要进入调试状态也麻烦一些,必须以上述方式启动服务后,在VS里通过ToolsàAttach Process,把服务进程加载进来,然后就可以设置断点和普通应用程序一样调试了。
5. 服务的停止和卸载
与3.5类似,服务的停止命令是“net stop DemoService”,卸载的命令是”InstallUtil.exe /u DemoService.exe”,卸载服务前必须先停止服务。当然,服务安装成功后,你也可以到 开始à程序à管理工具à服务 里找到该服务,通过右键菜单进行启动和停止,或者修改其启动类型。
6. 我的服务安装与启动的批处理命令
Windows的安装与启动是不是原始和繁琐了?尤其是在程序还在修改过程中的时候,反复的安装卸载或者启动停止,非常麻烦,所以我写了几个批处理文件。
6.1 install.bat, 先停止服务(如果已存在),然后卸载,安装,启动。当服务第一次安装或者重新安装的时候均可使用此命令。 内容如下:
net stop DemoService
InstallUtil.exe /u DemoService.exe
InstallUtil.exe DemoService.exe
net start DemoService
6.2 unstall.bat,就是卸载指定服务,内容如下:
net stop DemoService
InstallUtil.exe /u DemoService.exe
6.3 start.bat,启动服务, 内容如下:
net start DemoService
6.4 停止服务, 内容如下:
net stop DemoService
6.5 把InstallUtil.exe从 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727目录里拷贝出来,与上述批处理文件,服务可执行文件DemoService.exe放置于同一目录下,现在,一点鼠标就能对服务进行安装卸载启动停止各种操作了。
L 服务的优点与用途
如前面所言,windows服务适合用来运行一些长时间执行的程序,不需要过多的人为干预,没有前台界面,不容易受界面操作影响,相比于普通应用程序稳定性较好。对于一些自动定时执行的程序,或者一些服务性程序,都适合使用windows服务,比如我前面编写的自动任务执行程序,又或者Remoting服务。
相关文章
发表评论
评论列表
- 这篇文章还没有收到评论,赶紧来抢沙发吧~