Каркас для размещения сервисов WCF в Windows Service - PullRequest
1 голос
/ 10 ноября 2009

Кто-нибудь знает структуру, которая позволила бы мне легко размещать и настраивать службы WCF в службе Windows?

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

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

Требования, вытекающие из вышесказанного, заключаются в том, что нам нужна возможность настроить, какие службы размещены в Службе Windows, запускать и останавливать их по мере необходимости и обеспечивать простое развертывание.

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

Ответы [ 3 ]

2 голосов
/ 10 ноября 2009

Ну, хостинг службы WCF в службе Windows NT на самом деле не так уж и сложен - поэтому я не думаю, что для этого есть большая «структура» ...

В основном вам нужно

  • объявляет переменную ServiceHost для каждой службы WCF, которую вы хотите разместить
  • в методе OnStart() переопределения службы NT вы создаете и открываете узлы службы
  • в методе OnStop() службы NT вы снова закрываете узлы службы

Это почти все, что есть - так какой аспект вы хотели делегировать структуре в этом сценарии? Какие еще аспекты или проблемы у вас есть, которые нужно решить?

Если вы хотите влиять на отдельные экземпляры службы внутри одной службы NT, вам нужно проверить переопределение метода OnCustomCommand в классе службы NT.

Снаружи вы можете создать ServiceController и затем вызвать ExecuteCommand на этом контроллере. К сожалению, вы можете отправить только один int в качестве параметра.

Так что, я думаю, в этом случае вам придется определить, например, «сервисная константа» для каждой услуги, например const int MyService1 = 10; const int MyServive2 = 20; и затем используйте эту базовую константу службы, чтобы запустить службу WCF, эту базовую константу + 1, чтобы остановить ее, или что-то в этом духе.

0 голосов
/ 03 августа 2010

Похоже, это приложение соответствует тому, что вы ищете. Он может динамически размещать службы wcf и имеет пользовательский интерфейс для управления им.

альтернативный текст http://www.wcfstorm.com/wcf/Data/Sites/1/WcfStormHost/wcfstormHost-Main.png Приложение: http://www.wcfstorm.com/wcf/getting-started-with-wcfstormhost.aspx

0 голосов
/ 10 ноября 2009

Это сводится к личному мнению. Я не вижу проблем с управлением сотнями разных сервисов через стандартную оснастку MMC. Это также позволяет сетевому администратору управлять ими централизованно для всего домена с помощью WMI, PowerShell, коммерческих инструментов и т. Д. Если вы используете собственную систему управления, вы отказываетесь от такого простого централизованного управления.

Что касается развертывания, просто создайте одно настраиваемое действие, чтобы установить все службы за один раз.

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