Pregunta

Estoy construyendo una aplicación. Estoy creando un cliente Silverlight 4 con la ayuda de MVVM Light. Estoy adquiriendo datos de un servicio WCF. Al menos, este es el plan.

En el servicio WCF, he definido las "entidades" que necesito usar en mi aplicación. Cuando en el cliente Silverlight agrego una referencia a mi servicio WCF, Visual Studio recrea en el lado del cliente todas las clases que estaban marcadas con el atributo [DataContract] en el servicio.

Lo que me gustaría saber es si esta es una mala práctica y si fuera mejor crear los modelos dentro del cliente. Por lo que entiendo, en el primer caso solo debería crear los modelos de vista y las vistas en el cliente de Silverlight, mientras que en el segundo caso debería crear las vistas, los modelos de vista y los modelos dentro del cliente Silverlight, y poblar las instancias de los modelos con el Valores provenientes del servicio WCF.

Gracias por tu ayuda.

Saludos, G.

ACTUALIZAR

Ok, no creo que mi pregunta haya sido lo suficientemente clara ya que no he recibido muchos comentarios. Sin embargo, me gustaría proporcionar una actualización sobre esto. La respuesta que estaba buscando es "¡No! ¡Los objetos de transferencia de datos!".

Estaba pensando en usar mis clases de entidad (las asignadas a las tablas de DB) como un contrato de datos en un servicio WCF. Agregar una referencia a este servicio WCF en un cliente también habría creado todas las clases decoradas con DataContract en el cliente.

El gran problema en mi caso es que la capa de datos se basa en Hibernate, lo que Soemtimes hace un uso extenso en el tiempo de ejecución de las clases de "proxy de datos" (ver proxy de Castle). Bueno, resultó que existe un problema de serialización con estos proxies de datos, y hasta donde entendí, el mejor enfoque es adoptar el patrón de objetos de transferencia de datos para asignar las entidades "complejas" a una clase similar pero "más" más "más" más " (el DTO).

Espero que esto pueda ayudar a alguien más.

¡Que tengas un lindo día! Gianluca.

¿Fue útil?

Solución

¿Has mirado WCF RIA con NHibernate? Sin embargo, para tratar de responder la pregunta: no intentaría devolver entidades del servicio WCF directamente, personalmente crearía DTO. Y luego probablemente mapearía esos DTO a algún tipo de modelo del lado del cliente. Entonces, eso es lo que intentaría y haría si no pudiera aprovechar RIA.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top