Как разработать Службу WCF для автоматического управления другими соответствующими службами WCF, размещенными как Служба Windows? - PullRequest
2 голосов
/ 01 февраля 2010

Пожалуйста, помогите мне в разработке решения, которое требуется для моего текущего проекта. Я разработал некоторые службы WCF, размещенные как службы Windows, и я до сих пор работал нормально. Теперь меня просят разработать основной тип службы WCF, который должен быть достаточно интеллектуальным, чтобы управлять всеми другими службами WCF на предмет возможных повреждений / ошибок и исправлять их и перезапускать. Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 25 февраля 2012

Поскольку мы создали собственный хост и у нас ушли годы на то, чтобы сделать его настоящим сервером приложений, я поделюсь некоторыми проблемами, которые у нас были.Создание собственного хоста, который управляет сервисами WCF как сервисом NT, является очень сложной задачей, если вы хотите управлять всеми деталями и относиться к сервису NT как к реальному хосту сервиса.Проблемы начинаются с управления несколькими доменами приложений (по одному для каждой службы), управления состояниями служб, временем запуска, развертываниями из IDE и, что хуже всего, активацией.Рассматривали ли вы, как это реализовать?Если у вас нет этой функции, это означает, что все ваши сервисы будут активны и постоянно находятся в памяти.IIS и Appfabric делают это очень хорошо и, поверьте мне, это нелегко реализовать.Другой трудной задачей был пользовательский интерфейс для управления этим хостом и внешний интерфейс, который может управлять несколькими хостами (службы NT работают на разных компьютерах).Вам нужна реализация прокси обнаружения?И, наконец, как насчет того, хотите ли вы одинаково управлять службами, работающими на вашем пользовательском хосте, IIS и фабрике приложений?Подумайте, прежде чем делать такую ​​реализацию, потому что область действия может зашифровать вас, когда вы это делаете.

0 голосов
/ 01 февраля 2010

Я делаю что-то подобное здесь.

  • Создайте коллекцию Dictionary<key, ApplicationDomain> в своей основной программе
    • Key: что-то уникальное для каждого домена приложения, например Guid или System.Type.
  • Этот класс ApplicationDomain предоставляет внутреннее свойство для доступа к вашему прокси-серверу AppDomain (который наследует класс MarshallByRef)
  • Загрузите хост WCF в основную программу, чтобы получить доступ к этой коллекции
  • Каждый раз, когда ваша служба получает доступ, вам просто нужно взять этот ключ, получить доступ к прокси-серверу и делать все, что вы захотите, с вашим хостером службы.

Ключевой момент: ваша служба должна иметь доступ ко всем хостам вашей службы.

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