Как управлять службой Windows из другого настольного приложения - PullRequest
2 голосов
/ 06 апреля 2011

предположим, у меня есть служба Windows, которая делает некоторую работу и разработана c #Теперь я хочу разработать еще одно выигрышное приложение на C #, которое будет контролировать и взаимодействовать с моим сервисом win.Предположим, я хочу запустить / остановить мой выигрышный сервис из моих выигрышных приложений или я хочу запустить определенный метод моего выигрышного сервиса из моих выигрышных приложений.как разработать этот тип выигрышных приложений, которые могут взаимодействовать с моим выигрышным сервисом.пожалуйста, обсудите подробно.

спасибо

Ответы [ 5 ]

3 голосов
/ 06 апреля 2011

Вы можете найти следующую статью полезной.

1 голос
/ 06 апреля 2011

Вы должны знать о безопасности.

  • Использование класса ServiceController дает вам некоторые ограниченные возможности для управления службой (запуск / остановка / пауза / возобновление и отправка простых команд),и имеет преимущество быть в безопасности.Обычно только администраторы (и, возможно, опытные пользователи) смогут управлять службой , хотя вы можете настраивать разрешения .

  • Если вам нужно что-то более гибкое, вам нужны некоторыеформа межпроцессного взаимодействия для связи со службой - и WCF является хорошим вариантом в мире .NET, как описано в ответе Мэтта Дэвиса.

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

1 голос
/ 06 апреля 2011

Для связи между службой Windows и приложением Windows я использую Windows Communication Foundation (WCF). В моей службе Windows я размещаю службу WCF, которая «прослушивает» входящие запросы. Мое приложение Windows создает клиент WCF, который связывается со службой WCF, размещенной в службе Windows. С программной точки зрения клиент WCF вызывает методы службы WCF. Вся скрытая сложность скрыта, поэтому, с точки зрения программиста, похоже, что вы просто делаете вызов функции.

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

1 голос
/ 06 апреля 2011

Для управления используйте класс ServiceController, как указано другим.

Чтобы ваш сервис делал что-то особенное, контролируемое вашим приложением, вы должны настроить своеобразное общение. Я бы посоветовал вашему сервису прослушивать определенный порт для http-запроса, который может быть обработан довольно легко, поэтому ваш сервис может контролироваться любым приложением, даже javascript ajax. Если нежелательно, добавьте некоторые меры безопасности, такие как авторизация.

1 голос
/ 06 апреля 2011

Для запуска и остановки см. Класс ServiceController

http://msdn.microsoft.com/en-us/library/system.serviceprocess.servicecontroller.aspx

Вы также можете передать параметры при запуске.

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