Domanda

Ho letto su Injection da mano e Ninjection (così come Perché usare Ninject ). Ho incontrato due pezzi di confusione:

  1. L'Inject da tecnica lato sono già familiarità con, ma non ho familiarità con Ninjection, e quindi non sono sicuro di come il programma completo avrebbe funzionato. Forse sarebbe contribuire a fornire un programma completo, piuttosto che, come avviene in quella pagina, che mostra un programma suddiviso in pezzi

  2. ho ancora davvero non capisco come questo rende le cose più facili. Penso che mi manca qualcosa di importante. Posso sorta di vedere come un quadro di iniezione sarebbe utile se si vuole creare un gruppo di iniezioni e poi il passaggio tra due grandi gruppi tutti in una sola volta (questo è utile per beffardo, tra le altre cose), ma penso che ci sia di più ad esso di quello. Ma io non sono sicuro di quello. O forse ho solo bisogno di più esempi del perché questo è entusiasmante da guidare a casa il punto.

È stato utile?

Soluzione

Quando si inietta le dipendenze senza un quadro DI si finisce con il codice freccia tutta la vostra applicazione dicendo classi come costruire le loro dipendenze.

    public Contact()
        : this(new DataGateWay())
    {
    }

Ma se si utilizza qualcosa come Ninject, tutto il codice freccia è in un posto rendendo più facile cambiare una dipendenza per tutte le classi di utilizzarlo.

internal class ProductionModule : StandardModule
{
    public override void Load()
    {
        Bind<IDataGateway>().To<DataGateWay>();
    }
}

Altri suggerimenti

  
    

ho ancora davvero non capisco come questo rende le cose più facili. Penso che mi manca qualcosa di importante.

  

Non sarebbe sarebbe bello se abbiamo avuto solo a sviluppare componenti discreti in cui ogni provvisti di funzionalità distinte potremmo facilmente capire, il riutilizzo e la manutenzione. Dove siamo solo ha lavorato su componenti.

Che cosa ci impedisce di farlo, è che abbiamo bisogno alcune infrastrutture che possono in qualche modo combinare e gestire questi componenti in un'applicazione di lavoro automaticamente . Infrastrutture che fa questo è a nostra disposizione -. Un quadro IOC

Quindi un quadro CIO non è su che gestiscono le dipendenze o prove di configurazione. Invece è su gestione della complessità, consentendo di solo il lavoro e pensare a componenti.

E 'consente di verificare facilmente il codice deridendo le interfacce di cui avete bisogno per un particolare blocco di codice. Consente inoltre di scambiare facilmente le funzionalità senza rompere altre parti del codice.

E 'tutta una questione di coesione e accoppiamento.

Probabilmente non si vedrà il vantaggio su piccoli progetti, ma una volta passato piccola diventa davvero evidente quando si devono apportare modifiche al sistema. E 'un gioco da ragazzi, quando hai utilizzato DI.

Mi piace molto l'aspetto autowiring di alcuni quadri ... quando non c'è bisogno di preoccuparsi di ciò che hanno bisogno di essere istanziati i tipi di.

Modifica Ho letto questo articolo di Ayende @ Rahien . E mi sostengo il suo punto.

iniezione Dipendenza usando maggior parte dei quadri può essere configurato in fase di esecuzione, senza richiedere una ricompilazione.

La dependency injection può ottenere davvero interessante se si ottiene il codice al punto in cui ci sono pochissimi dipendenze nel codice a tutti. Alcuni quadri iniezione di dipendenza vi permetterà di definire le dipendenze in un file di configurazione. Questo può essere molto utile se avete bisogno di un pezzo molto flessibile di software che deve essere cambiato senza modificare il codice. Ad esempio, il software di workflow è un ottimo candidato per questo tipo di soluzione.

Dependency Injection è essenziale per la Componente Driven Development . Quest'ultima permette di costruire davvero complessi le applicazioni in modo molto più efficiente e affidabile.

Inoltre, permette di separare comuni preoccupazioni trasversali pulito dal altro codice (che ciò comporta codebase più riutilizzabile e flessibile).

Link correlati:

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