码迷,mamicode.com
首页 > Windows程序 > 详细

使用Topshelf 开发windows服务

时间:2015-07-28 20:48:07      阅读:2108      评论:0      收藏:0      [点我收藏+]

标签:

  在业务系统中,我们为了调度一些自动执行的任务或从队列中消费一些消息,所以基本上都会涉及到后台服务的开发。如果用windows service开发,非常不爽的一件事就是:调试相对麻烦,而且你还需要了解 windows service 相关的一些开发和安装部署,所以,windows service非常的不方便。Topshelf框架,能够让你将 console application 直接封装为 windows service,这样你在开发的时候,就可以直接在console 程序上开发,然后构成windows service。可以说非常方便。省去了很多不必要的麻烦。

 

  Topshelf是一个开源的跨平台的宿主服务框架,支持Windows和Mono,只需要几行代码就可以构建一个很方便使用的服务宿主。TopShelf 使用的API非常简单,也提高了和 Log4Net的集成,结合Quartz.net,可以实现任务调度服务。

 

  1.下载地址

    https://github.com/Topshelf/Topshelf/downloads

 

  2.创建Console 程序TopshelfTest,并引用TopShelf.dll

 

  3.代码

   public class TownCrier

  {

      readonly Timer _timer;

      public TownCrier()

      {

          _timer = new Timer(1000) {AutoReset = true};

          _timer.Elapsed += (sender, eventArgs) => Console.WriteLine("It is {0} and all is well", DateTime.Now);

      }

      public void Start() { _timer.Start(); }

      public void Stop() { _timer.Stop(); }

  }

 

  public class Program

  {

      public static void Main()

      {

          HostFactory.Run(x =>                                  //1

          {

              x.Service<TownCrier>(s =>                         //2

              {

                 s.ConstructUsing(name=> new TownCrier());    //3

                 s.WhenStarted(tc => tc.Start());              //4

                 s.WhenStopped(tc => tc.Stop());               //5

              });

              x.RunAsLocalSystem();                            //6

              x.SetDescription("Sample Topshelf Host");       //7

              x.SetDisplayName("Stuff");                       //8

              x.SetServiceName("Stuff");                       //9

          });                                                   

      }

  }

 

  每一行代码的说明,英文水平有限,随便翻译的,凑合看吧:

  1.我们用HostFactory.Run来设置一个宿主主机。我们初始化一个新的lambda表达式X,来显示这个宿主主机的全部配置。

  2.告诉Topshelf ,有一个类型为“towncrier服务”,通过定义的lambda 表达式的方式,配置相关的参数。

  3.告诉Topshelf如何创建这个服务的实例,目前的方式是通过new 的方式,但是也可以通过Ioc 容器的方式:getInstance<towncrier>()。

  4.开始 Topshelf 服务。

  5.停止 Topshelf 服务。

  6.这里使用RunAsLocalSystem() 的方式运行,也可以使用命令行(RunAsPrompt())等方式运行。

  7.设置towncrier服务在服务监控中的描述。

  8.设置towncrier服务在服务监控中的显示名字。

  9.设置towncrier服务在服务监控中的服务名字。

 

  4. 安装和卸载windows服务

              TopshelfTest.exe install        #安装Windows服务

     TopshelfTest.exe uninstall     #卸载Windows服务

使用Topshelf 开发windows服务

标签:

原文地址:http://www.cnblogs.com/zhangweizhong/p/4683789.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!