Как общаться между службами Windows - PullRequest
6 голосов
/ 23 января 2012

У меня есть 2 службы Windows, которые я создал с помощью C #.

Мне бы хотелось, чтобы одна из служб вызывала функцию во второй службе Windows.

Как мне это сделать?

EDIT:

Проблема в том, что у меня должно быть приложение, которое работает (мне не нужно, чтобы оно было скорее Служба тоже хороша), но мне нужно это 2 приложения для связи, эти 2 приложения находятся на тот же сервер,

Ответы [ 3 ]

4 голосов
/ 23 января 2012

Услуги на одной коробке?У вас есть .NET 4?Настоятельно рекомендуем использовать самый быстрый возможный режим, сопоставленные с памятью файлы .

Если они находятся в одном окне, но у вас нет .NET 4, или вы находитесь в однородном MicrosoftСеть Windows, именованные каналы могут работать.Более того, я бы использовал WCF поверх именованного канала .

4 голосов
/ 23 января 2012

Я нашел все остальные ответы правильными, но немного слишком сложными (WCF - большая проблема) и не масштабируемыми (память и именованные каналы будут работать только на одном сервере). Я предлагаю вам DotNetMQ систему обмена сообщениями. Он прост в использовании и развертывании и позволяет общаться даже между процессами, запущенными на разных серверах.

4 голосов
/ 23 января 2012

Конечно.Существует множество механизмов IPC, которые вы можете использовать.Удаленное взаимодействие, прослушиватели TCP / HTTP и т. Д.

Предоставляет ли какая-либо служба функциональность, которая может быть полезна вне другой службы?

См. Эту ветку для получения дополнительных идей: Механизмы IPC в C # - Использование и лучшие практики

РЕДАКТИРОВАТЬ: Как отметил Дэвид Пирас, если WCF доступен для вас, чтобы использовать, а затем подумайте об использовании.Это упростит жизнь.Конфигурационные файлы WCF иногда доставляют боль, но для этого тоже есть хороший инструмент: http://msdn.microsoft.com/en-us/library/ms732009.aspx

...