Design pattern creazionale

Dependency Injection con Ninject

Riprendendo il post introduttivo alla dependency injection, sono numerosi i pacchetti in nuget che consentono di creare injection in maniera semplice. Ninject è un dependency injector open-source per .NET e vanta un numero piuttosto cosistente di scaricamenti ed installazioni.  Alcuni dei punti di forza che vengono enfatizzati dal team di sviluppo sono la semplicità e la facilità di utilizzo.

Nello sviluppo di applicazioni Web, in particolare MVC, l’utilizzo di un dependency injector consente di realizzare velocemente soluzioni “switchando” tra repository differenti. Questo significa che è possibile realizzare applicazioni con dati “demo” facilmente testabili e successivamente passare ai dati in produzione.

Dopo avere creato una soluzione MVC (ma anche Webapi) è necessario scaricare il pacchetto di Ninject ricercandolo all’interno  di Nuget. Al momento della scrittura di questo post l’ultima versione disponibile è la 3.3.0. Il pacchetto da installare sarà Ninject.Web.Mvc  che scaricherà anche il pacchetto core necessario per garantire la compilazione della nuova applicazione.

Fino a qualche versione fa, era necessario utilizzare il file NinjectWebCommon.cs all’interno del quale effettuare la registrazione delle dipendenze. La versione 3.0 porta con sè un nuovo modo per effettuare la registrazione : la modifica del global.asax facendolo ereditare da NinjectHttpApplication. Una volta effettuata la modifica, sarà sufficiente configurare il binding tra le interfacce astratte e la loro implementazione. 

Configurazione

Di seguito il file global.asax modificato per poter utilizzare Ninject:

All’interno del metodo RegisterService(…) è presente la configurazione del binding: ogni volta che verrà indicata l’interfaccia IProducts, verrà sostituita con la reale implementazione della class Products.

Ovviamente Ninject consente di effettuare binding piuttosto complessi mantenendo la semplicità di configurazione e di utilizzo.

 

Pubblicato da

Andrea Merlin

Laureato in informatica, diversi corsi di specializzazione legati allo Sviluppo Software e alla Computer forensics. Appassionato di nuove tecnologie, amo la programmazione, la Business Intelligence e tematiche legate alla Privacy.Sempre alla ricerca di nuove idee, stimoli … e progetti da seguire!Amo trascorrere il tempo libero in Val Borbera, un piccolo angolo del Piemonte, in provincia di Alessandria.