概述
在业务系统中,我们为了调度一些自动执行的任务或从队列中消费一些消息,所以基本上都会涉及到后台服务的开发。如果用windows rvice开发,非常不爽的一件事就是:调试相对麻烦,而且你还需要了解 windows rvice 相关的一些开发和安装部署,所以,windows rvice非常的不方便。Topshelf框架,能够让你将 console application 直接封装为 windows rvice,这样你在开发的时候,就可以直接在console 程序上开发,然后构成windows rvice。可以说非常方便。省去了很多不必要的麻烦。
Topshelf是一个开源的跨平台的宿主服务框架,支持Windows和Mono,只需要几行代码就可以构建一个很方便使用的服务宿主。TopShelf 支持多个服务实例,使用的API非常简单,也提高了和 Log4Net的集成,结合Quartz.net,可以快速实现任务调度服务。
如何使用1.下载地址
https://github.com/Topshelf/Topshelf/downloads
2.创建Console宿主程序TopshelfTest,并引用TopShelf.dll
3.示例代码
官网文档给过来的例子非常简单,直接使用即可以跑起来,官网文档地址:http://docs.topshelf-project.com/en/latest/configuration/quickstart.html 。
public class TownCrier{ readonly Timer _timer; public TownCrier() { _timer = new Timer(1000) { AutoRet = true }; _timer.Elapd += (nder, 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.我们用HostFactory.Run来设置一个宿主主机。我们初始化一个新的lambda表达式X,来显示这个宿主主机的全部配置。 { x.Service<TownCrier>(s => //2.告诉Topshelf ,有一个类型为“towncrier服务”,通过定义的lambda 表达式的方式,配置相关的参数。 { s.ConstructUsing(name => new TownCrier()); //3.告诉Topshelf如何创建这个服务的实例,目前的方式是通过new 的方式,但是也可以通过Ioc 容器的方式:getInstance<towncrier>()。 s.WhenStarted(tc => tc.Start()); //4.开始 Topshelf 服务。 s.WhenStopped(tc => tc.Stop()); //5.停止 Topshelf 服务。 }); x.RunAsLocalSystem(); //6.这里使用RunAsLocalSystem() 的方式运行,也可以使用命令行(RunAsPrompt())等方式运行。 x.SetDescription("Sample Topshelf Host"); //7.设置towncrier服务在服务监控中的描述。 x.SetDisplayName("Stuff"); //8.设置towncrier服务在服务监控中的显示名字。 x.SetServiceName("Stuff"); //9.设置towncrier服务在服务监控中的服务名字。 }); }}
本人英文水平有限,代码的备注说明,随便翻译的,凑合看吧。
运行效果程序跑起来后,每隔一秒钟有输出,看到的效果如下:
配置服务没错,整个程序已经开发完了,接下来,只需要简单配置一下,即可以当服务来使用了。安装很方便:
TopshelfTest.exe install #安装Windows服务
TopshelfTest.exe uninstall #卸载Windows服务
TopshelfTest.exe install -instance "xxx" -rvicename "xxx" -description "xxx" -displayname "xxx" #安装不同的实例
安装成功后,接下来,我们就可以看到服务里多了一个服务:
本文发布于:2023-02-28 21:09:00,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/zhishi/a/1677731651101125.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:quartz.dll(quartz.dll没有指定在).doc
本文 PDF 下载地址:quartz.dll(quartz.dll没有指定在).pdf
留言与评论(共有 0 条评论) |