11

Che cos'è un contenitore IoC?IoC, AOP e altro

Che cos'è un framework IoC/DI?

Perché abbiamo bisogno di un framework per IoC/DI?

Esiste una relazione tra IoC/DI e AOP?

Che cos'è Spring.net/ninject rispetto a IoC e AOP?

+0

controlla anche questo: http://stackoverflow.com/questions/15675331/difference-between-spring-ioc-and-spring-aop – NoNaMe

risposta

4

JMSA,

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

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

I framework per IOC/DI sono utili perché forniscono meccanismi standard, ad esempio se si assolda un nuovo sviluppatore è molto più facile dire che utilizziamo questo framework e li passiamo ai collegamenti alla guida di tutorial/guida. Allo stesso tempo queste strutture sono provate e testate da una grande comunità/aziende.

Fatemi sapere se una delle vostre domande rimane senza risposta dopo aver letto l'articolo e quanto sopra risponde e farò del mio meglio per fornire ulteriore assistenza.

+0

Grazie Peter! Mi ha davvero aiutato! –

+0

Esiste una relazione tra IoC/DI e AOP? –

+0

In una certa misura c'è una relazione lì. Se si analizza l'AOP, viene applicato per lo più a problemi come Crossing e Sicurezza. In caso di registrazione, molti sviluppatori lo utilizzerebbero insieme a DI/IOC in modo che potessero cambiare i provider di registrazione (ad esempio, swap log4net alla registrazione della libreria aziendale). Ma la vera risposta è che non è necessario DI o IoC per implementare AOP e per implementare DI o IoC non è necessario utilizzare AOP. – Peter

2

Martin Fowler ha un buon articolo here sul significato di Inversione del controllo e dell'iniezione delle dipendenze.

L'utilizzo di Spring.NET AOP è descritto in dettaglio here. Sono più familiare con la versione basata su Java di Spring, quindi non posso dire con assoluta certezza che Spring.NET attualmente supporti solo AOP basato su proxy.

Cioè, una classe da consigliare deve implementare un'interfaccia. Spring creerà un proxy dinamico che implementa questa interfaccia e delega all'istanza di destinazione originale.

Anche se lo fa lo stato:

In un comunicato futuro verranno implementate proxy utilizzando eredità, che vi permetterà di classi proxy senza interfacce come bene e rimuoverà alcune delle rimanenti questioni riferimento cruda che non possono essere risolto utilizzando i proxy basati sulla composizione.

3

Da un punto di vista semantica ...

iniezione di dipendenza stessa implica una dipendenza, cioè qualcosa che è richiesto edilizia/uso ("preoccupazioni principali" dell'applicazione). Ad esempio, un'auto non è un'auto senza un motore.

Gli aspetti sono descritti come trasversali alle preoccupazioni principali dell'applicazione. Ciò significa sia distinto da e non cruciale per le preoccupazioni fondamentali (si potrebbe pensare a loro come "simpatici"). Dal momento che l'applicazione può funzionare senza aspetti, sono davvero delle dipendenze? Ad esempio, un'auto è ancora un'auto anche senza un 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 commerciabile come il nucleo centrale.)

Quindi, mentre in pratica DI può essere usato per implementare aspetti, non chiamerei quel processo vero DI . Questo proviene da qualcuno che usa esclusivamente l'iniezione del costruttore.