您好,登錄后才能下訂單哦!
這篇文章主要介紹了.NET Core如何使用Worker Service創(chuàng)建服務,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
在幾年前, 做的項目是依賴Windows服務來支撐一些業(yè)務, 目前已經(jīng)把技術(shù)棧全部由.NET Framework 升級至 .NET Core x。
舊得需求大部分是,接入一些第三方得硬件設備, 例如PLC、串口讀卡器、TCP閱讀器、各種硬件模塊。
為了能夠讓任何開發(fā)語言接入無需重新實現(xiàn), 所以使用Windows服務添加支持各類硬件API、對外使用MQTT.NET來進行協(xié)議開發(fā)。
考慮到目前軟件的更新,其中包括安裝文件、SDK都是基于.NET Core, 所以使用Worker Service來創(chuàng)建服務, 該服務支持在Windows與Linux運行。
創(chuàng)建完成后, 整個默認項目包含Program以及一個Worker示例, 配置的模式與ASP.NET Core相同。
public class Program { public static void Main(string[] args) { CreateHostBuilder(args).Build().Run(); } public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .UseWindowsService() .ConfigureServices((hostContext, services) => { services.AddHostedService<Worker>(); }); }
可以看到在配置服務中,AddHostedService添加了一個Worker, 類型約束IHostedService
關于Worker類的實現(xiàn)
public class Worker : BackgroundService { private readonly ILogger<Worker> _logger; public Worker(ILogger<Worker> logger) { _logger = logger; } protected override async Task ExecuteAsync(CancellationToken stoppingToken) { while (!stoppingToken.IsCancellationRequested) { _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now); await Task.Delay(1000, stoppingToken); } } }
ExecuteAsync
在服務啟動時,會執(zhí)行該方法,每秒鐘輸入當前時間
查看父類BackgroundService的實現(xiàn),可以看到有支持重寫的方法。
public virtual void Dispose(); public virtual Task StartAsync(CancellationToken cancellationToken); public virtual Task StopAsync(CancellationToken cancellationToken);
意思就是,我們可以在啟動服務時候觸發(fā)的邏輯以及暫停服務觸發(fā)的邏輯都可以自行編寫。
發(fā)布之后,即可使用sc.exe 來安裝/啟動/暫停/卸載服務等。
安裝服務
sc.exe create MyService binPath=C:\User\WorkerService.exe
查詢服務狀態(tài)
sc.exe query MyService
啟動服務
sc.exe start MyService
暫停服務
sc.exe stop MyService
卸載服務
sc.exe delete MyService
感謝你能夠認真閱讀完這篇文章,希望小編分享的“.NET Core如何使用Worker Service創(chuàng)建服務”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業(yè)資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。