Кучеручная

Orleans Silo Host + TopShelf windows service

blogger, content

TopShelf - хорошо сделанная библиотека для создания windows сервисов.
Чтобы с ней сделать windows service достаточно просто добавить пакет Topshelf из NuGet и написать несколько строчек в Main().
Получается сервис, который можно запускать как консольное приложение, а можно установить в службы, запустив с командой install.

Orleans - интересная реализация системы акторов для .NET. Некоторых вещей в orleans пока сильно не хватает, например возможности управлять запущенной нодой (Silo).
То есть, чтобы обновить код работающего под управлением Orleans приложения, мне придётся сначала грохнуть процесс, потом переписать файлы и запустить процесс заново.

Решил совместить оба варианта, чтобы можно было управлять запущенной нодой как windows-сервисом и останавливать-запускать из командной строки.
Заодно появляется возможность разворачивать сервис с помощью, например, удобного Octopus Deploy.

Черновик на github.

Чтобы не дублировать код, берём из sdk orleans готовый OrleansHost.exe и добавляем как reference в наш проект.
Для того, чтобы остановить запуск сервиса при ошибках запуска Orleans, используем предоставленный TopShelf экземпляр HostControl, и вызываем .Stop(), после того как отработает OrleansHost.Run().

Instant View
slug: orleans-silo-host-topshelf-windows-service

Комментарии закрыты.