어디에서나 Windsor 또는 Spring.net에 대한 정보를 항상 MVC를 참조하여 찾습니다. 웹 양식 프로젝트 또는 wcf 용으로 구현하려고하는 점이 있습니까?.Net의 비 MVC 프로젝트에서 IoC를 설정하는 것이 가치가 있습니까?
답변
ASP.NET MVC 웹 응용 프로그램의 특성은 요청을 처리하는 방식 때문에 IoC에 매우 적합합니다. 웹 응용 프로그램의 시작 요청 요청 수명주기와 ASP.NET MVC가 이러한 작업을 처리하는 방식은 Krzysztof Koźmic이 The Three Calls Pattern이라고 부르는 내용과 Mark Seemann이 Register Resolve Release pattern이라고 부르는 내용과 직접적으로 관련이 있다고 말할 수 있습니다.
에 직접 패턴을 적용하지 않는 경우에도이 패턴을 따르는 방법이 있습니다. 윈폼 응용 프로그램, Windows 서비스 등
<shameless_plug>
난 당신의 코드가없는, 컨테이너가 호출 될 진정으로 IOC의 스타일을 허용 윈저의 기능입니다 성 윈저의 TypedFactoryFacility이 그것을 알고에 대해 a blog post를 작성한다.
입력 된 공장 시설로 인해 Windsor는 예를 들면 다음과 같은 인터페이스를 동적으로 구현할 수 있습니다. ISomeFactory
, 아래에 컨테이너의 Resolve
메서드에 대한 호출을 위임하므로 코드가 ISomeFactory
인터페이스에만 의존 할 수 있습니다.
</shameless_plug 제어의 >
IoC는 프로젝트의 종류에 상관없이 유용합니다. 문제가 해결되면 (테스트 가능성 등 ...) 특정 프로젝트 종류에만 국한되지 않습니다.
예, 아키텍처에서 호출하거나 허용하는 경우 사용 된 UI 프레임 워크뿐만 아니라 전체 애플리케이션의 디자인에 달려 있습니다.
예를 들어, WebForms 프로젝트가 코드 숨김으로 모든 것을 던지고 Page_Load 등에서 데이터베이스에 직접 액세스하는 경우 IoC (또는 모든 종류의 리 팩터링)를 사용하는 것이 어려워 질 것입니다.
그러나 WebForm이 서비스에 액세스하거나 서비스에 액세스하거나 리포지토리 등을 사용하는 모델과 상호 작용하는 경우 해당 백엔드 개체에는 IoC와 같은 종류의 서비스 로케이터가 삽입 될 수 있습니다 뼈대. WebForms 클래스의 생성자에 연결하는 것은 쉽지 않을 수도 있습니다 (또는 내가 시도한 적이 없다고 생각합니다).하지만 필요에 따라 클래스 내에서 종속성을 해결할 수 있습니다 (예 : 지연 바인딩 된 클래스 속성).
IoC는 MVC와 전혀 관련이 없습니다. 두 가지 완전히 다른 디자인 패턴입니다.
응용 프로그램에서 IoC를 사용하는지 여부는 디자인에 따라 다릅니다. 야기? 그럼 잊어 버려. 테스트를 어렵게 만드는 클래스 간의 많은 의존성? 즉시 등록하십시오.
IoC 프레임 워크는 응용 프로그램을 구현하는 데 사용하는 디자인 패턴의 종류를 신경 쓰지 않습니다. 그래서 MVC 또는 귀하의 aspx 파일 안에 코드의 10k 라인, 그건 중요하지 않습니다.
반전 (일명, 의존성 삽입 (Dependency Injection) 또는 제 3 자 연결은) 느슨한 결합를 활성화하는 단지 방법입니다.
IoC 또는 서비스 위치 (which is an anti-pattern). ) 모든 응용 프로그램에서 느슨한 커플 링을 사용하려면 IoC가이를 수행하는 방법입니다 .
느슨한 결합 당신에게 혜택을 많이 제공 : (SOLID)
- 테스트 용이성
- 늦은을/더 나은 maintainab ility
- 확장 그것은 특정 아키텍처, 패턴 또는 응용 프로그램의 유형에 연결되지 않은
- 1. MSBuild를 사용하는 것이 가치가 있습니까?
- 2. 중간 크기의 프로젝트에서 Coolite를 사용할 가치가 있습니까?
- 3. 웹 프로젝트에서 Cobertura를 사용할 가치가 있습니까?
- 4. Perl 6을 배우는 것이 가치가 있습니까?
- 5. IIS7에서 동적 압축을 사용하는 것이 가치가 있습니까?
- 6. PHP에서 관찰자 패턴을 구현하는 것이 가치가 있습니까?
- 7. haml & sass를 배우는 것이 가치가 있습니까?
- 8. obsfucation은 가치가 있습니까?
- 9. ASP.NET MVC FilterAttribute에서 Dependency Injection/IoC를 사용할 수 있습니까?
- 10. GWT와 Spring MVC, 그만한 가치가 있습니까?
- 11. C#/.net의 jEval과 비슷한 것이 있습니까?
- 12. Java에서 .NET의 NotImplementedException과 같은 것이 있습니까?
- 13. ASP.NET에서 Debug.Assert를 사용할 가치가 있습니까?
- 14. 엔티티 또는 도메인 모델의 확장성에 IoC를 사용하는 것이 옳은가요?
- 15. 다른 함수의 역함수를 반환하는 함수를 사용하는 것이 가치가 있습니까?
- 16. Silverlight를 배우고이를 사용하여 응용 프로그램을 개발하는 것이 가치가 있습니까?
- 17. 개발자로서 익명의 의견을 동료들에게 물어 보는 것이 가치가 있습니까?
- 18. iPhone SDK 3.0 기능을 사용하는 것이 가치가 있습니까?
- 19. 호출 할 수없는 Python 클래스가 호출되지 않도록하는 것이 가치가 있습니까?
- 20. 데이터베이스 계층이 JDBC 일 경우 Spring을 사용하는 것이 가치가 있습니까?
- 21. 메모리 절약을 위해 require_once()를 사용하는 것이 가치가 있습니까?
- 22. Windows API "언어"를 암기하는 것이 가치가 있습니까
- 23. 사소한 반환 유형에 대한 인터페이스를 만드는 것이 가치가 있습니까?
- 24. "간단한"유형의 값을 참조로 전달하는 것이 가치가 있습니까?
- 25. 내 사이트의 루트를 하위 폴더라는 키워드에 넣는 것이 가치가 있습니까?
- 26. 캐싱의 대안으로 IOC를 사용하여 MVC 모델을 미리 채워 넣으시겠습니까?
- 27. .Net의 다른 프로젝트에서 같은 어셈블리로 작업 할 수 있습니까?
- 28. OOP는 PHP에서 사용할 가치가 있습니까?
- 29. SharePoint 2007을 배울 가치가 있습니까?
- 30. JDEE는 가치가 있습니까?
DI를 'DI == IoC'로 설명합니다. DI가 SL이 그렇듯이 제어의 반전의 특정한 형태가 아닌가? – Steven
간혹 메시지를 전달하기 위해 약간의 작업을 단순화해야하지만 DI가 IoC의 특정 형식이라는 것이 맞습니다. 그러나 SL은 IoC와 아무런 관련이 없습니다. 예 : http://stackoverflow.com/questions/3226605/inversion-of-control-dependency-injection –