Actualmente estoy trabajando en un sitio de comercio electrónico y hay una característica que no estoy muy seguro de cómo implementarla. La mayoría de las veces solo agrega producto (s) a su carrito y los compra, ese es probablemente el flujo de trabajo más simple. Lo que estoy preguntando es un poco diferente, ¿qué pasa si hay un límite de tiempo para comprar un producto? Me refiero a que algunos sitios te dan un límite de tiempo exacto para comprar un producto (como Soccer Manager), en esos sitios no puedes tener un producto para siempre, hay un límite de 15 minutos para él y si no compras en ese período, el artículo ser liberado de su carrito (y muy probablemente otra persona saltará sobre él)¿Cómo hacer trabajos en segundo plano en un sitio ASP.NET MVC 3?
Ahora, como programador ASP.NET MVC, me encantaría implementar esta característica, pero como dije, no estoy seguro de cómo hacerlo. Creo que cuando agregue el artículo al carro necesito mantener el tiempo (algo así como ItemAddedAt) y necesito liberar ese artículo en x minutos para que algo tenga que ejecutarse x minutos más tarde para lanzar ese producto. Pensando globalmente, creo que necesito un servicio, cuando agrego un artículo, también necesito suscribirlo a este servicio y el servicio ejecuta un temporizador/trabajo en segundo plano. Lo que no sé/no tengo experiencia es esta parte, cómo hacer eso en un proyecto ASP.NET MVC, ¿hay algún proyecto de muestra, artículo, biblioteca o algo así?
Por supuesto que no sé si mi lógica es la correcta para este problema, necesito alguna guía, si es posible, algún código fuente para trabajar.
Antes que nada, gracias por la explicación detallada ^^ Creo que no preferiré el Programador de tareas de Windows porque de lo que entiendo, si uso Scheduler de esa manera, entonces necesito ejecutar ese servicio con períodos muy cortos o Habrá grandes diferencias de tiempo entre el tiempo de caducidad y el próximo tiempo de ejecución programado. En mi humilde opinión, su segunda solución es más emocionante porque le da un disparador exacto y parece que puede implementarse fácilmente, pero hay una pregunta en mi mente: ¿es CacheItemRemovedCallback lo suficientemente confiable como para usar en este tipo de soluciones? –
ese tipo de implementación recursiva también podría funcionar, pero de inmediato comencé a preocuparme por el tamaño de la pila de llamadas en este caso –
@ArtemNikolov Usamos ese código exactamente por el mismo motivo (actualmente está trabajando en un comercio electrónico, por liberando acciones), y se ha estado ejecutando durante unos 4 años, así que supongo que sí :) – salgiza