概述
在業務系統中,我們為了調度一些自動執行的任務或從隊列中消費一些消息,所以基本上都會涉及到后臺服務的開發。如果用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,感謝您對本站的認可!
本文鏈接:http://m.newhan.cn/zhishi/a/1677731651101125.html
版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。
本文word下載地址:quartz.dll(quartz.dll沒有指定在).doc
本文 PDF 下載地址:quartz.dll(quartz.dll沒有指定在).pdf
| 留言與評論(共有 0 條評論) |