Идеи для расширяемого (надстройки/плагины) хоста службы WCF?

Я ищу предложения о том, как я могу создать расширяемый сервер WCF (с динамически загружаемыми службами), предпочтительно с использованием System.Addins или MEF.

На сервере должна размещаться любая служба WCF (содержащаяся в сборках DLL, загружаемая во время выполнения), которая реализует минимальный API-интерфейс «плагина» (StartService/StopService/GetStatus?/и т. д.).

Это сообщение — хорошее начало. Некоторые цели и вопросы для обсуждения:

  • Использовать/не использовать изолированный AppDomain для каждой службы?
  • Как настроить каждую службу (конечные точки, транспортные протоколы)? XML-файл конфигурации или лучшая альтернатива?
  • Отложенная/ленивая загрузка сборок (при поступлении запроса на обслуживание)? Возможный? Полезный? Как?
  • Перезагрузка сборки при изменении файла на диске (полезно для среды разработки);
  • Перезапуск службы при изменении конфигурации на диске;

и, конечно же, всегда приветствуются другие идеи ;)


person F.D.Castel    schedule 10.11.2008    source источник


Ответы (1)


  • Да, используйте изолированный AppDomain для каждой службы. Вам нужна AppDomain изоляция, чтобы не отключать другие службы, работающие в случае отказа одной из них.

  • Предлагайте все способы, которые в настоящее время делает WCF, либо через программирование, либо через конфигурацию. Программный доступ затруднен, так как экземпляр ServiceHost не сериализуем, поэтому получение информации через границу домена приложения будет проблемой.

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

  • Это полезно для разработки, но, честно говоря, я не думаю, что эта функция так уж важна. Это усложняет ваш код для усиления, которое не слишком измеримо (IMO). Я бы предпочел написать скрипт, который остановит службу, скопирует файл и перезапустит его, вместо того, чтобы усложнять кодовую базу и постоянно следить за сборкой.

  • Теперь вы говорите об IIS. По сути, вы можете разместить свой сервис в IIS, и он будет перерабатывать его при изменении файла конфигурации.

При всем при этом кажется, что WAS и IIS предлагают вам большую часть того, что вы хотите (высокая доступность, изолированные домены приложений, конфигурация и т. д. и т. д.), поэтому вы можете спросить, почему вы хотите сделать это самостоятельно.

person casperOne    schedule 09.01.2009