您好,登錄后才能下訂單哦!
這篇文章主要介紹了.NET Core如何使用Worker Service創建服務,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
在幾年前, 做的項目是依賴Windows服務來支撐一些業務, 目前已經把技術棧全部由.NET Framework 升級至 .NET Core x。
舊得需求大部分是,接入一些第三方得硬件設備, 例如PLC、串口讀卡器、TCP閱讀器、各種硬件模塊。
為了能夠讓任何開發語言接入無需重新實現, 所以使用Windows服務添加支持各類硬件API、對外使用MQTT.NET來進行協議開發。
考慮到目前軟件的更新,其中包括安裝文件、SDK都是基于.NET Core, 所以使用Worker Service來創建服務, 該服務支持在Windows與Linux運行。
創建完成后, 整個默認項目包含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類的實現
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
在服務啟動時,會執行該方法,每秒鐘輸入當前時間
查看父類BackgroundService的實現,可以看到有支持重寫的方法。
public virtual void Dispose(); public virtual Task StartAsync(CancellationToken cancellationToken); public virtual Task StopAsync(CancellationToken cancellationToken);
意思就是,我們可以在啟動服務時候觸發的邏輯以及暫停服務觸發的邏輯都可以自行編寫。
發布之后,即可使用sc.exe 來安裝/啟動/暫停/卸載服務等。
安裝服務
sc.exe create MyService binPath=C:\User\WorkerService.exe
查詢服務狀態
sc.exe query MyService
啟動服務
sc.exe start MyService
暫停服務
sc.exe stop MyService
卸載服務
sc.exe delete MyService
感謝你能夠認真閱讀完這篇文章,希望小編分享的“.NET Core如何使用Worker Service創建服務”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。