Надлежащее место для кода инициализации в не-HTTP WCF-сервисе, размещенном в IIS / WAS? - PullRequest
3 голосов
/ 03 февраля 2012

Насколько я понимаю, служба WCF, настроенная для net.msmq, не будет работать как HttpApplication при размещении в IIS / WAS, что означает, что вы не получаете события в Global (Application_Start является важным).Я прав в этом отношении?

Влияет ли использование Windows Server AppFabric для автоматического запуска службы на службу через HTTP, вызывая событие Application_Start?Если да, то надежен ли он?

Наверное, мой real вопрос: где находится "правильное" место для кода инициализации для службы WCF, отличной от HTTP?

В частности (поскольку правильное место может быть разным для разных вещей):

  • IoC-регистрации
  • log4net инициализация
  • Проверка наличия очереди MSMQ локально (как предлагает Юваль Лоуив своей книге WCF)

Дополнительный вопрос: события в настраиваемом IServiceBehavior запускаются при каждом запросе или только один раз при запуске?А как насчет ServiceHost.OnOpening () - каждый запрос или только один раз при запуске?(Мое тестирование показывает, что это только один раз, но кто-нибудь знает, где задокументирован «жизненный цикл» WCF, потому что, похоже, я его нигде не могу найти.)

1 Ответ

1 голос
/ 03 февраля 2012

Я не могу проверить, что службы WCF, размещенные в IIS / WAS, не могут быть настроены для поддержки Application_Start, но не требуется делать то, что вы хотите.Я бы порекомендовал вам создать пользовательский ServiceHost вместе с пользовательским ServiceHostFactory (для WAS).Этот подход описан в статье MSDN и в этом блоге .Используя этот подход, вы можете разместить свою службу в IIS / WAS, службе Windows или консольном приложении, поскольку процесс инициализации будет таким же.

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