현재 Ninject를 향후 프로젝트에 사용할 수 있는지 평가 중입니다. 하나의 조건은, libary가 Dispose 메서드를 호출하도록 강요해서는 안된다는 것입니다. 그래서, 정말 필요한가요? 메모리 누수와 다른 추악한 결과를 초래하지 않을까요?Ninject의 Dispose 메서드가 정말로 필요합니까?
답변
순수하게 관리되는 솔루션 인 Ninject는 Dispose()를 호출하지 않으면 메모리 누수 또는 다른 문제가 발생하지 않는다고 생각합니다. 특히 응용 프로그램을 종료하기 전에 마지막으로 수행 한 작업 중 하나 인 커널의 Dispose() 메소드 만 호출하므로 GC 또는 OS의 프로세스 분리로 인해 메모리를 회수 할 수 있습니다.
Dispose()를 호출 할 수있는 IoC 컨테이너가 필요한 이유는 IDisposable을 구현하는 모든 서비스 공급자에서 Dispose()를 호출하기 때문입니다. 유용한 기능 중 하나는 서비스 제공 업체가 관리되지 않는 리소스를 소유하거나 비동기 작업이 완료 될 때까지 기다려야한다는 것입니다 (또는 적어도 이상한 순서로 중단해야 함).
나는 이것이 커널/provider/locator 클래스에 IDisposable을 구현하는 대부분의 IoC 컨테이너 뒤에있는 이유라고 생각합니다.
IoC 컨테이너에서 Dispose()를 사용하는 데 문제가있는 이유는 무엇입니까? 지금까지 콘솔 응용 프로그램, XAML 기반 WPF 응용 프로그램 또는 Xbox 게임에서 항상 호출 할 적절한 위치를 찾았습니다.
Dispose는 저에게는 문제가 아니지만 다른 사람들에게는 분명히 문제입니다. –
전체 응용 프로그램에서 정확히 한 번만 Dispose를 커널에 호출합니다. 문제가 어디에 있습니까? –
그러면 다른 사람들의 관심사가 무엇인지 알아내는 것이 좋습니다. IDisposable 코드 냄새라고 생각하는 경우에는 디자인 관점에서 이해가가는 이유에 대해 이미 좋은 추론을하고 있습니다. – Cygon
Dispose를 돕기 위해 Ninject를 구성 할 수 있습니다. 그것은 무엇에 따라 달라집니다 범위 무엇 전략 당신은 Ninject와 함께 사용합니까. 예를 들어 : 커널이 폐기 될 때
- Ninject disposes every Disposable object that has another scope other than
InTransientScope
as soon as the scope object to which the created object is tied is collected by GC.,
은 또한 당신은
- 를 사용하거나 개체가
HttpRequest
으로 처리 할StandardScopeCallbacks.Request
를 사용할 수 있습니다. 이것은 웹 응용 프로그램에 유용합니다.
OnDeactivation
방법 또는
InScope(x => new DisposableStrategy())
- 1. .NET에서 Finalizer 메서드가 필요합니까?
- 2. 앱 서버가 정말로 필요합니까?
- 3. CDATA가 정말로 필요합니까?
- 4. Object.defineProperties/create가 정말로 필요합니까?
- 5. DLL의 DataContext에 Dispose() 메서드가 없습니다.
- 6. SHA 암호화 - 소금은 정말로 필요합니까?
- 7. JavaScript identity는 여기에서 정말로 필요합니까?
- 8. API에 상태 메서드가 필요합니까?
- 9. 왜 DataBind() 메서드가 필요합니까?
- 10. 프레임 워크가 초보자/중간체에 정말로 필요합니까?
- 11. Google Maps API 키가 정말로 필요합니까?
- 12. C++에서 main()이 정말로 필요합니까?
- 13. 매크로 매개 변수의 구조가 "정말로 필요합니까?"
- 14. "모니터"객체를 사용하는 것이 정말로 필요합니까?
- 15. 우리는 정말로 멀티 스레드 자바 스크립트가 필요합니까?
- 16. 이 문제에 프레임 워크가 정말로 필요합니까?
- 17. 빠른 연락처 배지를 추가하려면 SyncAdapter가 정말로 필요합니까?
- 18. YUI3 로더가로드하는 모든 파일이 정말로 필요합니까?
- 19. C#에서 VOLATILE 키워드가 정말로 필요합니까?
- 20. iOS 응용 프로그램에 MainWindow.xib이 정말로 필요합니까?
- 21. OGG는 HTML5 비디오 완전 호환에 정말로 필요합니까?
- 22. 내 iPhone 응용 프로그램에서 Locking이 정말로 필요합니까?
- 23. 안드로이드에서 최고의 점 : 이름이 정말로 필요합니까?
- 24. Ninject의 InRequestScope에
- 25. Ninject의 버그?
- 26. NHibernate 작업 단위 패턴과 Ninject의 올바른 사용
- 27. Ninject의 컴파일 오류
- 28. ninject의 구체적인 인스턴스를 얻으십시오
- 29. Ninject의 OnActivation은 언제 시작됩니까?
- 30. .NET에 자동 가비지 컬렉터가 있기 때문에 왜이 Dispose() 메소드가 필요합니까?
당신은 절대로 처분을 부르지 않습니다. 그것을 부르지 않으면 결코 누출이 일어나지 않으며, 최종자가 당신 후에 청소를합니다. 당신은 더 비싼 컴퓨터를 구입하여 쉽게 해결할 수있는 뚱뚱한 게으름을 피우는 것입니다. –