Windows 服务开发

2年前记得去某公司面试的时候,被问到会Windows服务的开发吗?windows 服务是啥?当时是懵逼了,那时我们的任务都是写的控制台程序再部署到服务器的定时程序上就完成了需求,像用户的提现自动审核以及从第三方(支付宝、微信、银联)下载对账单用来对账,都是这么处理的。但是这二者有什么区别呢?为什么人们用windows服务而不用定时程序呢?今天咱们来了解一下,顺便学习一下windows服务的开发。没错这一拖就拖了2年来解决这个问题。

 
我们今天要做的一个需求就是开发一个windows服务部署到自己的本机,查询GC支付失败的订单并将支付错误信息记录到文本日志中。
 
首先我们新建一个windows 服务项目
发现有一个配置文件,一个Program类,以及一个Service类,Service1 类看着像是一个控件。
先看Program类的代码:
    static class Program
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        static void Main()
        {
            ServiceBase[] ServicesToRun;
            ServicesToRun = new ServiceBase[]
            {
                new Service1()
            };
            ServiceBase.Run(ServicesToRun);
        }
    }

 

看有背景色的代码,Program类调用了Service1类,看来这是服务的主入口
并且将Service1加入到 ServiceBase数组里,最后用自身的Run方法执行这些服务。
 
再看看 Service1里的代码是什么样儿
 public partial class Service1 : ServiceBase
    {
        public Service1()
        {
            InitializeComponent();
        }

        protected override void OnStart(string[] args)
        {
            Task.Factory.StartNew(new Action(ServiceDo.Start));
        }

        protected override void OnStop()
        {
        }
    }

 

将你要执行的方法丢进这个任务工厂就可以了。
这里是华丽丽的服务代码(略略...)
 
完后需要添加两个空间,这俩个空间的作用呢,一个是用来安装服务时候用;另外一个用来设置服务名称以及描述的,如下:
就会出现这些:
右键属性可以设置服务名以及描述
效果如下
下面来讲如何安装:
1. 打开命令窗口
2. 先看下自己的服务项目是2.0的还是4.0的,如果是2.0的
3. 2.0 的在命令窗内输入:cd C:\Windows\Microsoft.NET\Framework\v2.0.50727
4. 4.0 的在命令窗内输入:cd C:\Windows\Microsoft.NET\Framework\v4.0.30319 
5.再输入:InstallUtil.exe E:\TestApp\Winform\WinServiceTest\WinServiceTest\bin\Debug\WinServiceTest.exe
背景色部分为你的服务安装路劲以及安装文件,完后就可以运行了。
posted @ 2019-04-30 21:40  NCat  阅读(151)  评论(0)    收藏  举报