Tenemos un servicio WCF que se utiliza para consultar un almacén de datos subyacente (SQL Server 2005 en este momento). Este servicio puede devolver cantidades bastante grandes de datos; 60000+ instancias de nuestra clase de entidad que contiene ~ 20 propiedades. Las propiedades son en su mayoría primitivas, como string, int, DateTime con un par apuntando a otras entidades que a su vez pueden apuntar a otras; esas jerarquías no son muy profundas sin embargo.¿La mejor práctica para el servicio WCF con grandes cantidades de datos?
Una aplicación que consume este servicio normalmente realizará consultas que devuelven solo un número razonable de entidades (desde unas pocas instancias hasta un par de miles). Pero de vez en cuando hará una consulta que devolverá una gran cantidad como se indicó anteriormente (y deberá procesar esos datos, por lo que no es una opción restringir los criterios de consulta).
Lo que queremos hacer es introducir algún tipo de funcionalidad de "paginación", donde el cliente puede llamar al servicio y recuperar un cierto número de instancias, luego volver a llamar y obtener el siguiente fragmento, etc. se obtiene el resultado completo Al no haber trabajado mucho con WCF, no estoy seguro de la mejor manera de lograrlo.
Una cosa que tal vez se debe tener en cuenta es que los datos subyacentes pueden cambiar al obtener los fragmentos. No estoy seguro de si esto es un problema para nosotros o no (necesitamos investigarlo un poco), pero podría serlo, por lo que cualquier comentario sobre el manejo de esa situación particular también es bienvenido.
Hemos comenzado a buscar la transmisión de la respuesta, pero también nos gustaría ver ejemplos de paginación, ya que es posible que deseemos comenzar a procesar los datos antes de recibir el resultado completo.
Entonces, la pregunta en resumen: ¿hay una mejor práctica para este tipo de escenario (o cualquier no-no absoluta que debemos tener en cuenta)?
Fredrik- has visto esto- http://stackoverflow.com/questions/741413/implementing-pager-through-wcf-service- un poco básico, aunque – RichardOD
@RichardOD: gracias por el enlace. Creo que tenemos que atacar esto en un nivel más bajo que eso, pero le daré un tiempo de experimentación. –