Приложение-служба Windows, которое может динамически принимать консольные команды - PullRequest
3 голосов
/ 09 ноября 2010

Я просто хотел получить информацию о проекте, над которым я работаю. По сути, я создаю службу, которая отслеживает и обрабатывает новые файлы в каталоге, указанном в файле конфигурации и других параметрах, через командную строку. Он также должен выводить текст через командную строку, т. Е. Когда пользователь вводит ' -help ', он отображает его использование. Цель также состоит в том, чтобы сделать так, чтобы пользователь мог изменять файл конфигурации на лету, чтобы служба постоянно следила за изменениями в файле конфигурации и вносила соответствующие изменения.

Проблема, с которой я сталкиваюсь, заключается в том, чтобы объединить возможность ввода команд через командную строку, отображать выходные данные, как если бы это было консольное приложение, и обеспечить, чтобы служба могла обрабатывать эти команды во время работы в службе Диспетчер управления. Пока что в моем исследовании решения, на которые я наткнулся, показывают, как создать приложение службы Windows, которое также может работать как консольное приложение, но оно работает как одно или другое, а не как оба. Любые предложения или пожелания приветствуются.

UPDATE:

Спасибо всем за ваши предложения, я сделал чтение на различных механизмах IPC, поддерживаемых Windows. Я свел свои варианты к File Mapping, Named Pipes и RPC. На данный момент я предполагаю, что приложение Windows Service и приложение Helper Console будут находиться на одном компьютере и не должны будут обмениваться данными по сети. Сначала я посмотрю на именованные каналы.

Ответы [ 2 ]

2 голосов
/ 09 ноября 2010

Служба должна предлагать возможность общаться с ней, но это не может быть сделано напрямую, это должно быть сделано с помощью какого-то IPC (межпроцессного взаимодействия), это может быть .net Remoting, WCF, tcp / ф. Вам придется написать вспомогательную программу, которая анализирует командную строку и использует этот IPC для отправки команд службе, которая может действовать соответствующим образом при ее получении.

0 голосов
/ 09 ноября 2010

Я бы написал консольное приложение, которое отправляет запросы в службу и отображает ее ответы.Если вы хотите быть умным, вы можете включить обе части в один и тот же исполняемый файл.Я не могу придумать, как заставить службу писать и читать с консоли, пока она работает как служба.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...