Dependency Injection and Inversion Of Control

796 views
608 views

Published on

This is a short presentation I gave back in 2008 at the UgiAlt.Net conference in Milan about inversion of control and dependency injection principles. Examples use Castle project's Windsor container.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
796
On SlideShare
0
From Embeds
0
Number of Embeds
11
Actions
Shares
0
Downloads
7
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Dependency Injection and Inversion Of Control

  1. 1. Simone Busoli14/06/2008 - Milano
  2. 2.  Comunemente DI - IoC Principi comuni di disegno software  Alta coesione  Basso accoppiamento … Basso accoppiamento  Riduzione delle dipendenze tra componenti software  Chi conosce chi? Risoluzione dipendenze tra componenti
  3. 3.  Voglio poter registrare le iscrizioni ad un evento  Persistere i dettagli dell’iscritto  Comunicare se l’iscrizione è andata a buon fine tramite mail EmailService SubscriptionService PersonRepository
  4. 4.  SubscriptionService conosce direttamente i dettagli di EmailService e PersonRepository BAD
  5. 5.  Il servizio conosce solo l’interfaccia dei componenti che utilizza GOOD
  6. 6.  Iniettare dipendenze dall’esterno rende più onerosa l’istanziazione di componenti  Necessario conoscere tutte le dipendenze
  7. 7.  Hollywood Principle  Don’t call us, we will call you! Vorrei un’istanza di SubscriptionService
  8. 8.  Entità esterna all’applicazione Configurabile Conosce le dipendenze tra i componenti ed è in grado di soddisfarle a runtime IoC Container Vorrei un’istanza di SubscriptionService Istanza completa di tutte le dipendenze
  9. 9.  Inversion of Control container open source Stabile – production ready Il container si occupa Si configura il Si richiede l’istanza di soddisfare le container (xml, boo, di un componente dipendenze e creare C#) l’istanza
  10. 10.  Configurazione Xml
  11. 11.  Codice client Molto meglio, eh? Altri containers  StructureMap  Spring.Net  Autofac  …
  12. 12.  Inversion of Control and Dependency Injection: Working with Windsor Container http://msdn.microsoft.com/en- us/library/aa973811.aspx Castle Project http://www.castleproject.org/container/ StructureMap http://structuremap.sourceforge.net

×