Escenario típico. Utilizamos los servicios web XML de la vieja escuela internamente para la comunicación entre una granja de servidores y varios clientes locales y distribuidos. No participan terceros, solo nuestras aplicaciones las utilizamos nosotros y nuestros clientes.WCF - Objetos de dominio e IExtensibleDataObject
Actualmente estamos pensando en pasar de XML WS a un modelo WCF/basado en objetos y hemos estado experimentando con varios enfoques. Uno de ellos implica transferir los objetos de dominio/agregados directamente sobre el cable, posiblemente invocando los atributos de DataContract en ellos.
Al usar IExtensibleDataObject y un DataContract usando la propiedad Order en los DataMembers, deberíamos poder hacer frente a problemas simples de control de versiones de propiedades (recuerde, controlamos todos los clientes y podemos forzarlos a actualizarlos fácilmente).
Sigo oyendo que debemos usar Objetos de Transferencia de Datos (DTO) dedicados y de solo transferencia a través del cable.
¿Por qué? ¿Todavía hay una razón para hacerlo? Usamos el mismo modelo de dominio del lado del servidor y del lado del cliente, por supuesto, el llenado de colecciones, etc. solo cuando se considera correcto y "necesario". Las propiedades de recopilación utilizan el principio de localizador de servicios e IoC para invocar un "servicio" basado en NHibernate para obtener datos directamente (en el lado del servidor) y un cliente de "servicio" WCF en el lado del cliente para hablar con la granja de servidores WCF.
Entonces, ¿por qué tenemos que usar DTO?
Sí, akmad, estos son exactamente el tipo de pensamientos que he tenido, también. Probablemente vamos por un enfoque que mezcle un poco esto, transfiriendo "entidades" puras cuando corresponda, pero haciendo un formato de "mensaje" más basado en comandos para llamadas más puras del tipo de proceso de negocio. – HenningK