Как перенести приложение .NET Windows Service в Linux, используя моно? - PullRequest
27 голосов
/ 12 марта 2009

Каков наилучший подход для миграции .NET Windows Service на Linux с использованием mono? Я пытался избежать выполнения приложения как запланированная команда.

Возможно ли получить сервис / системный демон (в linux), похожий на поведение?

Ответы [ 3 ]

33 голосов
/ 12 марта 2009

В Linux deamons - это простые фоновые процессы. Никаких специальных методов управления (например, start(), stop()) не используется, как в Windows. Создайте свой сервис как простое (консольное) приложение и запускайте его в фоновом режиме. Используйте такой инструмент, как daemonize, чтобы запустить программу в качестве демона Unix, и не забудьте указать mono в качестве программы, которая будет активирована.

Как отмечали другие, mono-service - это хост для запуска служб, созданных с помощью сборки ServiceProcess. Службы, созданные для Windows, могут использовать этот метод для запуска без изменений в Linux. Вы можете управлять сервисом, отправляя сигналы процессу (см. Справочную страницу).

3 голосов
/ 12 марта 2009

Можете ли вы использовать моно-сервис, чтобы обернуть его?

См. этот вопрос .

2 голосов
/ 12 марта 2009

То, как я делал это в прошлом, - это скомпилировать приложение .Net как консольное приложение, а затем на сервере Linux создать сценарий запуска в каталоге initscripts.

Очевидно, что в Linux нет служб Windows, и демоны, которые запускаются из каталогов rc.d при запуске, являются его эквивалентами. Все, что делает большинство скриптов rc.d, - это запускает различные приложения в фоновом потоке, поэтому в этом нет ничего сложного. Единственная дополнительная работа заключается в том, что вам нужно написать сценарий оболочки Linux для запуска и, если вы хотите, остановить службу.

...