Aquí podría ser tu PUBLICIDAD


Mejores prácticas para consultas y Servicio WCF

votos
3

Cuál sería la mejor práctica para el siguiente escenario:

Hay una cuadrícula que se llenará y se debe cambiar de acuerdo con cada fila. Por ejemplo, hay una rejilla llena de productos, luego, según cada producto, una de las columnas se rellenará dinámicamente. ¿Es mejor devolver desde el servicio toda la tabla de detalles del producto y consultarla en el lado del cliente o tener un método en el servicio que devuelva solo los datos necesarios? Esto último significaría que si hay n productos en la red, habrá n solicitudes para ese método de servicio.

Mi dilema es que para algunos de los usuarios, la tabla será relativamente pequeña y enviarla al cliente podría no ser un gran problema, pero otros usuarios tienen una cantidad considerable de filas que se devolverían (más de 15k).

Gracias por cualquier idea que pueda aportar.

Publicado el 12/03/2009 a las 21:15
fuente por usuario Sara Fox
En otros idiomas...        العربية       

4 respuestas

votos
3

Puede hacer que su servicio implemente algún tipo de paginación y permita que el cliente solicite la cantidad de registros que desea (generalmente un índice inicial y un conteo, o algo así). Puede limitar el tamaño de la página a un cierto límite para que no tenga que atender una gran solicitud.

Usando algo como esto, debería ser capaz de encontrar un buen equilibrio entre la cantidad de llamadas que se realizan y el tamaño de los datos que se atienden en cada solicitud.

Respondida el 12/03/2009 a las 09:18
fuente por usuario Andy White


Aquí podría ser tu PUBLICIDAD


votos
1

El tema con el que se ha topado es tema de granularidad cálidamente debatido sobre la arquitectura orientada a servicios . SOA es como un mamífero místico discutido por hombres ciegos , pero ese no es realmente el punto.

La "mejor práctica" de la tendencia son los servicios de grano grueso, una desviación de los orientados a objetos. Considere sus servicios como intercambios de documentos, en los que pone todo lo que necesita para hacer las cosas.

Como ha sugerido Andy White, si los datos son demasiado grandes, necesitarías algún tipo de filtrado o paginación.

Respondida el 28/03/2009 a las 06:40
fuente por usuario Eugene Yokota

votos
0

Sugeriría crear algún tipo de ViewModel en el servidor para adaptar los datos para el cliente. Esto es similar a su segunda opción; sin embargo, no se hace fila por fila. Es una operación por lotes en el lado del servidor que prepara las columnas para que la vista no necesite ninguna lógica especial.

Siento que manipular datos del lado del cliente puede ser complicado porque hay muchas variables: navegador, sistema operativo, poder de cómputo. Usted controla el servidor, así que aproveche lo que controle tanto como sea posible.

Buena suerte.

Respondida el 12/03/2009 a las 10:23
fuente por usuario mhamrah

votos
0

Parece que la latencia de la red es el problema aquí. Si tiene 100 productos y (digamos) un tiempo de viaje redondo de 0.2 s, eso es 20 segundos para cargar todos los datos. Minimice sus llamadas de servicio tanto como sea posible y, si es necesario, reasigne los datos en una estructura más adecuada en su cliente.

Editar: Otra idea, si es posible en su situación, es comprimir los datos entre su cliente y el servicio. Eche un vistazo a esta publicación en el foro . Verá grandes ganancias si está empujando montones de XML.

Respondida el 12/03/2009 a las 09:25
fuente por usuario geofftnz