BrightSoul ha scritto:
Quella su IoC invece l'ho trovata un po' confusa, forse erano necessari grafici ed esempi di codice più semplici e più concreti (e con un font più grande).
Spiegare certi concetti in così poco tempo non è facile, per questo ho dato spazio anche ai concetti teorici, come sempre faccio nelle mie sessioni, per dare una base su cui poter ragione a bocce ferme.
Mi dispiace comunque che la mia sessione non sia stata di tuo gradimento, cercherò di fare meglio la prossima volta.
In ogni caso gli esempi erano davvero semplici, è il tema della sessione che non è di facile digestione se uno è a digiuno di certi concetti. Mi rendo conto della difficoltà della gente a comprendere determinati aspetti, per questo cerco sempre di non usare paroloni e di rendere questi concetti molto astratti il più accessibili possibile.
A proposito di IoC, vorrei farvi una domanda sul codice di Model Virtual Casting: Unity permette di gestire il ciclo di vita degli oggetti? Ovvero... perché scrivere un HttpModule per istanziare il ContextWrapper anziché delegare questo compito allo IoC container?
Come ho spiegato durante la sessione, sia Unity che MEF consentono di gestire il lifetime degli oggetti, che comunque è legato al ciclo di vita del container.
Nel caso in discussione, l'iniezione dell'istanza dei repository di EF prevede la chiamata di un costruttore con un parametro di tipo IContextContainer.
Nel caso di un'applicazione web, il modulo HTTP permette di attivare e mantenere vivo il contesto per tutta la durata della chiamata usando la collection Items di HttpContext.
Chi istanzia implicitamente i repository è sempre l'oggetto factory usato nell'ApplicationContext e ciascun repository accede all'elemento che "contiene" il contesto EF attraverso la classe WebContextContainer.
Ciao, Ricky.