Foros del Web » Programación para mayores de 30 ;) » .NET »

Ejecutable En Asp.net

Estas en el tema de Ejecutable En Asp.net en el foro de .NET en Foros del Web. Buenos dias, necesitaria ayuda respecto a un problema que me ha surgido. Tengo desarrollada una pagina web en VS2005 y c#. Uno de los formularios ...
  #1 (permalink)  
Antiguo 28/12/2007, 11:46
 
Fecha de Ingreso: julio-2006
Mensajes: 4
Antigüedad: 17 años, 9 meses
Puntos: 0
Ejecutable En Asp.net

Buenos dias,
necesitaria ayuda respecto a un problema que me ha surgido.

Tengo desarrollada una pagina web en VS2005 y c#. Uno de los formularios realiza tratamiento de muchos registros mediante sentencias SQL contra ficheros y bases de datos, trabajando siempre en el lado servidor.

Cuando el nº de registros es normal la aplicacion funciona correctamente, pues devuelve los resultados rapidamente. Pero cuando son muchos registros (puede tardar 15 minutos a 30 minutos), el navegador no responde (se sobrepasa el timeout) y las operaciones no se realizan.

Como nota adicional el proceso es transaccional, es decir, no se asienta ningun cambio hasta que se terminan de hacer todas las operaciones.

En principio tengo dos ideas, aunque no se si son posibles.

1ª idea: Ver si existe alguna manera de controlar estos procesos tan largos que se ejecutan en el servidor, y si se pudiera visualizar su estado con una barra de progreso o algo similar (nota: estoy en asp.net con c# y IIS, es decir, en una aplicacion web).

2º opción: Para mí la ideal. Que en lugar de este formulario ASP se lanzara una miniaplicacion en el PC del usuario, como si fuera una aplicacion de escritorio, trabajando contra la base de datos en remoto. En una aplicacion de escritorio si podria utilizar controles de barra de progreso, etc, y no habria problemas con el timeout de los navegadores (iis, apache, etc).

Agradeceria si alguien se ha encontrado en una situación similar y me podria ayudar.
Muchas gracias.
Un saludo.
Rafael.
  #2 (permalink)  
Antiguo 28/12/2007, 21:17
Avatar de vevni  
Fecha de Ingreso: julio-2005
Ubicación: cancun mexico
Mensajes: 598
Antigüedad: 18 años, 9 meses
Puntos: 3
Re: Ejecutable En Asp.net

hay muchas formas de automatizar y de mejorar rendimiento, indices, formas de generar la consulta, stored procedures, etc... pork no pones parte de tu codigo en el que trabajas sobre la base de datos para ver como lo trabajas?..
__________________
Código PHP:
echo"hola mundo ver 1221332143.02";
echo
"cuantos usuarios habran impreso hola mundo en el mundo.!???"
  #3 (permalink)  
Antiguo 30/12/2007, 16:27
 
Fecha de Ingreso: julio-2006
Mensajes: 4
Antigüedad: 17 años, 9 meses
Puntos: 0
Re: Ejecutable En Asp.net

Lo que hago es que desde el fichero pagina.aspx.cs llamo a una función (externa, en una DLL) que se le pasa un fichero por parametro y devuelve un dataset con la informacion ya resuelta.

Este dataset devuelto puede tener desde unos pocos registros (40 o 50) a miles (15.000 o 20.000 registros), cada uno de ellos con su procesamiento particular.

Para la obtencion del Dataset, se lee el fichero que le paso por parametro y por cada uno de los registros calculo mas informacion (haciendo a diferentes tablas de base de datos). Para ir recorriendo cada uno de los registros, abro un while y por cada iteración sus propias consultas a base de datos y sus propios calculos.

A nivel de rendimiento, la base de datos esta bien indexada, los indices estan bien definidos y las consultas son bastante optimas (he realizado seguimientos y estan bien definidas). El problema es que cuando se tratan muchos registros, la demora es inevitable, pues es un proceso largo por si mismo.

Por lo tanto yo me planteo si es posible por cada iteración de registro que hago enviar un evento a la pagina.aspx.cs indicando que se ha recorrido un nuevo registro e indicarlo por pantalla, como un progressbar o algo similar. De esta forma el usuario sabe que se esta procesando informacion, y que el sistema no esta colgado.

Muchas gracias.
Un saludo.
Rafael.
  #4 (permalink)  
Antiguo 31/12/2007, 19:06
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 8 meses
Puntos: 87
Re: Ejecutable En Asp.net

hola rsvidal

lo que puedes hacer es crear un AsyncCallback para poder ejecutar esta operacion en otro hilo dentro del server e incluso manejar un progressbar. esto evitara q tengas problemas con el timeout.

Mezclalo con ajax para tu parte de presentacion y si es necesario crea una llamada asincrona a tu proceso para evitar la demora en la capa de presentacion.


Saludos
Peterpay
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:22.