서비스가 시작될 때 모든 종속성이 만들어지고 일시적인 범위에서 주입되는 Windows 서비스를 상속 받았습니다.다중 스레드 Windows 서비스에서 Ninject를 사용하여 모든 틱에서 종속성 (DbContext)의 새 인스턴스를 얻는 방법?
우리는이 서비스에 많은 문제를 겪고 있습니다. 서비스가 실행되는 전체 시간 동안 살아있는 DbContext가 있으며, 다른 인스턴스가 매번 주입됩니다.
리팩터링을 통해 각 작업 스레드가 각 틱의 지속 기간 동안 살아있는 DbContext를 주입하도록합니다.
나는 custom scope을 보았다. 그것은 단일 스레드 응용 프로그램에 대한 괜찮아 보이지만 멀티 스레드되지 않습니다. 나는 또한 InThreadScope을 고려했다. 각 스레드는 자신의 인스턴스를 제공하지만, 스레드가 관련된 한 싱글 톤이므로 틱 요구 사항을 충족시키지 못합니다.
현재 나의 생각은 named scope extension을 사용하고 모든 틱에서 새 범위를 만드는 데 사용할 수있는 범위 팩토리를 삽입하는 것입니다.
이 방법이 있습니까? 모든 제안, 팁 또는 대안을 주시면 감사하겠습니다.
때문에 우리가 명명 된 범위를 사용하여 종료 시간 제약에 UPDATE
하지만 @ BatteryBackupUnit의 솔루션으로 깨끗하지 않았다. DbContext를 필요로하는 그래프 아래쪽에 의존성이 더 있었고 범위 팩토리를 다시 주입해야했습니다. @ BatteryBackupUnit의 솔루션을 사용하여 대신 ThreadLocal
저장소에서 동일한 인스턴스를 재사용 할 수있었습니다.