2012-02-03 5 views
3

net.msmq 용으로 구성된 WCF 서비스는 IIS/WAS에서 호스트 될 때 HttpApplication으로 실행되지 않으므로 전역 (Application_Start가 중요) 이벤트를받지 못한다는 것을 이해합니다. 이와 관련하여 나는 맞습니까?IIS/WAS에서 호스팅되는 비 HTTP WCF 서비스의 초기화 코드를위한 적절한 장소?

Windows Server AppFabric을 사용하여 서비스를 자동 시작하면 HTTP를 통한 서비스에 충돌하여 Application_Start 이벤트가 발생합니까? 그렇다면 신뢰할 수 있습니까?

실제 질문은, 비 HTTP WCF 서비스의 초기화 코드를위한 "적절한"장소는 어디입니까?

특히 (오른쪽 장소가 다른 물건에 대해 서로 다른 수 있기 때문에) :

  • IOC의 등록 MSMQ를 대기열이 로컬에 존재 확인
  • log4net 초기화
  • (쥬발 로이는 자신의 WCF 책에서 알 수 있듯이)

후속 질문 : 모든 요청에 ​​대해 또는 시작시 한 번만 사용자 지정 IServiceBehavior 이벤트를 수행합니까? ServiceHost.OnOpening()은 어떨까요? 모든 요청 또는 시작시 한 번만? (내 테스트에 따르면 단 한 번이지만 WCF의 "라이프 사이클"이 어디에서 찾을 수 있는지 알 수 없으므로 누구나 문서화되어 있습니다.)

답변

1

IIS/WAS에서 호스트되는 WCF 서비스를 확인할 수 없습니다. Application_Start를 지원하도록 구성 할 수는 없지만 원하는 것을 수행 할 필요는 없습니다. 맞춤형 ServiceHostFactory (WAS 용)와 함께 맞춤 ServiceHost를 만드는 것이 좋습니다. 이 접근법은 MSDN articlethis blog post에 설명되어 있습니다. 이 방법을 사용하면 IIS/WAS, Windows 서비스 또는 콘솔 앱에서 서비스를 호스팅 할 수 있습니다. 초기화 프로세스가 동일하기 때문입니다.