Domanda

Ho assolutamente bisogno di utilizzare un contenitore IoC per disaccoppiare le dipendenze in un sistema di servizi aziendali sempre più complesso.Il problema che sto affrontando è relativo alla configurazione (akaregistrazione).Al momento disponiamo di 4 ambienti diversi: dallo sviluppo alla produzione e in mezzo.Questi ambienti presentano numerose configurazioni che variano leggermente da ambiente ad ambiente;tuttavia, in tutti i casi quello Al momento mi viene in mente, le dipendenze tra i componenti non differiscono da ambiente a ambiente, anche se potrei essermi perso qualcosa e/o questo potrebbe ovviamente cambiare.

Quindi, la domanda finale è: qualcuno ha un'esperienza simile utilizzando un framework IoC?Oppure qualcuno può consigliare un framework rispetto a un altro che fornisca una registrazione flessibile attraverso una sorta di convenzione o informazioni di configurazione semplificate?Sarei ancora in grado di beneficiare di un'interfaccia fluente o sono bloccato con XML: vorrei evitare l'inferno di XML.

Modificare: Questo è un ambiente .Net e ho esaminato Windsor, Ninject e Autofac.Sembra che ora supportino tutti entrambi i metodi di registrazione (fluent e XML), sebbene il supporto di Autofac per le espressioni lambda sembri leggermente diverso dagli altri.Qualcuno lo usa in un ambiente multi-distribuzione simile?

È stato utile?

Soluzione

Io uso Non iniettare.Mi piace il fatto di non dover utilizzare Xml per configurare le dipendenze.Posso semplicemente usare direttamente il codice C#.Ci sono molteplici modi di farlo anche.So che altre librerie hanno questa funzionalità, ma Ninject offre un'istanziazione rapida, è piuttosto leggero, ha associazione condizionale, supporta framework compatto e supporta Silverlight, 2.0.Sopra di esso utilizzo anche un wrapper, nel caso in cui lo sostituissi con un altro framework in futuro.Dovresti assolutamente provare Ninject quando decidi un framework.

Altri suggerimenti

Se vuoi astrarre il tuo contenitore ed essere in grado di usarne di diversi, cerca di renderlo iniettabile nel modo in cui ho provato a farlo Qui

Non sono sicuro che sia adatto al tuo caso particolare, non hai menzionato su quale piattaforma stai lavorando, ma ho avuto un grande successo con Quadro del CIO di Castle Windsor.Le dipendenze sono impostate nel file di configurazione (è un framework .NET)

Guarda i rinoceronti comuni di Ayendes.Utilizza un'astrazione sul contenitore IoC.In modo che tu possa cambiare contenitore quando vuoi.Qualcosa come container.Resolve è sempre presente in ogni contenitore.

Utilizzo Structuremap per fare il lavoro sporco, ha un'interfaccia fluida e le cose XML ed è abbastanza potente per la maggior parte delle cose che vuoi fare.Ognuno ha i suoi pro e contro, quindi un po' di astrazione in modo da poter cambiare facilmente (non si sa mai per quanto tempo rimarranno in giro) è positivo.Per il resto penso che Spring.Net, Castle Windsor, Ninject e StructureMap non siano più così distanti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top