Microsoft Trainer e Software Architect
Sviluppatore professionista dal 2001 con VB6, SQL 2000 e Access creando applicazioni gestionali di varia natura. Passando rapidamente a .NET, windows e web, ho poi espanso le mie esperienze su Compact Framework, SQL Server Mobile ed infine BizTalk Server.
Negli ultimi anni mi sono focalizzato sempre più sullo sviluppo distribuito ed enterprise conseguendo nel contempo le seguenti certificazioni:
Microsoft Certified Trainer (MCT)Microsoft MCPD .NET 3.5 Enterprise Applications DeveloperMicrosoft MCTS .NET 3.5 WCF Applications DevelopmentMicrosoft MCTS .NET 3.5 ASP.NET Applications DevelopmentMicrosoft MCTS .NET 3.5 ADO.NET Applications DevelopmentMicrosoft MCTS .NET 3.5 Windows Applications DevelopmentMicrosoft MCTS .NET 2.0 Distributed Applications DevelopmentMicrosoft MCP .NET
Ciao a tutti
La dipendency injection è un design pattern chiamato così da Martin Fowler http://martinfowler.com/articles/injection.html basato sul concetto di Inversion of Control http://blogs.dotnethell.it/espositos/Inversion-of-Control-IoC-Hollywood-Principle__16282.aspx già conosciuto com Dipendency Inversion Principle http://www.objectmentor.com/resources/articles/dip.pdf, uno dei pattern conosciuti con l'acronimo SOLID.
Particolarmente diffuso come pattern anche grazie ai tanti framework che lo utilizzano o che ne facilitano l'implementazione come Spring, Unity, Ninject, per citarne alcuni, è in 2 parole un modo per disaccoppiare oggetti.
Con DIP in pratica si distinguono due livelli di programmazione, quella ad alto livello (la fattura viene stampata) e quella concreta dove un oggetto printer genera un vero PDF secondo come è implementato, tramite l'uso di container, classi che rappresentano un Task da effettuarsi (la stampa) in cui c'è tutta la logica necessaria per elaborare i dati necessari al task (totali, sconti, etc) e in cui viene invocata l'operazione su di un'interfaccia risolta a runtime da una Utility messa a disposizione da noi, o dal framework utilizzato, basato su file di configurazione.
Ad esempio: avendo una classe class Task{ private IPrinter _printer; public void Task(IPrinter printer) { _printer=Printer; } public void Execute() { _printer.Print(); }}
In questo caso l'injection è avvenuta a livello di costruttore, avremmo potuto usare anche una property esplicita o un interfaccia apposita.
A riciao a tutti Prendendo spunto dal "famoso" corso di Dino Esposito http://dotnetlombardia