Posted 05 June 2012 - 03:22 AM
Hace unos días me llego el aviso de cambios en el wiki de raudus y ya me leí lo referente a estos cambios, os lo resumo y traduzco.
Parece que Igor ha parado momentaneamente de "añadir funcionalidades" y se ha replanteado todo el conjunto para solventar dos grandisimos problemas de uso real que tenía raudus.
Por un lado, todos los eventos "onclick" y similares en el "lado delphi" se ejecutan en un único hilo, con lo que si tu código necesita digamos lanzar una SQL que tarde 10 segudos en un evento, durante esos 10 segundos todo el resto de posibles usuarios veran que el servidor no les responde: sus clicks son recibidos, pero los eventos no saltan, quedan "en cola" hasta que termine el actual.
Ahora puedes declarar que vas a iniciar una zona "paralela" -en otro hilo- hacer dentro lo que tarde mucho, y finalmente avisar de que sales de la zona "tardona".
Mientras estas dentro de esa zona, tu código va en otro hilo y el hilo principal se libera, atendiendo al resto de peticiones. Cuando tu hilo "tardon" termina, se sale de la zona y el resto de tu evento se ejecuta, mostrandole al cliente el resultado.
Como entendereis, cualquier proyecto medio serio va a necesitar "aislar" ciertas cosas para ejecutarse en paralelo, y sin esto raudus quedaba relegado a proyectos "poco ambiciosos".
El otro cambio es similar pero se refiere al reparto no del tiempo de CPU sino de la memoria: Al llevar un tiempo activo, las conexiones "caidas" se acumulaban y te quedabas sin RAM más pronto que tarde.
Ahora, tienes un timeout digamos de 100 segundos, y si el usuario no interactua en ese tiempo la aplicación se cierra y todos los recursos se liberan. Así, al final de una semana de uso, si tienes 5 usuarios actualmente activos, tienes 5 instancias de tu programa en memoria, no 500.
Lo interesante es que este timeout lo ha puesto "dinamico": Si entras a editar una ficha puedes subirlo a 1000 segundos, con lo que si se le cuelga el PC, reinicia, y vuelve a entrar, como no han pasado aun 1000 segundos, sigue viendo la ventana de edición abierta con sus datos tal como los dejó (las sesiones son "persistentes").
Vamos, que raudus hace lo mismo pero de una manera muchisimo más escalable, estable y sin bloqueos por procesos largos.