Vra

Watter C # /. NET Afhanklikheid inspuiting raamwerke is die moeite werd om te kyk na? En wat kan jy sê oor hul kompleksiteit en spoed.

Was dit nuttig?

Oplossing

wysig (nie deur die skrywer): Daar is 'n omvattende lys van die IOC raamwerke beskikbaar by https://github.com/quozd/awesome-dotnet/blob/master/README.md#ioc :

  • Castle Windsor - Castle Windsor is die beste van ras, volwasse Inversie van beheer houer beskikbaar vir NET en Silver
  • Eenheid - Liggewig extensible afhanklikheid inspuiting houer met die ondersteuning vir konstruktor, eiendom, en metode oproep inspuiting
  • Autofac - 'N verslawende NET IoC houer
  • DryIoc -. Eenvoudige, vinnige al ten volle featured IoC houer
  • Ninject - Die ninja van NET afhanklikheid inspuiters
  • StructureMap - Die oorspronklike IoC / DI Container vir Net
  • Spring.Net - Spring.NET is 'n oop bron aansoek raamwerk wat gebou maak onderneming NET aansoeke makliker
  • LightInject - 'n ultra liggewig IoC houer
  • Eenvoudige injection - Eenvoudige injection is 'n maklik-om-te gebruik Afhanklikheid inspuiting (DI) biblioteek vir. NET 4 + dat Silver 4 + ondersteun, Windows Phone 8, Windows 8 insluitend Universal programme en Mono.
  • Microsoft.Extensions.DependencyInjection -. Die verstek IoC houer vir ASP.NET Core programme
  • Scrutor -. Vergadering skandering uitbreidings vir Microsoft.Extensions.DependencyInjection
  • VS MEF -. Bestuurde Uitbreidings Framework (MEF) implementering gebruik word deur Visual Studio
  • TinyIoC - 'N maklik om te gebruik, moeitevrye, Inversie van beheer Container vir klein projekte, biblioteke en beginners gelyk.

Original antwoord volg.


Ek dink ek kan die feit dat hier 'n bietjie kieskeurig, maar dit is belangrik om daarop te let dat DI (Afhanklikheid inspuiting) is 'n programmeertaal patroon en word moontlik gemaak deur, maar is dit nie nodig, 'n IoC (Inversie van beheer) raamwerk. IoC raamwerke net maak DI baie makliker en hulle bied 'n gasheer van ander voordele bo en behalwe DI.

Dit gesê, ek is seker dit is wat jy is te vra. Oor IoC raamwerke; Ek gebruik om te gebruik Spring.Net en CastleWindsor 'n baie, maar die werklike pyn in die agter was al daardie orige XML config jy moes skryf! Hulle is pretty much al beweeg so nou, so ek het al met behulp StructureMap vir die laaste jaar of so, en aangesien dit het verskuif na 'n vlot config gebruik van sterk getik generiese en 'n register, my pyn versperring in die gebruik van IoC het gedaal tot onder vriespunt! Ek kry 'n absolute skop uit die wete noudat my IoC config nagegaan tydens kompilering-time (vir die grootste deel) en ek het niks anders as vreugde gehad met StructureMap en sy spoed. Ek sal nie sê dat die ander was traag tydens looptyd, maar hulle was meer moeilik vir my om te installeer en frustrasie dikwels het die dag.

Update

Ek het al met behulp Ninject op my nuutste projek en dit het 'n absolute plesier om te gebruik nie. Woorde faal my 'n bietjie hier, maar (soos ons sê in die Verenigde Koninkryk) hierdie raamwerk is 'die honde. Ek sou raai dit vir enige groen velde projekte waar jy wil en vinnig hardloop nie. Ek het alles wat ek nodig het van 'n fantastiese stel Ninject screencasts deur Justin Etheredge. Ek kan nie sien dat retro-pas Ninject in bestaande kode wat 'n probleem nie, maar dan dieselfde kan gesê word van StructureMap in my ondervinding. Dit sal 'n moeilike keuse vorentoe tussen dié twee wees, maar ek wil eerder kompetisie as stagnasie het en daar is 'n ordentlike bedrag van gesonde kompetisie daar buite.

Ander IoC screencasts kan ook gevind word hier op Dimecasts .

Ander wenke

Dit hang af van wat jy op soek is na, want hulle het elk hul voor-en nadele.

  1. Spring.NET is die mees volwasse as dit kom uit die lente van die Java wêreld. Lente het 'n baie ryk versameling van raamwerk biblioteke wat strek dit tot die web, Windows, ens te ondersteun.
  2. Castle Windsor is een van die mees gebruikte in die NET platform en het die grootste ekosisteem, is hoogs konfigureerbare / extensible, het persoonlike leeftyd bestuur, AOP ondersteuning, het inherente NHibernate ondersteuning en is 'n rondom ongelooflike houer. Windsor is deel van 'n hele stapel wat Monorail, Active Record, ens NHibernate self bou op die top van Windsor sluit.
  3. Structure Map het 'n baie ryk en fyn korrelige opset deur 'n interne DSL.
  4. Autofac is 'n IoC houer van die nuwe era met al is dit inherent funksionele programmering ondersteuning. Dit neem ook 'n ander benadering op bestuur leeftyd as die ander. Autofac is nog baie nuut, maar dit stoot die bar op wat moontlik is met IoC.
  5. Ninject Ek het gehoor is meer kaal bene met 'n minder is meer benadering (gehoor nie ervare).
  6. Die grootste diskriminator van Unity is: dit is uit en ondersteun deur Microsoft (p & p). Eenheid het 'n baie goeie prestasie, en 'n groot dokumentasie. Dit is ook hoogs konfigureerbare. Dit hoef nie al die klokkies en fluitjies van seggenskap Castle / Struktuur Kaart.

So in opsomming, dit hang af van wat vir jou belangrik is, is. Ek sou met ander aan die gang en die evaluering en sien watter een pas saamstem. Die nice ding is jy 'n lekker keuse van oliebolle eerder as om net met 'n jellie een het.

Autofac. https://github.com/autofac/Autofac Dit is regtig 'n vinnige en redelik goed. Hier is 'n skakel met vergelykings (gemaak nadat Ninject n geheugenlek kwessie vaste).

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

Ninject is groot. Dit lyk regtig vinnig, maar ek het nie enige vergelykings gedoen. Ek weet Nate, die skrywer, het 'n paar vergelykings tussen Ninject en ander DI raamwerke en is op soek na meer maniere om die spoed van Ninject verbeter.

Ek het baie van die mense hoor ek respekteer sê goeie dinge oor StructureMap en CastleWindsor. Diegene, in my gedagtes, is die groot drie kyk na nou.

Ek gebruik Eenvoudige injection :

  

Eenvoudige injection is 'n maklike, buigbare en vinnige afhanklikheid inspuiting biblioteek wat die beste praktyk gebruik om jou oplossings te lei in die rigting van die put van sukses.

Ek is 'n groot fan van Castle. Ek is lief vir die fasiliteite wat dit bied ook buite die IOK Container storie. Dit simplfies regtig met behulp van NHibernate, aan te meld, AOP, ens Ek gebruik ook Binsor vir opset met Boo en het regtig verlief geraak Boo as 'n taal as gevolg van dit.

Ek kan raai Ninject. Dit is ongelooflik vinnig en maklik om te gebruik, maar net as jy nie XML opset nodig, anders moet jy Windsor gebruik.

Ek het die grootste deel van 'n dag sukkel sonder sukses om die eenvoudigste Spring.NET voorbeeld werk te kry. Kon nooit uitvind hoe om dit te kry om my vergadering van die XML-lêer te vind. In ongeveer 2 uur, aan die ander kant, was ek in staat was om te kry Ninject werk, insluitend die toets van integrasie met beide NUnit en MSTest.

Ek het Spring.NET gebruik in die verlede en het groot sukses met dit. Ek het nog nooit opgemerk 'n aansienlike oorhoofse daarmee, al is die projek wat ons gebruik dit op redelik swaar op sy eie was. Dit het net 'n bietjie tyd te lees deur die dokumentasie om dit opgestel te kry.

Die groot ding oor C # is dat dit na 'n pad geslaan deur die jare van Java-ontwikkelaars voor dit. So, my raad oor die algemeen wanneer jy soek na instrumente van hierdie aard, is om te kyk vir die soliede Java antwoord en kyk of daar 'nog 'n NET aanpassing.

So wanneer dit kom by DI (en daar is so baie opsies wat daar is, dit is regtig 'n kwessie van smaak) is Spring.NET . Daarbenewens, dit is altyd raadsaam om die mense te vors agter projekte. Ek het geen probleem wat daarop dui SourceGear produkte vir bron beheer (buite die gebruik van hulle), want ek het baie respek vir Eric sink. Ek het gesien hoe Mark Pollack praat en wat kan ek sê, die man net kry dit.

Op die ou end, daar is 'n baie DI raamwerke en jou beste bet is om 'n paar voorbeelde projekte te doen met 'n paar van hulle en maak 'n opgevoede keuse.

Sterkte!

Ek dink 'n goeie plek om te begin is met Ninject, dit is 'n nuwe en in ag baie van fine tuning geneem en is baie vinnig. Nate, die ontwikkelaar, het werklik 'n groot terrein en groot ondersteuning.

Spring.Net is baie soliede, maar die dokumentasie het 'n geruime tyd om deur Wade. Autofac is goed, en terwyl NET 2.0 word ondersteun, moet jy VS 2008 om dit op te stel, of anders gebruik die command line aan jou program te bou.

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top