Problema al usar un WebService

07/09/2006 - 09:03 por Asier | Informe spam
Hola grupo,

Tengo un Servicio Web, con un metodo publico que ejecuta un
procedimiento almacenado de Sql server. Este procedimiento es una select
compleja que me trae 150.000 registros de la base de datos. El servicio web
tarda en ejecutarse aproximadamente 10 segundos.

Ahora bien, cuando ejecuto el metodo del servicio web desde una
aplicacion WindowsForms, el servicio web se ejecuta igual pero al devolver
el resultado del proc almacenado en un dataset (el metodo web devuleve un
dataset) el programa se queda parado por lo menos 1 minuto.

Me gustaría saber que puede pasar, y que soluciones tengo.

Gracias y Saludos,

Asier
 

Leer las respuestas

#1 Alberto Poblacion
07/09/2006 - 09:30 | Informe spam
"Asier" wrote in message
news:
Tengo un Servicio Web, con un metodo publico que ejecuta un
procedimiento almacenado de Sql server. Este procedimiento es una select
compleja que me trae 150.000 registros de la base de datos. El servicio
web
tarda en ejecutarse aproximadamente 10 segundos.

Ahora bien, cuando ejecuto el metodo del servicio web desde una
aplicacion WindowsForms, el servicio web se ejecuta igual pero al devolver
el resultado del proc almacenado en un dataset (el metodo web devuleve un
dataset) el programa se queda parado por lo menos 1 minuto.

Me gustaría saber que puede pasar, y que soluciones tengo.



Si lo he entendido bien, tu servicio web tarda 10 segundos en traer los
150.000 registros desde el servidor de base de datos al servidor web, y
tarda 1 minuto en transferir esos mismos 150.000 registros desde el servidor
web al PC cliente.
No veo el motivo de la extrañeza. La relación de tiempos parece bastante
razonable: El protocolo que transfiere datos desde la base de datos es
sumamente compacto, mientras que la transferencia desde el servidor web al
cliente codifica los mismos datos en XML con lo cual se "inflan" muchísimo.
No es extraño que esta segunda transferencia tarde 6 veces más que la
primera, incluso sin tener en cuenta las posibles diferencias de velocidad
entre las dos redes (servidor bd <-> servidor web y servidor web <-> pc
cliente).

¿Has hecho las cuentas de cuánto mide cada registro una vez codificado
en XML? Es fácil que mida 1000 bytes. Multiplica por 150.000 registros y
resulta que para transmitir tu dataset se necesita enviar 150 Megabytes
desde el servidor al cliente. 1 minuto para transferir 150 Megabytes no me
parece que sea lento.

Preguntas similares