Как службы Windows могут взаимодействовать друг с другом? - PullRequest
2 голосов
/ 01 сентября 2009

Допустим, у меня запущены две службы Windows. Одним из сервисов является «Опрос» - он опрашивает базу данных на предмет заданий на печать. Как только новое задание на печать найдено, другой сервис - «Печать» - должен отправить задание на принтер.

(Почему я не могу сделать это с одним сервисом, это отдельная проблема, скажем так, есть причина для этого).

Идея простого решения, которое у меня есть, заключается в том, чтобы служба «Опрос» создавала и сохраняла задание печати в каком-либо файле, а служба «Печать» отслеживала это местоположение, считывала файл и выполняла задание печати.

Есть ли лучший способ сделать это - можно ли каким-то образом напрямую вызывать функцию «Печать» из службы «Опрос»?

Средство разработки - .NET 3.5 / C #, если это имеет значение.

Ответы [ 2 ]

4 голосов
/ 01 сентября 2009

Это стандартная проблема IPC, и существует столько же решений, сколько существует способов скинуть кошку: сокеты, канал, файлы, отображенная память и т. Д.

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

3 голосов
/ 01 сентября 2009

Да, вы можете использовать WCF, чтобы службы могли общаться друг с другом. Привязка NetNamedPipes - хороший выбор для локальной связи "на одном устройстве".

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