어떤 C # /. NET 종속성 주입 프레임 워크를 살펴볼 가치가 있습니까? 복잡성과 속도에 대해 무엇을 말할 수 있습니까?
답변
편집 (저자에 의해 아님) : https://github.com/quozd/awesome-dotnet/blob/master/README.md#ioc 에서 사용할 수있는 IoC 프레임 워크의 전체 목록이 있습니다 :
- Castle Windsor -Castle Windsor는 .NET 및 Silverlight에 사용할 수있는 번성, 성숙 제어 컨테이너의 최고 버전입니다
- Unity- 생성자, 속성 및 메서드 호출 주입을 지원하는 경량의 확장 가능한 종속성 주입 컨테이너
- Autofac- 중독성있는 .NET IoC 컨테이너
- DryIoc- 간단하고 빠른 모든 기능을 갖춘 IoC 컨테이너.
- Ninject-.NET 의존성 인젝터의 닌자
- StructureMap-.Net 용 원본 IoC / DI 컨테이너
- Spring.Net-Spring.NET 은 엔터프라이즈 .NET 애플리케이션을보다 쉽게 구축 할 수있는 오픈 소스 애플리케이션 프레임 워크입니다.
- LightInject- 초경량 IoC 컨테이너
- Simple Injector -Simple Injector는 유니버설 앱 및 모노를 포함한 Silverlight 4+, Windows Phone 8, Windows 8을 지원하는 .NET 4+ 용 사용하기 쉬운 DI (Dependency Injection) 라이브러리입니다.
- Microsoft.Extensions.DependencyInjection-ASP.NET Core 응용 프로그램의 기본 IoC 컨테이너입니다.
- Scrutor -Microsoft.Extensions.DependencyInjection에 대한 어셈블리 검색 확장 프로그램입니다.
- VS MEF -Visual Studio에서 사용하는 MEF (Managed Extensibility Framework) 구현
- TinyIoC- 소규모 프로젝트, 라이브러리 및 초보자를위한 사용하기 쉽고 번거롭지 않은 컨트롤 컨테이너 반전.
원래 답변은 다음과 같습니다.
나는 여기서 약간 까다 롭다고 생각하지만 DI (Dependency Injection)는 프로그래밍 패턴이며 IoC (Inversion of Control) 프레임 워크에 의해 촉진되지만 필요하지는 않습니다. IoC 프레임 워크는 DI를 훨씬 쉽게 만들어 주며 DI에 비해 다양한 이점을 제공합니다.
그것은 당신이 요구 한 것이라고 확신합니다. IoC 프레임 워크 정보 나는 Spring.Net 과 CastleWindsor 를 많이 사용 했지만 뒤에서 진짜 고통은 당신이 작성 해야하는 성가신 XML 구성이었습니다! 그들은 거의 모두이 방식으로 움직이고 있습니다. 그래서 작년에 StructureMap 을 사용 해 왔으며 강력한 유형의 제네릭과 레지스트리를 사용하여 유창한 구성으로 이동했기 때문에 IoC 사용에 대한 통증 장벽이 떨어졌습니다. 영하! 필자는 IoC 구성이 컴파일 타임 (대부분)에 검사되어 구조 맵과 그 속도에 기쁨이 있다는 것을 알았 기 때문에 절대 킥을 얻습니다. 나는 다른 사람들이 런타임에 느리다고 말하지는 않지만, 설정하기가 더 어려웠고 좌절은 종종 하루에 이겼습니다.
최신 정보
최신 프로젝트에서 Ninject 를 사용 하고 있으며 사용하는 것이 매우 즐거웠습니다. 단어는 여기서 조금 실패하지만 (영국에서 말하는 것처럼)이 프레임 워크는 ‘개’입니다. 빠르게 시작하고 실행하려는 모든 그린 필드 프로젝트에 강력히 권장합니다. Justin Etheredge 의 환상적인 Ninject 스크린 캐스트 세트 에서 필요한 모든 것을 얻었 습니다. 기존 코드에 Ninject를 개조하는 것이 전혀 문제가되지 않음을 알 수 없지만 내 경험에서 StructureMap 에 대해서도 마찬가지 입니다. 그 둘 사이에서 앞으로 나아가는 것은 어려운 선택이지만, 나는 정체보다는 경쟁을 원할 것이며, 건전한 경쟁이 있습니다.
다른 IoC 스크린 캐스트도 Dimecasts 에서 찾을 수 있습니다 .
답변
그들은 각각 장단점이 있기 때문에 당신이 찾고있는 것에 달려 있습니다.
Spring.NET
Java 세계에서 Spring에서 나오는 가장 성숙합니다. Spring에는 웹, Windows 등을 지원하도록 확장 된 매우 다양한 프레임 워크 라이브러리가 있습니다.Castle Windsor
.NET 플랫폼에서 가장 널리 사용되는 시스템 중 하나이며 가장 큰 에코 시스템을 가지고 있으며, 구성 / 확장 성이 뛰어나며, 사용자 정의 수명 관리, AOP 지원, 고유 한 NHibernate 지원 기능이 있으며 모두 멋진 컨테이너입니다. Windsor는 Monorail, Active Record 등을 포함하는 전체 스택의 일부입니다. NHibernate 자체는 Windsor 위에 구축됩니다.Structure Map
내부 DSL을 통해 매우 풍부하고 세밀한 구성을 갖습니다.Autofac
고유 한 기능적 프로그래밍 지원을 모두 갖춘 새로운 시대의 IoC 컨테이너입니다. 또한 수명 관리에 대한 접근 방식이 다른 방식과 다릅니다. Autofac은 여전히 새로운 기능이지만 IoC로 가능한 것에 대한 기준을 제시합니다.Ninject
나는 더 적은 접근 방식으로 더 많은 뼈가 있다고 들었습니다 (경험이 없음).- 가장 큰 차별
Unity
자는 Microsoft (p & p)의 지원자입니다. 유니티는 매우 좋은 성능과 훌륭한 문서를 가지고 있습니다. 또한 고도로 구성 가능합니다. 그것은 성 / 구조지도의 모든 종소리와 휘파람이 없습니다.
요약하면, 그것은 실제로 당신에게 중요한 것에 달려 있습니다. 나는 어느 것이 적합한 지보고 평가하고 보는 것에 대해 다른 사람들에게 동의 할 것입니다. 좋은 점은 젤리를 먹는 것보다 좋은 도넛을 선택한다는 것입니다.
답변
자동 팩스. https://github.com/autofac/Autofac 정말 빠르고 꽤 좋습니다. 다음은 비교 링크입니다 (Ninject가 메모리 누수 문제를 해결 한 후 작성).
http://www.codinginstinct.com/2008/05/ioc-container-benchmark-rerevisted.html
답변
Ninject는 훌륭합니다. 정말 빠르지 만 비교는하지 않았습니다. 저자 인 Nate는 Ninject와 다른 DI 프레임 워크를 비교하고 Ninject의 속도를 향상시킬 수있는 더 많은 방법을 찾고 있습니다.
내가 존경하는 많은 사람들이 StructureMap과 CastleWindsor에 대해 좋은 말을하는 것을 들었습니다. 내 생각에 그것들은 지금 볼 큰 세 사람입니다.
답변
나는 간단한 인젝터를 사용한다 :
Simple Injector는 성공 사례를 향해 솔루션을 안내하기 위해 모범 사례를 사용하는 쉽고 유연하며 빠른 종속성 주입 라이브러리입니다.