Тип приложения-сервера, хостящегося на Windows Server
Здравствуйте!
Меня интересует, каков правильный подход к разработке серверного ПО, размещаемого на Windows Server. Большинство серверов, которые работают и разрабатываются у нас в компании, представляют собой консольные приложения. Сервера обрабатывают входящие подключения (socket, wcf), работа с БД. Практически во всех идет некоторый информационный вывод в консоли, так что всегда можно последить за здоровьем того или иного инстанса.
Но мне все-таки кажется такой подход неверным. Десятки значков в таскбаре, затрудненный поиск нужного инстанса (особенно, если что-то упало), невозможность централизованного мониторинга и управления, проблематичный перезапуск после падения. В общем, недостатков множество.
Потому вопрос такой. Есть ли какой-то стандартный подход к разработке серверного ПО для WinServer? Как это должно выглядеть? Как мониториться? Как запускаться?
В голову идут Windows Services, ПО для централизованного управления, подключающееся к каждому серверу… Может есть уже готовые решения?
Настройте нормальную готовую систему мониторинга — забикс, нагиос, исинга, родной от ms — configmgr наконец и будет Вам счастье.
Ну или найдите любой другой мониторинг, благо их сейчас не пишет только ленивый.
Ну а вообще — я сейчас активно изучаю C#, в том числе пишу под web, и есть желание чуть попозже как раз писать свою систему мониторинга под продукцию MS по некоторым причинам.
Ну во-первых есть несколько вариантов «хостинга» приложения это WAS (http://en.wikipedia.org/wiki/Windows_Activation_Services), Windows Service, Web Application(IIS) и сверху IIS есть АppFabric.
Это для запуска. Что касается мониторинга то Performance Counters (http://msdn.microsoft.com/ru-RU/library/windows/desktop/aa373083%28v=vs.85%29.aspx) и служба мониторинга по совету foxmuldercp.
Управление можете написать сами. Через веб интерфейс или через консоль (PowerShell + .NET Remoting в помощь)
WCF на IIS и сервисы, это хорошо. А как ими управлять или их мониторить? Сервера довольно нестабильные и хорошо бы сразу иметь представление кто живой, а кто нет. Некоторые сервера должны иметь служебный интерфейс (некоторые операции могут проводиться вручную)
Еще хорошо бы повесить на централизованный контроль некоторые счетчики типа количество переданных данных, количество подключений, ошибок. Возможно, обновление сервиса на новую версию в заданное время.