.Net Core Consoleアプリケーションをサービスとして設定しようとしています。 .Net標準を使用して、私は通常Topshelfを使用しますが、これは.Net Coreをサポートしていないようです。
Topshelfはオプションではないため、.Net Core ConsoleアプリケーションをWindowsサービスとして実行するにはどうすればよいですか?
https://github.com/PeterKottas/DotNetCore.WindowsService にアクセスできましたが、これは実稼働環境の実行可能な代替物ですか?
いくつかのオプションがあります。
Windows Compatibility Pack を使用すると、ServiceBase
および関連するAPIが.NET Coreに戻されるため、TopShelfはそのまま使用できます。 (このパックは執筆時点でRCにあり、約1週間後に予定されている安定版リリースが予定されています)
TopShelf は、新しい.NET Coreバージョンの互換性パック/ Windows互換性に基づいて、.NET Coreをサポートするようになりました。
https://github.com/PeterKottas/DotNetCore.WindowsService は多くのユーザーに有効なようですので、試してみることをお勧めします。
(3)のライブラリは、 DasMulli.Win32.ServiceUtils に関連する素晴らしいAPIであり、自己完結型の.NETコアアプリケーションを運用環境に展開できるようにするために私たちが書いたものです。これまでのところ、問題は発生していません。
Non-Sucking Service Manager など、Windowsサービスインフラストラクチャを抽象化し、任意のプログラムを実行する他のサービスホスト。これは、停止コマンドに反応して正常にシャットダウンする良い方法を提供しない場合があることに注意してください。
.netコアでは、サービスとして実行するオプションはありません。ただし、コンソールアプリケーションをコンテナ化する場合、コンテナはどこにでも展開でき、サービスとして実行するのと同じです。 .NET Core 2.1以降では、HostおよびHostBuilderを使用して、コンソールアプリでDI、ロギング、グレースフルシャットダウンなどを管理できます。見て:
当社では Non-Sucking Service Manager を使用していますが、これまでのところ問題はありませんでしたが、ご覧ください。