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

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

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

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

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

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

1 Ответ

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

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

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

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

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

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

...