• 如何创建一个标准的Windows服务


     

    如何创建一个标准的Windows服务

    在很多时候,我们需要一个定时器,当间隔某段时间或者在某一个时刻的时候,触发某个业务的处理,这个时候,我们就可能需要引入Windows服务来做这个事情,如某些数据的同步操作、某些工作任务的创建或者侦听某些端口的工作等等。
    做过Windows Forms开发的人,对开发Windows服务可能会熟悉一些,其实它本身应该算是一个Windows Forms程序。基本上整个Windows服务的程序分为几个部分:安装操作实现、程序启动、服务操作等。
    本例子创建一个Windows服务,服务可以在整点运行,也可以在某段间隔时间运行,通过配置指定相关的参数。
    完整的服务代码请下载文件进行学习:https://files.cnblogs.com/wuhuacong/AutoSyncService.rar 

    1)安装操作类的实现
    首先需要继承System.Configuration.Install.Installer类,并且需要增加ServiceProcessInstaller、ServiceInstaller两个对象来处理,另外您需要重载BeforeUninstall 和 AfterInstall 来实现服务在安装前后的启动和停止操作。
    WinserviceInstaller.png
    Code


    2)程序启动
    程序的启动很简单,基本上是自动创建服务程序的时候就生成了,这里列出来解析是为了说明服务调试的操作。
    程序的启动是在Main函数里面,添加下面的代码即可
    Code

    上面是标准的启动代码,但很多时候,我们需要调试服务,因此会加入一个跳转的开关
    Code
    上面的操作就是为了可以使用普通的调试功能调试Windows服务,其中的"-T"是在开发工具VS的IDE上设置的一个参数, 如下图所示。
    WinserviceDebug.png


    3)服务操作
    首先需要创建一个集成自System.ServiceProcess.ServiceBase的服务类,如SocketService服务类,在SocketService类的构造函数中,您可能需要初始化一些信息,如创建一个定时器,修改服务器类的名称,读取配置参数等信息,以便初始化服务类的参数。
    接着您需要重载服务基类的一些函数:OnStart、OnStop、OnContinue、OnPause、OnShutdown和定时器的触发函数timerReAlarm_Elapsed。完整的类如下

    Code

    4. 使用InstallUtil来安装和卸载服务
    安装和卸载Windows服务,需要使用InstallUtil工具类进行操作,该工具是Dotnet框架附带的一个工具,在%SystemRoot%\Microsoft.NET\Framework\*** 对应的目录中。
    其中App.config中的内容如下
    Code

    安装Windows服务的命令如下:
    Code

    winservice.png
    卸载Windows服务的命令如下:
    Code
    主要研究技术:代码生成工具、Visio二次开发
  • 相关阅读:
    Spring 依赖注入控制反转实现,及编码解析(自制容器)
    Bean的作用域及生命周期
    spring三种实例化bean的方式
    编码剖析Spring管理bean的原理
    Spring基本概念
    hibernate 一对一关联关系 及其懒加载,总结
    hibernate中 inverse的用法(转载)
    SpringMVC_RESTRUL_CRUD
    java 位移运算符
    三目运算中的类型转换
  • 原文地址:https://www.cnblogs.com/barney/p/1500573.html
Copyright © 2020-2023  润新知