介紹ServiceSelf項目

ServiceSelf

做過服務進程功能的同學應該接觸過Topshelf這個項目,它在.netframework年代神一搬的存在,我也特別喜歡它。遺憾的是在.netcore時代,這個項目對.netcore程序的支持沒有跟進,最近項目也存檔停止更新了。

我在開源的一些工具裏實現放了自安裝和卸載服務的功能的代碼,本着夠用就好的習慣,並沒有把這個功能獨立爲項目,所以也沒有對這個功能做特別好的設計。現在我創建了一個新的ServiceSelf開源項目,把自安裝和卸載服務的功能在此重新設計,其功能是爲.NET 泛型主機的應用程序提供自安裝爲服務進程的能力,支持windows和linux平臺。

1 nuget

爲了方便使用, nuget包已經發布到 https://www.nuget.org/packages/ServiceSelf/

<PackageReference Include="ServiceSelf" Version="1.0.0" />

2 使用示例

static void Main(string[] args)
{
    // 創建Host之前調用Service.UseServiceSelf(args)
    if (Service.UseServiceSelf(args))
    {
        var builder = WebApplication.CreateBuilder(args);

        // 爲Host配置UseServiceSelf()
        builder.Host.UseServiceSelf();

        var app = builder.Build();
        app.MapGet("/", context => context.Response.WriteAsync("ServiceSelf"));
        app.Run();
    }
}
static void Main(string[] args)
{
    // 創建Host之前調用Service.UseServiceSelf(args)
    if (Service.UseServiceSelf(args))
    {
        var host = Host.CreateDefaultBuilder(args)
            // 爲Host配置UseServiceSelf()
            .UseServiceSelf()
            .ConfigureServices(service =>
            {
                service.AddHostedService<AppHostedService>();
            })
            .Build();

        host.Run();
    }
}

3 服務控制

當yourapp集成ServiceSelf之後,在管理員或root下使用如下命令控制yourapp服務

windows平臺

yourapp.exe start // 安裝並啓動服務
yourapp.exe stop // 停止並刪除服務

linux平臺

sudo ./yourapp start // 安裝並啓動服務
sudo ./yourapp stop // 停止並刪除服務
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章