Windows Service

我们将研究如何创建一个作为Windows服务的应用程序。内容包含什么是Windows服务,如何创建、安装和调试它们。会用到System.ServiceProcess.ServiceBase命名空间的类。
什么是Windows服务?

   Windows服务应用程序是一种需要长期运行的应用程序,它对于服务器环境特别适合。它没有用户界面,并且也不会产生任何可视输出。任何用户消息都会被写进Windows事件日志。计算机启动时,服务会自动开始运行。它们不要用户一定登录才运行,它们能在包括这个系统内的任何用户环境下运行。通过服务控制管理器,Windows服务是可控的,可以终止、暂停及当需要时启动。

   Windows 服务,以前的NT服务,都是被作为Windows NT操作系统的一部分引进来的。它们在Windows 9x及Windows Me下没有。你需要使用NT级别的操作系统来运行Windows服务,诸如:Windows NT、Windows 2000 Professional或Windows 2000 Server。举例而言,以Windows服务形式的产品有:Microsoft Exchange、SQL Server,还有别的如设置计算机时钟的Windows Time服务。

 

Windows服务的构成

  在你类后面所包含的代码里,你会注意到你所创建的Windows服务扩充了System.ServiceProcess.Service类。所有以.NET方式建立的Windows服务必须扩充这个类。它会要求你的服务重载下面的方法,Visual Studio默认时包括了这些方法。

• Dispose – 清除任何受控和不受控资源(managed and unmanaged resources)
• OnStart – 控制服务启动
• OnStop – 控制服务停止


创建windows service工程

1 VS2010新建工程

2 选择 Windwos Service 模板


创建Windows service安装程序ProjectInstaller

1 将上面创建的windows service工程打开

2 选中Service1.cs双击进入到它的Design模式

3 在Design视图中右键,选择属性

4 在属性框中的左下角看到 Add Installer选项,单击该选项,添加ProjectInstaller

 

5 自动添加了一个新类 ProjectInstaller 和两个安装组件 ServiceProcessInstaller 和 ServiceInstaller。

6 若要确定如何启动服务,请单击 ServiceInstaller 组件并将 StartType 属性设置为适当的值。

         Manual      服务安装后,必须手动启动。

         Automatic    每次计算机重新启动时,服务都会自动启动。

         Disabled     服务无法启动。

7 将serviceProcessInstaller类的Account属性改为 LocalSystem

     这样,不论是以哪个用户登录的系统,服务总会启动。

8 编译生成服务程序
  通过从生成菜单中选择Build生成来生成项目。

 

安装windows service

1 只要是安装过VS则能在.NET的如下类似安装目录中找到安装windows service的程序InstallUtil.exe

C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe

2 将InstallUtil.exe拷贝到你的windows service编译结果所在目录

3 用Administrator身份打开command提示框,执行 InstallUtil.exe WindowsService1.exe即可安装成功

4 命令行中运行services.msc即可看到刚安装的服务了

5 右击该服务就可以选择启动该服务了;或者是自启动服务的话,就可以重新启动电脑,该服务自己就会启动。


卸载windows service
InstallUtil.exe /u WindowsService1.exe


调试Windows服务
  从另外的角度度看,调试Windows服务绝不同于一个普通的应用程序。调试Windows服务要求的步骤更多。服务不能象你对普通应用程序做的那样,只要简单地在开发环境下执行就可以调试了。服务必须首先被安装和启动,这一点在前面部分我们已经做到了。为了便于跟踪调试代码,一旦服务被启动,你就要用Visual Studio把运行的进程附加进来(attach)。记住,对你的Windows服务做的任何修改都要对这个服务进行卸载和重安装。


附加正在运行的Windows服务
  为了调试程序,有些附加Windows服务的操作说明。这些操作假定你已经安装了这个Windows服务并且它正在运行。

1. 用Visual Studio装载这个项目
2. 点击“调试”菜单
3. 点击“进程”菜单
4. 确保 显示系统进程 被选
5. 在 可用进程 列表中,把进程定位于你的可执行文件名称上点击选中它
6. 点击 附加 按钮
7. 点击 确定
8. 点击 关闭
9. 在代码里设置一个断点,然后等它执行


 


注意:  
Windows Service类Service1中ServiceName属性的值必须始终与安装程序中ServiceInstaller的ServiceName一样。如果更改此属性,还必须更新安装程序类中的 ServiceName 属性。)
 

ServiceInstaller的ServiceName应与从 ServiceBase 派生的类的ServiceBase.ServiceName相同,这一点至关重要。通常,服务的 ServiceBase.ServiceName 属性的值在该服务应用程序可执行文件中的 Main() 函数中设置。服务控制管理器使用 ServiceInstaller.ServiceName 属性在此可执行文件中定位服务

详细请参考:

http://technet.microsoft.com/zh-cn/magazine/system.serviceprocess.serviceinstaller(VS.85).aspx

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值