programing

조사할 가치가 있는 .NET 종속성 주입 프레임워크는 무엇입니까?

oldcodes 2023. 5. 4. 20:31
반응형

조사할 가치가 있는 .NET 종속성 주입 프레임워크는 무엇입니까?

어떤 C#/.NET 종속성 주입 프레임워크는 검토할 가치가 있습니까?그리고 그들의 복잡성과 속도에 대해 뭐라고 말할 수 있을까요?

편집(작성자가 아님):IoC 프레임워크의 포괄적인 목록은 https://github.com/quozd/awesome-dotnet/blob/master/README.md#ioc 에서 확인할 수 있습니다.

  • Castle Windsor - Castle Windsor는 동종 최고의 성숙한 제어 반전 컨테이너입니다.NET 및 실버라이트
  • Unity - 생성자, 속성 및 메서드 호출 주입을 지원하는 경량 확장 가능한 종속성 주입 용기
  • 오토팩 - 중독성이 있습니다.NET IoC 컨테이너
  • DryIoc - 간단하고 빠른 모든 기능을 갖춘 IoC 컨테이너.
  • 인젝션 - 의 닌자.NET 의존성 인젝터
  • 봄. 그물 - 봄.NET은 빌딩을 엔터프라이즈로 만드는 오픈 소스 애플리케이션 프레임워크입니다.더 쉬운 NET 애플리케이션
  • Lamar - ASP 내에서 사용하도록 매우 최적화된 고속 IoC 컨테이너입니다.NET Core 및 기타.NET 서버 측 애플리케이션.
  • Light Inject - 초경량 IoC 용기
  • Simple Injector - Simple Injector는 의 사용이 간편한 DI(의존성 주입) 라이브러리입니다.실버라이트 4+, 윈도우 폰 8, 윈도우 8(유니버설 앱 포함), 모노를 지원하는 NET 4+.
  • 마이크로소프트.내선 번호.종속성주입 - ASP의 기본 IoC 용기입니다.NET Core 애플리케이션.
  • 스크루터 - Microsoft용 어셈블리 검색 확장입니다.내선 번호.의존주사.
  • VS MEF - Visual Studio에서 사용하는 MEF(Managed Extensibility Framework) 구현.
  • TinyIoC - 사용하기 쉽고 번거롭지 않으며, 작은 프로젝트, 도서관 및 초보자 모두를 위한 제어 컨테이너 반전.
  • Stashbox - 에 대한 가볍고 빠른 휴대용 종속성 주입 프레임워크입니다.NET 기반 솔루션.

원답은 다음과 같습니다.


여기서 제가 좀 까다로울 수도 있지만 DI(Dependency Injection)는 프로그래밍 패턴이며 IoC(Inversion of Control) 프레임워크에 의해 촉진되지만 필요하지는 않습니다.IoC 프레임워크는 DI를 훨씬 쉽게 만들고 DI 이상의 다양한 이점을 제공합니다.

그러고 보니, 당신이 묻고 있던 것이 분명.IoC Frameworks에 대해서는 Spring을 사용했습니다.NetCastle Windsor는 정말 많지만, 뒤에 있는 진짜 고통은 당신이 작성해야 했던 성가신 XML 구성이었습니다!그들은 지금 거의 모두 이 방향으로 이동하고 있습니다. 그래서 저는 지난 1년 정도 StructureMap을 사용해 왔습니다. 그리고 그것이 강력한 유형의 제네릭과 레지스트리를 사용하는 유창한 구성으로 이동한 이후로, IoC를 사용하는 데 있어 저의 고통 장벽은 0 이하로 떨어졌습니다.이제 IoC 구성이 컴파일 시간(대부분)에 확인되고 StructureMap과 그 속도에 만족하는 것 외에는 아무것도 없다는 것을 알게 되어 매우 기쁩니다.다른 사람들이 런타임에 느렸다고는 말하지 않겠지만, 제가 설정하기에는 더 어려웠고 좌절감이 종종 승리했습니다.

갱신하다

저는 최근 프로젝트에서 닌젝트를 사용하고 있는데 사용하는 것이 정말 즐거웠습니다.말은 여기서 조금 부족하지만, (영국에서 우리가 말했듯이) 이 프레임워크는 '개'입니다.신속하게 실행하고 싶은 모든 그린필드 프로젝트에 적극 추천합니다.저는 저스틴 에더리지의 환상적인 나인젝트 스크린캐스트 세트에서 필요한 모든 것을 얻었습니다.기존 코드에 Ninject를 리트로핏하는 것이 전혀 문제가 된다고는 생각하지 않지만, 제 경험으로는 StructureMap도 마찬가지입니다.이 둘 사이에서 앞으로 나아가는 것은 어려운 선택이 될 것입니다. 하지만 저는 침체보다는 경쟁을 하고 싶습니다. 그리고 상당한 양의 건전한 경쟁이 있습니다.

다른 IoC 스크린캐스트도 여기 Dimecasts에서 찾을 수 있습니다.

그것은 각각 장단점이 있기 때문에 당신이 무엇을 찾느냐에 따라 다릅니다.

  1. Spring.NET 자바 세계에서 봄에 나온 것으로 가장 성숙한 것입니다.Spring에는 웹, Windows 등을 지원하도록 확장하는 매우 풍부한 프레임워크 라이브러리 세트가 있습니다.
  2. Castle Windsor 는 에서 가장 널리 사용되는 항목 중 하나입니다.NET 플랫폼은 최대 규모의 에코시스템으로 구성/확장성이 뛰어나며, 맞춤형 수명 관리, AOP 지원, 고유한 NHibernate 지원 및 모든 분야에서 뛰어난 컨테이너입니다.Windsor는 모노레일, 액티브 레코드 등을 포함하는 전체 스택의 일부입니다.NHibernate 자체는 윈저 위에 지어집니다.
  3. Structure Map 내부 DSL을 통해 매우 풍부하고 세밀한 구성을 제공합니다.
  4. Autofac 모든 기능적 프로그래밍을 지원하는 새로운 시대의 IoC 컨테이너입니다.또한 수명 관리에 대해 다른 접근 방식이 필요합니다.오토팩은 여전히 매우 새로운 것이지만, 그것은 IoT로 가능한 것에 대한 기준을 높입니다.
  5. Ninject 저는 적은 접근법으로 더 많은 맨뼈를 가지고 있다고 들었습니다(경험이 없는 것으로 들림).
  6. 의 가장 큰 차별점은 마이크로소프트(p&p)의 지원을 받는 것입니다.유니티는 매우 좋은 성과와 훌륭한 문서를 가지고 있습니다.또한 고도로 구성할 수 있습니다.Castle / Structure Map이라고 하는 모든 종과 호루라기를 가지고 있지는 않습니다.

요약하자면, 그것은 정말로 여러분에게 중요한 것에 달려 있습니다.저는 어떤 것이 적합한지 평가하고 보는 것에 대해 다른 사람들의 의견에 동의합니다.좋은 점은 젤리를 먹어야 하는 것보다 더 좋은 도넛을 선택할 수 있다는 것입니다.

오토팩.https://github.com/autofac/Autofac 그것은 정말 빠르고 꽤 좋습니다.다음은 비교 링크입니다(Ninject가 메모리 누수 문제를 해결한 후 작성됨).

http://www.codinginstinct.com/2008/05/ioc-container-benchmark-rerevisted.html

주사기 좋아요.정말 빠른 것 같지만 비교는 안 해봤어요.저자인 네이트가 Ninject와 다른 DI 프레임워크를 비교한 것으로 알고 있으며 Ninject의 속도를 향상시킬 수 있는 더 많은 방법을 찾고 있습니다.

제가 존경하는 많은 사람들이 StructureMap과 CastleWinders에 대해 좋은 말을 하는 것을 들었습니다.제가 생각하기에, 그것들은 지금 당장 살펴봐야 할 세 가지입니다.

단순 인젝터 사용:

Simple Injector는 베스트 프랙티스를 사용하여 솔루션을 성공의 구덩이로 유도하는 쉽고 유연하며 빠른 종속성 주입 라이브러리입니다.

저는 캐슬의 열렬한 팬입니다.IoC Container 스토리 외에도 제공되는 시설이 마음에 듭니다.NHibernate, 로깅, AOP 등을 사용하면 정말 간단합니다.저는 또한 Boo와 함께 구성할 때 Binsor를 사용하고 그것 때문에 Boo를 언어로 사랑하게 되었습니다.

저는 하루의 대부분을 가장 단순한 봄을 얻기 위해 노력했지만 성공하지 못했습니다.NET 예제 작업.XML 파일에서 어셈블리를 찾는 방법을 찾을 수 없습니다.하지만 약 2시간 만에 NUnit와 MSTest 모두와의 통합 테스트를 포함하여 Ninject를 작동시킬 수 있었습니다.

스프링을 써봤어요.과거 NET에서 큰 성공을 거두었습니다.우리가 사용한 프로젝트는 자체적으로 상당히 무거웠지만, 저는 그것에 대한 상당한 간접비를 전혀 눈치채지 못했습니다.설명서를 읽는 데 시간이 조금밖에 걸리지 않았습니다.

닌젝트를 추천합니다.매우 빠르고 사용하기 쉽지만 XML 구성이 필요하지 않은 경우에만 Windsor를 사용해야 합니다.

C#의 좋은 점은 수년 전 자바 개발자들에 의해 짓밟힌 길을 따르고 있다는 것입니다.따라서 일반적으로 이런 종류의 도구를 찾을 때 제 조언은 확실한 Java 답변을 찾고 이 존재하는지 확인하는 것입니다.아직 NET 적응 중입니다.

그래서 DI(그리고 많은 옵션들이 있고, 이것은 정말로 취향의 문제입니다)에 관한 입니다.NET. 게다가, 프로젝트의 배후에 있는 사람들을 조사하는 것은 항상 현명합니다.저는 Eric Sink를 존중하기 때문에 소스 제어(사용 외)를 위해 SourceGear 제품을 제안하는 데 문제가 없습니다.마크 폴락이 말하는 것을 봤는데, 뭐랄까, 그 남자는 그냥 이해해요.

마지막으로, DI 프레임워크가 많이 있으며 몇 가지 샘플 프로젝트를 수행하여 교육적인 선택을 하는 것이 최선의 방법입니다.

행운을 빕니다.

닌젯으로 시작하는 것이 좋다고 생각합니다, 그것은 새롭고 미세 조정을 많이 고려했고 정말 빠릅니다.개발자인 네이트는 정말로 훌륭한 사이트와 훌륭한 지원을 가지고 있습니다.

봄입니다. 그물은 꽤 견고하지만, 서류를 통과하는 데 시간이 좀 걸렸습니다.오토팩도 좋고요.Net 2.0이 지원됩니다. 컴파일하려면 VS 2008이 필요합니다. 그렇지 않으면 명령줄을 사용하여 앱을 빌드합니다.

언급URL : https://stackoverflow.com/questions/21288/which-net-dependency-injection-frameworks-are-worth-looking-into

반응형