Passando un po 'di tempo a spulciare la documentazione, sto cercando di capire la migliore architettura software con o senza dispose pattern
.
Ho costruito il Repository pattern
molte volte nel corso degli anni, utilizzando il dispose pattern
che è conforme alle "best practice". Uso attivamente Ninject
in cui è presente la configurazione come segue:
/// <summary>
/// Starts the application
/// </summary>
public static void Start()
{
DynamicModuleUtility.RegisterModule(typeof(OnePerRequestHttpModule));
DynamicModuleUtility.RegisterModule(typeof(NinjectHttpModule));
bootstrapper.Initialize(CreateKernel);
}
/// <summary>
/// Load your modules or register your services here!
/// </summary>
/// <param name="kernel">The kernel.</param>
private static void RegisterServices(IKernel kernel)
{
Bind<DBContext>().ToSelf().InRequestScope();
}
Come puoi vedere, abbiamo "OnePerRequestHttpModule" e "InRequestScope" per il Contesto DB, partendo dal presupposto che il "chiamante" di un oggetto che implementa il IDisposable
sia responsabile per lo smaltimento di quell'oggetto.
Ho mai bisogno di dispose
di un oggetto se è Ninject
s responsabilità?
Ho più repository naïve che inietta il contesto in fase di esecuzione, con uno per richiesta http e il contesto di "in ambito di richiesta", quindi il contesto viene passato in giro nella vita di una richiesta.
La gioia di trovare una comprensione più profonda.