this response과 함께 Mark Seemann's blog post을 참조하면이 코드를 참조하는 서비스 로케이터 패턴 오버플로를 클래스 생성자를 통해 사용하는 단점을 이해합니다. 나는 또한이 문제를 다루는 Dependency Injection with Ninject, MVC 3 and using the Service Locator Pattern을 읽었다. ASP.NET MVC의 서비스 위치 지정자
그러나, 내 질문이 특정 사건에 관한 : 여기public class MyController
{
public void GetData()
{
using (var repository = new Repository())
{
// Use the repository which disposes of an Entity Framework
// data context at the end of its life.
}
}
// Lots of other methods.
}
내가 자동으로 내부 엔티티 프레임 워크 데이터 컨텍스트를 인스턴스화 저장소를 호출하는 방법을 포함하는 컨트롤러를 가지고있다. 이 단일 데이터 컨텍스트는 컨텍스트가 리포지토리의 모든 메서드에서 호출되기 때문에 사용되므로 리포지토리 개체의 전체 수명 동안 단일 컨텍스트를 공유하는 것이 좋습니다.
컨트롤러 클래스가 크기 때문에이 저장소가 사용되지 않을 가능성이 더 큽니다. DC를 인스턴스화하는 것이 비용이 많이 드는 작업이라고 가정합니다 (아마도 잘못되었습니다). 그렇게하지 않는 것이 좋습니다. 서비스 로케이터 패턴을 사용하면 실제로 컨텍스트가 필요할 때까지 인스턴스 생성을 연기 할 수 있지만 위의 링크에서 유효한 인수가 있으면 인스턴스를 피하는 것이 좋습니다.
위와 같은 경우 의존성 삽입을 사용하는 것이 더 효율적인 방법이 있다면 내 저장소와 기본 데이터 컨텍스트를 불필요하게 인스턴스화하지 못하게하는 것입니다.
이 질문은 너무 주관적입니다. "더 잘"은 매우 모호합니다. –
나는 내가 묻고있는 것을 명확히하기 위해이 질문을 편집했다. –