2009-12-02 23 views
24

Sto utilizzando il contenitore Unity IoC. Non è stata davvero una decisione che ho preso, è arrivata solo con Prism, e l'ho appena bloccato. Non ho mai usato nessun altro framework IoC e devo ammettere che sono abbastanza contento di Unity. Tuttavia, la soddisfazione potrebbe derivare dall'ignoranza, in quanto non so davvero cosa abbiano da offrire gli altri quadri.Perché non dovrei usare Unity?

Continuo a sentire che non dovrei usare il contenitore Unity IoC. "Usa invece Castle, nInject o StructureMap", dicono le persone, ma non ho ancora sentito alcun argomento o esempio concreto sul perché dovrei usare un framework diverso. Quindi, perché non dovrei usare Unity? O forse dovrei?

+3

La risposta accettata a questa domanda StackOverflow (http://stackoverflow.com/questions/411660/enterprise-library-unity-vs-other-ioc-taintainers) è diventata un post sul blog molto dettagliato (qui, http: // elegantcode.com/2009/01/07/ioc-libraries-compared/) potrebbe essere utile. –

+0

Davvero molto utile! In qualche modo ho perso questa domanda quando cercavo quelli esistenti sull'argomento. Grazie! – stiank81

risposta

14

Questi contenitori tendono a essere circa gusti, più di ogni altra cosa. Ninject ha un'interfaccia fluida per la sua configurazione, ma alcune persone come la capacità di Unity possono essere configurate attraverso la configurazione (masochisti, credo) e il codice.

Io, come te, ho avuto queste domande quando ho adottato Prism, quindi ho svolto l'esercizio di sostituire Unity con entrambi gli strumenti Ninject e Autofac. Non ho trovato alcuna ragione convincente in termini di prestazioni o funzionalità da rispettare su Unity. Ci sono alcune cose che sono state belle in entrambe, ma hanno fatto praticamente la stessa cosa e l'hanno fatto bene.

Vorrei esaminare le caratteristiche, lo stile e la sintassi di ciascuno e decidere quale preferisci. Questa è davvero l'unica differenza ... come è si sente. In genere ci sono alcune differenze di funzionalità di base, ma la probabilità che tu ne abbia bisogno è piuttosto ridotta.

Pubblicare un aggiornamento su ciò che si decide ... Sono sempre interessato alle scoperte del mondo reale delle persone rispetto a ciò che gli utenti appassionati stanno sostenendo.

+4

Ho fatto qualche ricerca, ma per ora non ho trovato buoni motivi per non usare Unity. Quindi - la conclusione è "Se non è rotto - non aggiustarlo" - Sono rimasto con Unity. È possibile cambiarlo successivamente in caso di emergenza. Se dovessi cambiare, andrei con StructureMap. Grazie per la tua risposta! – stiank81

12

Un motivo per utilizzare Unity è se è necessario lavorare in un ambiente di media affidabilità. Da quello che ho trovato, Unity sembra molto più facile da far funzionare se il tuo codice non ha piena fiducia. Ho usato alcuni contenitori IoC e uso Unity quando ho bisogno di un medium trust.

+2

+1 - grazie per il testa a testa! –

+0

Sembra che il trust parziale per Unity non sia più supportato. http://msdn.microsoft.com/en-us/library/dd203232.aspx –