Pregunta

Estoy buscando insertar mi modelo de dominio en una API de servicio WCF y quería tener algunas ideas sobre las técnicas de carga diferida con este tipo de configuración.

¿Alguna sugerencia al adoptar este enfoque?


cuando implementé esta técnica y entré en mi aplicación, justo antes de que el servidor devolviera mi lista, llega a la obtención de cada propiedad que se supone que debe cargarse de forma diferida...Por tanto, carga ansiosa.¿Podría explicar este problema o sugerir una solución?

Editar:Él aparece puede utilizar el atributo XMLIgnore para que no se vea durante la serialización.Aunque sigo leyendo sobre esto.

¿Fue útil?

Solución

En cuanto a cualquier arquitectura remota, querrá evitar cargar un gráfico de objetos completo "por el cable" de forma incontrolada (a menos que tenga una cantidad trivialmente pequeña de objetos).

El Artículo de Wikipedia tiene las técnicas estándar bastante resumidas (y en C#.¡también!).He usado tanto fantasmas como poseedores de valores y funcionan bastante bien.

Para implementar este tipo de técnica, asegúrese de separar estrictamente las preocupaciones.En el servidor, las clases de implementación de su contrato de servicio deben ser los únicos bits del código que funcionan con contratos de datos.En el cliente, la capa de acceso al servicio debe ser el único código que funcione con los servidores proxy.

Capas como esta le permiten ajustar la forma en que se implementa el servicio de manera relativamente independiente de las capas de la interfaz de usuario que llaman al servicio y del nivel empresarial al que se llama.¡También te da la mitad de posibilidades de realizar pruebas unitarias!

Otros consejos

No realice carga diferida a través de una interfaz de servicio.Defina DTO explícitos y consúmelos como contratos de datos en WCF.

Puede utilizar NHibernate (u otros ORM) para recuperar correctamente los objetos que necesita para construir los DTO.

Podrías intentar usar algo basado en REST (p. ej. Servicios de datos ADO.NET) y envuélvalo de forma transparente en su código de cliente.

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