2009-09-01 11 views
1

Я разрабатываю пользовательскую службу Windows с C#, которая будет управлять состоянием для нескольких приложений .NET. Как передать данные (например, токен) в службу через ServiceController?Передача данных в пользовательскую службу Windows

Возможно ли это, или я не полностью понимаю намерение разработчиков за услугами Windows?

ответ

6

JonnyD,

Просто чтобы убедиться, что мы находимся на той же странице: если вы создаете собственную службу, вы собираетесь получить от ServiceBase класса в System.SystemProcess Пространство имен. ServiceController может использоваться для взаимодействия с сервисом Windows (например, тот, который вы создаете), но цель класса ServiceController заключается в том, что он используется в основном для управления control таким же образом, Windows Service Control Manager (SCM) запускает, останавливает, приостанавливает и т. Д. Службу Windows. Возможно, вы могли бы выполнить какую-то форму «деловых взаимодействий» с вашим сервисом через метод ExecuteCommand, но это не главная цель.

Большинство служб Windows, которые предназначены для взаимодействия с другими приложениями, обычно устанавливают слушателей и другие известные конечные точки, которые могут использоваться абонентами для взаимодействия. Эти слушатели могут обрабатываться посредством удаленных операций, веб-сервисов, WCF и т. Д., И могут быть созданы при запуске службы (например, Onstart) и отторжения на верхней части обслуживания (OnStop).

Я не знаю конкретных требований, которые вы пытаетесь выполнить с вашим сервисом, но вы указали, что хотите создать службу управления государственными службами. Это относительно общие сервисы, и они часто создаются в виде синглетов, чтобы гарантировать, что все абоненты получают доступ к одному экземпляру желаемого типа/типа управления состоянием. Следующая ссылка может дать вам несколько идей и рекомендаций относительно того, как реализовать такую ​​услугу, используя удаленный доступ. Если вы больше знакомы с WCF вы можете также использовать его вместо .NET Remoting:

http://www.codeproject.com/KB/IP/Chat_Application.aspx

Вместо ChatServer (как показано в примере), вы бы сервер управления состоянием/тип.

Надеюсь, это поможет!

+0

Спасибо за информацию Шон. – JonnyD

Смежные вопросы