임 학습의 asp.net MVC 의존성 주입되는 새로운 기능 3. 하나. 누군가 그게 뭔지 말해 줄 수 있니? 왜 그렇게 유용합니까? 그것을 언제 사용할 수 있습니까? 아마 프로그래머 적합하지만, 처음 배울 제어
http://en.wikipedia.org/wiki/Inversion_of_control
http://www.martinfowler.com/articles/injection.html
의 반전에 대한 감사
임 학습의 asp.net MVC 의존성 주입되는 새로운 기능 3. 하나. 누군가 그게 뭔지 말해 줄 수 있니? 왜 그렇게 유용합니까? 그것을 언제 사용할 수 있습니까? 아마 프로그래머 적합하지만, 처음 배울 제어
http://en.wikipedia.org/wiki/Inversion_of_control
http://www.martinfowler.com/articles/injection.html
의 반전에 대한 감사
아이디어 구성 요소가/도착하는 방법에 대해 알고 종속성을 만들 수 없습니다해야한다는 것입니다, 그 일을 끝내기 위해 필요한 것을 제공해야합니다.
종속성 주입은 개체 자체를 인스턴스화하는 코드 대신 종속 코드가 코드 소비에 제공되는 프로세스입니다. 원시적 인 예제에서는 렌더링 된 서비스에 대한 송장 계산을 담당하는 클래스가있을 수 있습니다. 당신은 그것을 설명하고 '계산'방법을 호출합니다 :
public class InvoiceBiller
{
public void Bill()
{
Calculator calculator = new Calculator();
var totalAmountDue = calculator.CalculateBill(hoursWorked);
}
}
이 방법은 Calculator 클래스에 따라 다릅니다. 괜찮습니다. 작동합니다. 그러나 depenedency 주입하면 계산기 의존성를 "주입"할 것이다 :
public class InvoiceBiller
{
private readonly Calculator calculator;
public InvoiceBiller(Calculator calculator)
{
this.calculator = calculator;
}
public void Bill()
{
var totalAmountDue = calculator.CalculateBill(hoursWorked);
}
}
을 당신이 InvoiceBiller 클래스는 생성자 (생성자 주입라고 의존성 주입의 한 형태)을 통해 계산기 객체를 주어진 두 번째 예에서 볼 수 있듯이. InvoiceBiller는 더 이상 청구자의 인스턴스를 가져 오는 방법과 관련이 없으며 간단히 주어집니다.
테스트에 도움이됩니다. 테스트에서 원하는 모든 계산기 인스턴스를 전달할 수 있습니다. 실제 제품의 런타임시 데이터베이스에 연결된 계산기를 전달하여 시간당 요금을 조회 할 수 있습니다. 테스트를 위해 하드 코딩 된 속도를 사용하는 계산기를 전달하므로 테스트가 데이터베이스에 도달 할 필요가 없습니다. 한 단계 더이 촬영
는, 당신은 일반적으로 대신 구체적인 유형의 인터페이스에 전달합니다
public class InvoiceBiller
{
private readonly ICalculator calculator;
public InvoiceBiller(ICalculator calculator)
이제 인터페이스하지 구현에 대해 프로그래밍을하고 있습니다. 다시 테스트에서 모의 프레임 워크를 사용하여 인터페이스 유형의 모의 객체를 만들어 클래스에 전달할 수 있습니다.
사실 여기에는 두 가지 질문이 있습니다. "Dependency Injection이란 무엇입니까?" 및 "MVC 3의 새로운 기능은 'Dependency Injection support?
종속성 주입은 클래스가 사용하기 전에 다른 클래스의 새 객체를 정의하지 않을 때 프로그래밍 패턴입니다 (예 : DB의 전자 메일을 로깅해야하는 일부 전자 메일 보낸 사람 클래스는 로거의 새 인스턴스를 만들지 않음). 요청 어떤 클래스인지 알지 못해도 제공 될 수 있습니다 (인터페이스를 사용하여 우리의 경우 ILogger를 말하십시오). 여기에있는 로거는 의존성이 될 것이고이 종속성은 여러 가지 방법으로 종속 클래스의 생성자 매개 변수 (예 : EmailSender)로 요청되거나 클래스 "설정"접근 자의 속성으로 지정되거나 요청되거나 여러 방식으로 요청/주입됩니다. 기타...
Dependency Injection libraries 또는 Inversion Of Control Container라고하는 라이브러리가 있습니다. 그것들은 실제로 런타임에 어떤 클래스가 사용되어야하는지, 그리고 어떤 다른 특정 값을 사용해야하는지 정의하는 라이브러리이며, 모든 종속성을 재귀 적으로 전달하는 (예 : EmailSender의 인스턴스 작성과 같은) ILogger가 실제로 연결 문자열을 필요로하는 DBLogger 일 경우 ILogger도 그것을 보냅니다.).
http://tekpub.com/view/concepts/1
, ASP.NET MVC 팀에서 작동하는 데 사용되는 사람에서이 좋은 무료 동영상보기 ... 윈저, Ninject에, Autofac, 마이크로 소프트 유니티이다
ASP.NET MVC는 컨트롤러 클래스 작성 방법을 재정의 할 수있는 팩토리 클래스를 항상 허용했습니다. 따라서 DI 컨테이너 라이브러리를 사용하여 컨트롤러 및 해당 종속성을 마치 EmailSender 클래스처럼 만들 수 있습니다. 무엇 ASP.NET MVC 3.0에서왔다하면 기존 기능을 통해 개선과 같은 많은 방법을 제공 하였다는 모든
및
ASP.NET MVC 3 Service Location: Views (Part 3)
중복 [의존성 주입 무엇입니까?] (http://stackoverflow.com/questions/ 130794/what-is-dependency-injection) – jfar