2008-11-10 6 views
4

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

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

This post - хорошее начало. Некоторые цели и вопросы, которые необходимо обсудить:

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

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

ответ

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

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

  • Я бы сказал, что это возможно. Тем не менее, в основном это репликация Windows Process Activation Service, поэтому вы можете начать искать там свои функции.

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

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

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