Ahora estoy usando Ninject 2.2.1.4, con mi MVC3, tengo éxito en configurar Ninject correr con él, pero no sé cómo hacer que Ninject funcione con Quartz.Net en mi MVC3 ¿Alguien me puede ayudar?ASP.Net MVC 3, Ninject y Quartz.Net - ¿Cómo?
13
A
Respuesta
20
Crear un JobFactory que utiliza Ninject
public class NinjectJobFactory : IJobFactory
{
private readonly Func<Type, IJob> jobFactory;
public NinjectJobFactory (Func<Type, IJob> jobFactory)
{
this.jobFactory = jobFactory;
}
public IJob NewJob(TriggerFiredBundle bundle)
{
return this.jobFactory(bundle.JobDetail.JobType);
}
}
y una QuarzSchedulerProvider
public class QuartzSchedulerProvider : Provider<IScheduler>
{
private readonly IJobFactory jobFactory;
private readonly IEnumerable<ISchedulerListener> listeners;
private readonly ISchedulerFactory schedulerFactory;
public QuartzSchedulerProvider(
ISchedulerFactory schedulerFactory,
IJobFactory jobFactory,
IEnumerable<ISchedulerListener> listeners)
{
this.jobFactory = jobFactory;
this.listeners = listeners;
this.schedulerFactory = schedulerFactory;
}
protected override IScheduler CreateInstance(IContext context)
{
var scheduler = this.schedulerFactory.GetScheduler();
scheduler.JobFactory = this.jobFactory;
foreach (var listener in this.listeners)
{
scheduler.AddSchedulerListener(listener);
}
return scheduler;
}
}
y una SchedulerFactoryProvider
public class QuartzSchedulerFactoryProvider : Provider<ISchedulerFactory>
{
protected override ISchedulerFactory CreateInstance(IContext context)
{
var properties = new NameValueCollection();
properties["quartz.dataSource.DataSource.connectionString"] = "Your connection string";
properties["quartz.dataSource.DataSource.provider"] = "Your provider";
properties["quartz.jobStore.type"] = "Quartz.Impl.AdoJobStore.JobStoreTX, Quartz";
properties["quartz.jobStore.driverDelegateType"] = "Quartz.Impl.AdoJobStore.StdAdoDelegate, Quartz ";
properties["quartz.jobStore.tablePrefix"] = "QRTZ_";
properties["quartz.jobStore.dataSource"] = "DataSource";
properties["quartz.jobStore.useProperties"] = "true";
return new StdSchedulerFactory(properties);
}
}
y configurar
Bind<IJobFactory>().To<NinjectJobFactory>();
Bind<ISchedulerFactory>().ToProvider<QuartzSchedulerFactoryProvider>();
Bind<IScheduler>().ToProvider<QuartzSchedulerProvider>().InSingletonScope();
Bind<Func<Type, IJob>>().ToMethod(ctx => t => (IJob)ctx.Kernel.Get(t));
Si necesita ISchedulerListener p. Ej. para el registro, únelos aquí también.
Inyecte una instancia de IScheduler donde desee agregar Trabajos y lo más probable es que también tenga que realizar la inyección de propiedad de una instancia en global.asax. Pero tenga en cuenta que aún no he usado Quarz en contexto MVC ya que creo que las tareas programadas no pertenecen a una aplicación web sino a un servicio que se ejecuta en el mismo servidor.
Cuestiones relacionadas
- 1. ASP.NET MVC 3 Ninject suscripciones personalizado y proveedor de funciones
- 2. Autorización personalizada MVC 3 y Ninject IoC
- 3. Asp.net Mvc: Ninject - IPrincipal
- 4. Quartz.NET, NH ISession & Ninject Scope
- 5. Ninject + ASP.NET MVC + InRequestScope
- 6. Ninject con formularios web ASP.Net y MVC
- 7. Quartz.Net - Cada 3 meses
- 8. MVC 3 Dependency Resolver o Ninject MVC plugin?
- 9. Cómo usar Quartz.net con ASP.NET
- 10. Ninject 2 y MVC 2.0
- 11. ASP.NET MVC 3 y NHibernate Scaffolding
- 12. ASP.NET MVC 3 RC y Azure?
- 13. MVC Base Controller y Ninject
- 14. ASP.Net MVC 3 & System.Data.Entity?
- 15. ASP.NET MVC 3 Custom RouteBase y OutputCache
- 16. ¿Cómo paso un objeto al constructor de mi VIewModel? ASP.NET MVC 3, Ninject
- 17. Diferencia entre ASP.NET MVC 1 y 3
- 18. ASP.NET MVC 3 y jquery.unobtrusive-ajax.min.js
- 19. ¿Diferencia entre ASP.NET MVC 3 y 4?
- 20. Manejo de errores en asp.net mvc 3
- 21. Enterprise ASP.NET MVC 3 esquema de arquitectura
- 22. ¿Cómo crea Ninject el controlador en ASP.NET MVC?
- 23. ¿Cómo consigo ninject 2.0 trabajando con asp.net mvc 2?
- 24. ¿Cómo trabajo con Ninject en una aplicación web ASP.NET MVC?
- 25. DropDownList en ASP.NET MVC 3
- 26. ASP.NET MVC 3 HiddenFor Javascript
- 27. 404 Error ASP.NET MVC 3
- 28. ASP.NET MVC 3, cómo hacer temas bien
- 29. ASP.NET MVC 4 rompe ASP.NET MVC 3 proyectos
- 30. ASP.NET MVC 3 personalizada Autorización
Muchas gracias Remo :), permítanme probarlo –
@Remo: si this.ResolutionRoot en la parte superior, ¿es this.kernel o tenía la intención de cambiar el nombre de la var? (¿O algo de ResolutionRoot está en IJobFactory?) –
Sí, tienes razón. No cambié el nombre de todo cuando lo copié de mi solución. Normalmente uso IResolutionRoot en lugar de IKernel. –