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.