2011-08-04 3 views
1

서비스 요건이 있습니다. 요구 사항은 서비스의 N 인스턴스까지 가져와야한다고 명시합니다. 사용할 수있는 인스턴스가 없으면 인스턴스가 해제 될 때까지 대기/대기 한 다음 사용 가능한 인스턴스를 반환합니다. 이것은 공동 생활 방식과 매우 유사합니다.윈저에 대한 맞춤형 맞춤 라이프 스타일 블록

풀링 된 라이프 스타일의 나의 이해는 다음과 같습니다 첫째 N 개체가 생성됩니다 요청한 (N은 최대 풀 크기 임)

  • 객체에 대한 요청이 수신 될 때
  • , 풀링 생활은 처음 것이다 풀의 모든 오브젝트가 "사용 중"이 될 때까지 풀에서 오브젝트를 리턴하십시오.
  • 모든 오브젝트가 "사용 중"인 경우 (최대 풀 크기의 범위를 벗어나는) 추가 오브젝트가 작성됩니다.
  • 개체가 릴리스되면 최대 풀 크기 이상인 경우 개체가 삭제되거나 최대 풀 크기보다 작은 경우 개체가 풀로 반환됩니다.

이것은 내가 원하는 동작과 비슷하지만 약간의 차이가 있습니다. 최대 풀 크기를 초과하는 객체를 만들지 말고 "사용중인"객체가 릴리스 될 때까지 기다린 다음 사용 가능한 객체를 반환합니다.

아이디어가 있으십니까? 다른 스레드에서 다른 컨테이너 해상도를 차단하지 않고도이 작업을 수행 할 수 있습니까?

답변

2

IPoolFactoryIPool을 구현하고 컨테이너에 팩토리를 등록해야합니다. 그런 다음 차단은 차단을 포함하여 필요한 모든 작업을 수행 할 수 있습니다.

+0

훌륭한 감사 ... 나는이 두 인터페이스가 PoolableLifestyleManager에서 사용되는 것을 확인합니다. 나는 그것을 시도하고 후속 조치를 취할 것이다. –

+0

완벽하게 ... –

+0

등록하려면 다음과 같이하십시오. 'container.Register (Component.For (). ImplementedBy ()); – Nico

관련 문제