C#Windows服务程序开发的体会

开发 后端
C#Windows服务程序开发的体会主要向你介绍了C#Windows服务程序开发的一些细节的总结。希望对你学习C#Windows服务程序开发有所帮助。

C#Windows服务程序开发是如何的呢?本文将较为详细的介绍如何在.net下开发Windows服务程序,并将简要介绍一些开发中的调试技巧及后期的部署问题.

IDE:VS2005, DotNetFramework Version:2.0.50727

Windows服务程序开发的结果:Windows服务程序通常是一种在OS的后台长期运行的程序,根据需要你可以设置为随服务器启动而同时启动等等,在传统的C/S结构的程序开发中,Windows服务更是以Server端普遍存在.在.NET应用程序中,无论是Winform下的应用还是ASP.NET,Windows服务也都非常重要,比如我们可以把一个.Net Remoting服务端封装在一个windows服务中,来达到稳定提供服务的目的.

切入正题,首先我们来了解如何在VS下开发基于.Net的windows服务.

实际上,在VS下建立一个windows服务程序非常的简单,微软帮我们做了80%的工作,我们所需要做的只是处理那20%的业务工作.

Windows服务程序开发首先,我们建立一个Windows Service程序,VS提供了现成的项目模版,选择Files->New->Project->Windows->Windows Service

Windows服务程序开发模板 

之后,你将获得两个文件Service组件和Program.cs.我们要建立服务的话,首先需要添加专用的安装组件,这步同样很简单,选择服务组件,并切换到设计模式,右键->Add Installer,生成了了安装文件,切换到设计模式,这里你将看到两个组件:ServiceInstaller和ProcessInstaller,这里没有太多需要说明的,大部分是对服务的名称,描述等信息的设置,只有2个地方需要注意下.一个是StartType,有三种选择自动,手动,禁用.如果想要自动启动,那么遍选择Automatic即可.另一个需要注意的属性是Account,选择用户,一般情况下,我们选择Local System即可.

到现在,如果我们想要建立一个服务,实际上已经结束了,只需要在服务组件的OnStart和OnStop等函数中加上个人的业务处理.在Program.cs文件中,是如下代码:

  1. static void Main()  
  2.  
  3. {  
  4.  
  5. ServiceBase[] ServicesToRun;  
  6.  
  7. // More than one user Service may run within the same process. To add  
  8.  
  9. // another service to this process, change the following line to  
  10.  
  11. // create a second service object. For example,  
  12.  
  13. //  
  14.  
  15. //   ServicesToRun = new ServiceBase[] {new Service1(), new MySecondUserService()};  
  16.  
  17. //  
  18.  
  19. ServicesToRun = new ServiceBase[]   
  20.  
  21. new Service1() };  
  22.  
  23. ServiceBase.Run(ServicesToRun);  
  24.  

这段代码用于启动服务.

接下来的工作就是安装服务.你可以通过制作安装包实现,或者直接通过命令行来执行安装.

当你编译完项目后,你可以在bin/debug目录下看到扩展名为.exe的可执行文件,这就是服务程序,但直接双击是无法运行的,你需要通过特定的工具来安装它,微软提供给我们的工具就是installutil.exe.这个程序位于%SystemRoot%\Microsoft.NET\Framework\/%Version%\,version指的是.net版本号.

安装一个服务程序,我们是在命令行内键入:installutil.exe  服务程序路径.如果是要删除某个服务则是installutil.exe /u 服务程序路径.

执行了安装操作后,我们去控制面版->管理工具->服务中就可以看到我们的服务程序了.

Windows服务程序开发之管理工具 

Windows服务程序开发最后,谈谈调试中的技巧.

编写这种Windows服务程序,调试起来非常的麻烦,而且每次有所变化后,还得频繁的去执行installutil和installutil /u命令,实际上,我们可以通过编写一些BuildEvents来大大简化这其中的烦琐工作.这里,我们在BuildEvents编写如下事件:

  1. net stop YourServiceName  
  2.  
  3. copy /y "$(TargetDir)" "$(ProjectDir)bin" 
  4.  
  5. "%SystemRoot%\Microsoft.NET\Framework  
  6. \v2.0.50727\InstallUtil.exe" /u $(ProjectDir)bin\$(TargetFileName)  
  7.  
  8. "%SystemRoot%\Microsoft.NET\Framework\  
  9. v2.0.50727\InstallUtil.exe"  $(ProjectDir)bin\$(TargetFileName)  
  10.  
  11. net start YourServiceName 

Windows服务程序开发简单解释下:

停止当前服务->把debug目录下所有东西copy到bin目录下->执行反安装操作->执行安装操作->启动服务.

最后把该事件设置为OnSuccessfulBuild即可.

由于是服务程序,如果想要直接debug比较的麻烦,可以通过附加进程来调试大多数代码,但是如果想要调试OnStart和OnStop方法.则只能通过其他的项目来调试.具体见这篇文章的介绍.

实际上,我们可以直接在OnStart()方法中通过EventLog.WriteEntry("Hi,I'm wiseman");来向事件查看器中写入一些你感兴趣的信息,很大程度上可以解决debug的问题.

以上大致的介绍了下如何在.net下编写windows服务程序,以及一些相关的技巧.该文也是阅读我之后的某些文章需要掌握的知识,这个月我会尽量抽些时间多写几篇有关Windows服务和企业服务以及Remoting技术综合起来的应用的文章。

C#Windows服务程序开发的相关介绍内容就到这里,希望对你学习和了解C#Windows服务程序开发有所帮助。

【编辑推荐】

  1. C#WINDOWS服务交互的实现
  2. C#Windows服务程序编写浅析
  3. C#Windows服务程序开发软件功能需求
  4. C#Windows服务程序开发之Windows服务浅析
  5. C#Windows服务程序安装浅析
责任编辑:仲衡 来源: 百度空间
相关推荐

2009-08-14 14:45:03

C#Windows服务

2009-08-14 14:25:09

Windows服务程序

2009-08-14 14:17:16

C#Windows服务

2009-08-14 16:24:00

Windows服务程序

2009-08-14 15:19:38

Windows服务程序Windows服务

2009-08-14 15:06:08

Windows服务程序

2009-08-14 15:47:18

C#Windows服务

2009-08-14 16:48:39

C#Windows服务

2009-08-14 10:50:09

Windows服务介绍

2009-08-14 13:41:13

C#Windows服务

2009-08-14 14:53:55

WINDOWS服务交互

2009-08-14 17:36:20

C#Windows应用

2009-08-14 17:27:30

C#Windows应用

2009-08-14 17:43:20

C#Windows应用

2009-08-14 17:55:52

C#Windows应用

2009-08-14 16:13:25

C#windows服务

2009-08-14 18:00:22

C#Windows应用

2009-08-14 11:15:19

文件监视C#Windows服务

2009-08-14 10:42:16

Timer控件的使用C#windows服务

2009-08-14 17:51:32

C#Windows应用
点赞
收藏

51CTO技术栈公众号