Voglio usare Ninject nella mia applicazione Windows e voglio sapere se ci sono buone pratiche che posso fare; strategie per trovare un equilibrio tra prestazioni e manutenzione.Ninject with Windows Application
Il problema con l'applicazione Windows e l'applicazione Web è che nell'applicazione Web esiste un ambito facile da definire che è il contesto ma con l'applicazione Windows, non esiste un ambito che sia facile da usare modulo dopo modulo.
Ad esempio, ho un servizio che interroga il database. Questo servizio ha un costruttore e ha ricevuto un UnitOfWork. Con Ninject, posso creare una proprietà contrassegnata come da iniettare, ma se lo faccio, ogni volta che creerò questo servizio, verrà creata una nuova connessione al database.
Proprio per questo motivo, devo creare manualmente i miei servizi per controllare il numero di connessione creata e non è possibile utilizzare alcun injector di dipendenza.
Ho scoperto che è possibile chiamare il metodo Inject dopo aver creato il servizio per inject dependencies ma sono sicuro di poter utilizzare una strategia migliore.
+1 e relativo link http://kohari.org/2009/03/06/cache-and-collect-lifecycle-management-in-ninject-20/ è una lettura obbligata per comprendere gli obiettivi di Ninject 2.0 –
Dopo aver letto gli articoli collegati, ora capisco meglio come posso controllare la durata degli oggetti dipendenti iniettati. Questo è buono ma senza una grande architettura, può essere difficile da mantenere. Sembra che pochissime persone sul web diano trucchi su come progettare una buona applicazione Windows e su come avviare l'ambito dell'oggetto in Winform tenendo sempre presente che molte altre forme possono funzionare insieme. Uso LightSpeed di Mindscape e UnitOfWork utilizza la cache e quando si hanno molte winform che funzionano insieme, i dati devono spesso essere condivisi. Qualsiasi corpo ha un campione concreto di progetto? – Samuel
@ Samuel, Per essere onesti, non ho visto molto in termini di applicazioni di esempio concrete che mostrano Windows Form con ORM e UnitOfWork utilizzati in un'applicazione ben progettata. Certamente mi piacerebbe vederli da solo se potessi mai trovarne. –