web-dev-qa-db-fra.com

Application console .Net core 2.0 en tant que service Windows

J'essaie de configurer une application .Net Core Console en tant que service. En utilisant la norme .Net, j'utilise généralement Topshelf, mais cela ne semble pas prendre en charge .Net Core.

Étant donné que Topshelf n'est pas une option, que puis-je faire pour exécuter l'application .Net Core Console en tant que service Windows?

Je suis venu accéder https://github.com/PeterKottas/DotNetCore.WindowsService , est-ce un substitut viable pour un environnement de production?

8
Matthew P.

Il y a quelques options:

  1. Utilisez le Pack de compatibilité Windows qui ramène ServiceBase et les API associées à .NET Core, afin que TopShelf puisse fonctionner hors de la boîte. (le pack est en RC au moment de la rédaction avec une sortie stable prévue dans environ une semaine)

  2. TopShelf prend désormais en charge .NET Core, basé sur la compatibilité pack de compatibilité/compatibilité Windows pour les nouvelles versions de .NET Core.

  3. https://github.com/PeterKottas/DotNetCore.WindowsService semble fonctionner pour beaucoup d'utilisateurs, donc je suggère de l'essayer.

  4. La bibliothèque de (3) est une belle API autour de DasMulli.Win32.ServiceUtils que j'ai écrite pour que notre société puisse déployer des applications .NET Core autonomes en production. Jusqu'à présent, nous n'avons eu aucun problème.

  5. D'autres hôtes de service qui font abstraction de l'infrastructure de service Windows et exécutent des programmes arbitraires - tels que Non-Sucking Service Manager . Notez que cela peut ne pas donner de bons moyens pour arrêter correctement en réaction à une commande d'arrêt.

9
Martin Ullrich

Dans .net core, vous n'avez pas la possibilité d'exécuter en tant que service. Cependant, si vous conteneurisez votre application console, vous pouvez déployer le conteneur n'importe où et c'est la même chose que l'exécution en tant que service. À partir de .NET Core 2.1, vous pouvez utiliser l'hôte et HostBuilder pour gérer DI, la journalisation, l'arrêt progressif, etc. dans votre application de console. Jettes un coup d'oeil à:

Services d'hébergement dans l'application console .NET Core

2
Peter

Dans notre entreprise, nous utilisons Non-Sucking Service Manager avec lequel je n'ai eu aucun problème jusqu'à présent, vous voudrez peut-être y jeter un œil.

0
kuskmen