融界 2024 年 8 月 22 日消息,天眼查知識產權信息顯示,騰訊科技(北京)有限公司申請一項名為“后臺服務的巡查系統、方法、裝置、設備、介質及產品“,公開號 CN202310152486.X ,申請日期為 2023 年 2 月。
專利摘要顯示,本申請公開了一種后臺服務的巡查系統、方法、裝置、設備、介質及產品,屬于計算機技術領域。該系統包括:配置模塊、控制模塊及巡查模塊;配置模塊,用于獲取至少一個巡查任務對應的配置參數;控制模塊,用于獲取巡查任務的巡查指令,向巡查模塊下發巡查指令;巡查模塊,用于接收巡查指令;基于巡查指令,在配置模塊中拉取配置參數;基于配置參數,通過對接接口接入后臺服務系統;接收后臺服務系統的反饋數據包,并校驗反饋數據包。基于上述系統,不僅可以實時對后臺服務系統進行巡查,還可以對獨立外接于后臺服務系統的巡查系統進行配置,而不會影響后臺服務系統,提升了后臺服務系統的穩定性的巡查效率。
本文源自金融界
述:本教程教您如何將.NET Core項目打造成Windows服務,實現無需用戶登錄的后臺運行。通過簡單步驟,您可以快速部署并管理服務,確保應用持續高效運行。
將.NET項目制作成Windows服務可以讓你的應用在后臺持續運行,無需用戶登錄。以下是將.NET Core項目制作成Windows服務的步驟:
首先,確保你的項目是一個.NET Core 項目。你可以通過使用以下命令創建:
dotnet new console -n YourServiceName
使用以下命令安裝必要的NuGet包:
dotnet add package Microsoft.Extensions.Hosting.WindowsServices
修改Program.cs以啟用Windows服務支持:
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args)=>
Host.CreateDefaultBuilder(args)
.UseWindowsService() // 啟用Windows服務支持
.ConfigureServices((hostContext, services)=>
{
services.AddHostedService<Worker>();
});
}
在項目中創建一個繼承BackgroundService的類,例如:
using System;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
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);
}
}
}
在項目目錄執行以下命令:
dotnet publish -c Release -r win10-x64
在發布目錄中找到生成的可執行文件,打開命令提示符(以管理員身份運行):
sc create YourServiceName binPath="C:\Path\To\Your\Service\YourServiceName.exe"
sc start YourServiceName
這是一個簡單的例子,具體的細節可能因項目的復雜性而有所不同。根據實際需要調整代碼和配置。
如果你喜歡我的文章,請給我一個贊!
如果你怕把我弄丟了,請關注我,我會持續分享優質內容!
作者簡介:
【架構師老盧】20年資深軟件架構師,分享編程、軟件設計經驗,教授前沿技術,分享技術資源(每天分享一本電子書)
HostedService 接口在.NET Core中的主要用途是定義應用程序生命周期內運行的后臺服務。這些服務可以執行初始化、長時間運行的任務、定期運行的任務等。通過實例,我們可以演示如何使用 IHostedService 來實現一個簡單的網絡檢測服務,并記錄日志。
首先,我們需要創建一個實現 IHostedService 接口的類。在這個類中,我們將使用 HttpClient 定期檢測網絡是否正常,并通過 ILogger 記錄日志。
using System;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
public class NetworkStatusService : IHostedService, IDisposable
{
private readonly ILogger<NetworkStatusService> _logger;
private readonly HttpClient _httpClient;
private Timer _timer;
public NetworkStatusService(ILogger<NetworkStatusService> logger)
{
_logger=logger ?? throw new ArgumentNullException(nameof(logger));
_httpClient=new HttpClient();
}
public Task StartAsync(CancellationToken cancellationToken)
{
_logger.LogInformation("NetworkStatusService 正在啟動.");
// 使用 Timer 定期執行網絡檢測任務
_timer=new Timer(CheckNetworkStatus, null, TimeSpan.Zero, TimeSpan.FromSeconds(30));
return Task.CompletedTask;
}
private async void CheckNetworkStatus(object state)
{
try
{
// 這里可以替換成實際的網絡檢測邏輯
var response=await _httpClient.GetAsync("https://www.example.com");
if (response.IsSuccessStatusCode)
{
_logger.LogInformation("網絡正常.");
}
else
{
_logger.LogWarning("網絡異常. HTTP 狀態碼: {StatusCode}", (int)response.StatusCode);
}
}
catch (Exception ex)
{
_logger.LogError(ex, "網絡檢測時發生錯誤.");
}
}
public Task StopAsync(CancellationToken cancellationToken)
{
_logger.LogInformation("NetworkStatusService 正在停止.");
// 在這里執行清理邏輯,停止長時間運行的任務
_timer?.Change(Timeout.Infinite, 0);
return Task.CompletedTask;
}
public void Dispose()
{
// 釋放資源
_httpClient.Dispose();
_timer?.Dispose();
}
}
接下來,我們需要在 Startup.cs 文件中注冊這個服務:
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
// 注冊 NetworkStatusService
services.AddHostedService<NetworkStatusService>();
}
}
這個示例中,NetworkStatusService 類會在應用程序啟動時開始執行網絡檢測任務,每隔30秒執行一次。如果網絡正常,將會記錄信息級別的日志,如果網絡異常,則記錄警告級別的日志。這樣,我們就使用 IHostedService 實現了一個簡單的網絡檢測服務,并通過日志記錄器記錄相關信息。