Hola Arlen,

2011/6/1 Arlen <[email protected]>

> ¿Los DTO deberian soportar la navegacion entre entidades? No se muy
> bien como se le llama a esto. Pero es que si tengo una entidad Usuario
> y otra Rol, por ejemplo, a traves del usuario puedo navegar hasta el
> rol o referenciar el rol. Disculpen mi mala explicacion.
>

Los DTOs debe estructurarse en funcion de las necesidades del consumidor *de
ese webservice en particular*. en otras palabras, cada servicio o familia de
servicios, deberian tener su propio juego de DTOs.

Dentro de esa estructura de DTO pueden tener cualquier estructura, sin
embargo suele buscarse la simplificacion o aplanamiento de la estructura (lo
contrario de un modelo muy profundo).


¿Donde deberia ubicar los DTO en la capa de datos o en la de negocio?
>

Ninguna de las dos, los DTOs deben estar bien cerca del servicio al que
asisten, entonces, deben estar en la capa de servicios. Incluso, ante algun
cambio de la version del servicio, deberias prever un cambio completo del
juego de DTOs



> ¿Es factible crear varios DTO de una misma entidad? ¿Como aseguro que
> si la entidad que representa cambia el DTO correspondiente cambie?
>

Si, si tenes varias "familias de servicios" cada una deberia tener su propio
juego de DTOs ajustados a las necesidades de los servicios y sus clientes.
Con respecto al cambio, usualmente se busca lo contrario. Uno no quiere
cambiar las interfaces de los servicios externos ante cada cambio del modelo
interno o, por lo menos, uno desea desacoplar eficazmente cambios en ambos
entornos.
Por supuesto, cuando cambia el modelo interno seguramente debe cambiar el
codigo de mapeo entre ese modelo interno y los DTOS, pero los DTOs no
cambian.

Por ejemplo, en los servicios publicos (XML webservices), comienzo con una
estrucura mas o menos asi:

{webroot}/Clima/v1/Hoy.asmx
{webroot}/Clima/v1/DTOs/Temperatura.cs
{webroot}/Clima/v1/DTOs/Viento.cs

Luego, cuando llega la version 2 del servicio, duplico todo y hago los
cambios necesarios y promuevo gentilmente los clientes de la version 1 a la
2.

----------------------------------
Carlos Peix

-- 
Para escribir al Grupo, hágalo a esta dirección: 
[email protected]
Para más, visite: http://groups.google.com/group/NHibernate-Hispano

Responder a