Domanda

Che cosa è un IoC container?

Che cosa è un IoC/DI quadro?

Perché abbiamo bisogno di un quadro per l'IoC/DI?

C'è una relazione tra Cio/DI e AOP?

Che cosa è Spring.net/ninject rispetto a Cio, e AOP?

È stato utile?

Soluzione

JMSA,

James Kovacs ha scritto un articolo fantastico che copre molte delle vostre domande mi sento di raccomandare la lettura Qui

Spring.Net, Ninject, Unità, Castello di Windsor, Autofac sono tutti i contenitori del CIO che sono configurabili in modi diversi, molti di loro anche supportano AOP.

Cornici da IOC / DI sono utili perché forniscono meccanismi standard, ad esempio se si stanno assumendo un nuovo sviluppatore è molto più facile da dire, usiamo questo quadro e passiamo loro i collegamenti alla guida / aiuto esercitazioni. Allo stesso tempo, questi quadri sono provati e testati da una vasta comunità / società.

Fatemi sapere se le tue domande rimangono senza risposta dopo aver letto l'articolo e le answes sopra e farò del mio meglio per fornire ulteriore assistenza.

Altri suggerimenti

Da una semantica punto di vista...

L'Iniezione di dipendenza implica di per sé un dipendenza, cioèqualcosa che è richiesto per la costruzione/utilizzo (l'applicazione del "centro delle preoccupazioni").Per esempio, una macchina non è una macchina senza motore.

Gli aspetti sono descritti come essendo trasversali di base dell'applicazione preoccupazioni.Che significa sia separato e non cruciali al centro delle preoccupazioni (si potrebbe pensare a loro come "nice-to-have").Dal momento che l'applicazione può essere eseguita senza aspetti, sono davvero dipendenze?Per esempio, una macchina è ancora l'auto anche senza immobilizzatore.

(Naturalmente, questo è da un punto di vista teorico.Nel mondo reale le questioni, come la sicurezza sono spesso cruciali per l'esistenza di un prodotto commerciale come il nucleo riguarda se stessi.)

Così, mentre nella pratica DI può essere utilizzato per implementare gli aspetti, non lo chiamerei il processo vero DI.Questo è venuta da qualcuno che utilizza l'iniezione del costruttore esclusivamente.

Martin Fowler ha un buon articolo qui sul significato di Inversion of Control e Dependency Injection.

Utilizzo

Spring.NET AOP è descritto dettagliatamente qui . Sono più familiarità con la versione Java-based di primavera, quindi non posso dire con assoluta certezza che Spring.NET attualmente supporta solo AOP basata su proxy.

Cioè, una classe di essere informati deve implementare un'interfaccia. Primavera creerà un proxy dinamica che implementa questa interfaccia e delegati per l'istanza di destinazione originale.

Anche se lo fa lo stato:

  

In una versione futura implementeremo i proxy utilizzando eredità, che vi permetterà di classi proxy senza interfacce come bene e rimuoveremo alcune delle rimanenti questioni riferimento grezza che non possono essere risolti utilizzando proxy di composizione a base.

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