2014-07-08 3 views
0

우리는 IoC 용 Ninject를 사용하고 직원에게 IDbConnection을 주입하는 Azure Worker Role (기본적으로 Windows 서비스와 동일)을 보유하고 있습니다. 모범 사례에서는 더 이상 사용하지 않는 즉시 연결을 처리해야하지만 그렇지 않을 수도있는 작업자/서비스에 연결을 처리해야한다고 말합니다. 그런 시나리오에서 데이터베이스 연결을 처리하는 좋은 방법은 무엇입니까?Ninject를 사용하여 장기 실행 프로세스에서 SQL 연결을 가장 잘 처리하는 방법은 무엇입니까?

우리의 옵션은 (아마도 너무 국한되지 않음) 포함 : ServiceLocator 패턴을 사용하여

  • 우리는 주변의 연결을 유지
  • 처리하는 모든 메시지에 새 연결을 요청 (즉, 그것으로 아무것도 할 수 없음)

나는 솔직히 싫어하고 다른 해결책이 있기를 바랐다. ...

답변

1

나는 ServiceLocator (anti) P attern. 제 생각에는 Provider<ISomething>의 NInject 개념을 사용하면 필요에 맞을 것입니다. 기본적으로 제공자는 using 범위에서 사용할 수있는 연결을 리턴하는 일종의 사실입니다. 당신이되고 싶다면 더 'IOC의 잡았다'독립, 당신은 예를 들어있을 수있는이 같은 IConnectionFactory :

interface IConnectionFactory{ 
      IDbConnection Open(); 
} 
+0

물론 대답은 ... 대단히 감사합니다 "간접/추상화 계층을 추가" ! 우리의 모든 코드는 Ninject 어쨌든 바인딩되어 있기 때문에 아마 공급자 모델을 사용합니다 ... :) – noocyte