Tengo una aplicación web donde muchos componentes están registrados usando .LifestylePerWebRequest()
, ahora he decidido implementar Quartz.NET, una biblioteca de programación de tareas .NET, que se ejecuta en hilos separados, y no en el hilo Request.Castle.Windsor lifestyle dependiendo del contexto?
Como tal, HttpContext.Current
produce null
. Mis servicios, repositorios y IDbConnection
se han instanciado hasta ahora usando .LifestylePerWebRequest()
porque facilitaba su eliminación cuando finalizaban las solicitudes.
Ahora quiero usar estos componentes en ambos escenarios, durante las solicitudes web, quiero que no se vean afectados, y en contextos sin solicitud, quiero que utilicen un estilo de vida diferente, me imagino que puedo manejar el desecho, pero ¿cómo debería hacerlo para elegir un estilo de vida para los componentes en función del contexto actual?
Actualmente me registro servicios (por ejemplo), así:
container.Register(
AllTypes
.FromAssemblyContaining<EmailService>()
.Where(t => t.Name.EndsWith("Service"))
.WithService.Select(IoC.SelectByInterfaceConvention)
.LifestylePerWebRequest()
);
Calculo que debería usar algún tipo de método de extensión pero simplemente no lo veo ..
Hay una pregunta relacionada con la ejecución de código en el fondo de una aplicación ASP.NET. La pregunta es sobre el contenedor Simple Injector DI, pero la respuesta puede ser interesante para usted: http://stackoverflow.com/a/11059491/264697. – Steven