2011-10-12 4 views
1

WebServiceHost의 수명을 알아 내려고하고 있습니다. 처음에는 요청 당 호출/요청 (즉, 각 요청에 대해 ASP.Net 페이지와 유사하게 작성 됨)이라고 생각했습니다. Custom WebServiceHostFactory와 WebServiceHost를 만들었지 만 Factory와 Host는 한 번만 생성된다는 것을 알았습니다.WebServiceHostFactory 및 WebServiceHost 인스턴스 수명

CustomWebServiceHostFactory가 CreateServiceHost를 무시하고 CustomWebServiceHost가 OnOpening을 무시하여 수명을 추적하는 일부 진단을 내 보냅니다.

내 서비스 파일

[ServiceContract] 
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)] 
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 
public partial class ProductService 
{ 
... // code 
} 

내에서 Global.asax 파일

private void RegisterRoutes() 
{ 
    RouteTable.Routes.Add(new ServiceRoute("products", new CustomServiceHostFactory(), typeof(ProductService))); 
} 

두 개의 요청이 CustomWebServiceHost의 동일한 인스턴스를 치는 이유 수 누군가가 설명하고, 어떻게 것 각 서비스 요청에 대해 새로운 호스트를 만드시겠습니까?

감사

답변

0

이해가되지 않습니다 각각의 새로운 요청에 대한 호스트 만들기 -

  • 들어오는 요청을 수신하는 코드의 조각 - 서비스 호스트가 서버 측의 WCF 런타임입니다
  • 는 서비스 호스트가 꽤 비싼 광범위한 작업입니다 만들기

을 처리 할 수있는 서비스 클래스에 이러한 요청을 파견 - 난 IIS에서 호스팅하는 경우 첫 번째 요청이 들어올 때 "주문형"으로 처리되지만 서비스 호스트는 지정된 시간 동안 머무르고 재사용됩니다.

자체 호스팅하는 경우 일반적으로 관리되는 응용 프로그램에서 단일 서비스 호스트 인스턴스를 만든 다음 서비스를 종료 할 때까지 호스트를 열어 활성 상태로 둡니다. 각 요청에 대한 통화 당 기준으로 작성됩니다 무엇

실제로 들어오는 요청을 (그러나 서비스 호스트) 처리하는 서비스 클래스 인스턴스입니다.

+0

감사 마크 - 완벽한 의미입니다! – leon