none
Automatismos ¿Global asax?

    Question

  • Hola,

    Conocen alguna forma para generar un automatismo en una aplicación MVC sin usar servicios de windows o similares. Es decir, de la misma forma que desde una acción de controller se llama a una función pongamos "ActualizarCosas" es posible llamar a esa misma función cada cierto tiempo con un timer o similar?

    Hice algunas pruebas con el global asax, puse en el application_start un codigo que crea un timer y en el evento elapsed de este se crea un backgroundworker que ejecuta la funcion "ActualizarCosas", pero parece que no funciona o algo se me escapa.

    Luego les pego el codigo si lo requieren.

    Gracias


    Vota mi respuesta si te ha sido útil. Gracias.

    Friday, February 24, 2012 9:24 AM

Answers

  • Sí, en definitiva, viene siendo lo mismo. Lo que te iba a proponer quizás es peor que ponerlo en el Global.asax

    El problema en sí es la limitación que tienes en el hosting, por lo que el número de soluciones se reduce.

    Mírate este artículo que creo que te va a servir http://blog.stackoverflow.com/2008/07/easy-background-tasks-in-aspnet/


    "En los momentos de crisis, sólo la imaginación es más importante que el conocimiento"

    • Marked as answer by David Peláez Friday, February 24, 2012 8:56 PM
    Friday, February 24, 2012 2:52 PM
  • hola desde hace rato que vengo buscando algo como lo que propone @David, pero aun no se como hacerlo, mientras lo consigues hacer en el Global.asax, quiza podrias utilizar "Tareas Programadas", que es una función del hosting y aunque sigue siendo un tipo de usuario de tu sistema que hace llamadas al controlador, te dejara dormir sabiendo que lo que programes se realizara cuando lo determines.

    si te sirve, en el enlace que sigue Eduard Tomas me dio algunos consejos:

    Por cierto si averiguas como hacerlo bien desde el global.asax, seria de mucha ayuda si lo publicas.

    Un saludo cordial 

    • Marked as answer by David Peláez Friday, February 24, 2012 8:56 PM
    Friday, February 24, 2012 4:41 PM
  • Vaya pues segun leo en el enlace de Eduard Tomas, no hay manera de hacerlo puesto que cualquier cosa que programes es correcta, pero si IIS detecta que no hay actividad por así decirlo la aplicación se recicla y es como si no existiera hasta que alguien accede a ella.

    Con lo que amigo @Richof creo que nos quedamos sin automatismo :P


    Vota mi respuesta si te ha sido útil. Gracias.

    • Marked as answer by David Peláez Friday, February 24, 2012 8:56 PM
    Friday, February 24, 2012 5:52 PM

All replies

  • Hola David.

    Quizás en estos enlaces puedas encontrar la solución http://stackoverflow.com/questions/3863024/backgroundworker-blocking-mvc-controller-action

    Este mejor: http://forums.asp.net/t/1582292.aspx

    No obstante, no veo por qué no separas esa acción en un servicio. Tiene más sentido separarlo, ya que una aplicación web no es el entorno ideal para estas acciones.


    "En los momentos de crisis, sólo la imaginación es más importante que el conocimiento"

    Friday, February 24, 2012 12:31 PM
  • Creo que no me he explicado. La idea es que el proceso cada X tiempo se lance automaticamente sin que se haga peticiones al controller (esto implica acción de un usuario).

    Y no es viable usar un servicio de windows ya que en la máquina donde esta la aplicación web solo se puede publicar la aplicación, es uno de esos servidores compartidos superrestringidos.

    Pero de todas maneras, solamente quiero saber si usar el global asax es viable o no funciona por alguna razón, así como si se les ocurre alguna idea de última hora jeje.

    Gracias.


    Vota mi respuesta si te ha sido útil. Gracias.

    Friday, February 24, 2012 12:51 PM
  • ¿En esa máquina puedes publicar un servicio wcf? Porque esa puede ser tu solución.

    "En los momentos de crisis, sólo la imaginación es más importante que el conocimiento"

    Friday, February 24, 2012 1:03 PM
  • En teoria si, pero no es lo mismo que ejecute un hilo en el servicio wcf que en el global asax de la aplicacion mvc?

    Si no es asi, que propones para el WCF?


    Vota mi respuesta si te ha sido útil. Gracias.

    Friday, February 24, 2012 1:59 PM
  • Sí, en definitiva, viene siendo lo mismo. Lo que te iba a proponer quizás es peor que ponerlo en el Global.asax

    El problema en sí es la limitación que tienes en el hosting, por lo que el número de soluciones se reduce.

    Mírate este artículo que creo que te va a servir http://blog.stackoverflow.com/2008/07/easy-background-tasks-in-aspnet/


    "En los momentos de crisis, sólo la imaginación es más importante que el conocimiento"

    • Marked as answer by David Peláez Friday, February 24, 2012 8:56 PM
    Friday, February 24, 2012 2:52 PM
  • hola desde hace rato que vengo buscando algo como lo que propone @David, pero aun no se como hacerlo, mientras lo consigues hacer en el Global.asax, quiza podrias utilizar "Tareas Programadas", que es una función del hosting y aunque sigue siendo un tipo de usuario de tu sistema que hace llamadas al controlador, te dejara dormir sabiendo que lo que programes se realizara cuando lo determines.

    si te sirve, en el enlace que sigue Eduard Tomas me dio algunos consejos:

    Por cierto si averiguas como hacerlo bien desde el global.asax, seria de mucha ayuda si lo publicas.

    Un saludo cordial 

    • Marked as answer by David Peláez Friday, February 24, 2012 8:56 PM
    Friday, February 24, 2012 4:41 PM
  • Vaya pues segun leo en el enlace de Eduard Tomas, no hay manera de hacerlo puesto que cualquier cosa que programes es correcta, pero si IIS detecta que no hay actividad por así decirlo la aplicación se recicla y es como si no existiera hasta que alguien accede a ella.

    Con lo que amigo @Richof creo que nos quedamos sin automatismo :P


    Vota mi respuesta si te ha sido útil. Gracias.

    • Marked as answer by David Peláez Friday, February 24, 2012 8:56 PM
    Friday, February 24, 2012 5:52 PM
  • Tiene cierta logica lo que se dice en el enlace pero en el enlace de Richof más abajo, Eduard Tomas nos da a entender que una vez la aplicacion esta inactiva se recicla y en ese momento ya no se ejecutara nada automaticamente, con lo que mi gozo en un pozo pero no es posible.

    Gracias de todos modos


    Vota mi respuesta si te ha sido útil. Gracias.

    Friday, February 24, 2012 5:54 PM