Compartir objetos DTO entre servicios WCF
Pregunta
Siento que esta es una pregunta estúpida incluso antes de hacerla, pero mi cerebro no funciona demasiado bien en este momento. Tengo dos servicios WCF " CountryService " y "FloristService".
Ahora CountryService tiene el siguiente método:
IList<CountryDTO> GetAllCountries();
Además, FloristService tiene un método:
bool AddFlorist(FloristDTO florist);
Todo bien hasta ahora, pero el problema es que FloristDTO hace referencia a un CountryDTO, es decir,
public string Address1 { get; set; }
public string Address2 { get; set; }
public string Address3 { get; set; }
public string City { get; set; }
public string Postcode { get; set; }
public CountryDTO Country { get; set; }
public string Name { get; set; }
Esto está bien, pero si uso la utilidad de generación de proxy de servicio con Visual Stuidos (es decir, Agregar referencia > Agregar referencia de servicio), obtengo dos versiones de CountryDTO, es decir, FloristService.CountryDTO y CountryService.CountryDTO.
Ahora puedo pensar en algunas formas de superar esto, pero ninguna de ellas parece correcta. Me preguntaba cuál era el "correcto" El enfoque para esto sería: ¿hay algo extraño que pueda hacer con la herramienta de generación de proxy para que comparta DTO comunes?
Saludos, Chris
Solución
Puede reutilizar tipos en svcutil: http://blogs.msdn.com/youssefm/archive/2009/10/09/reusing-types-in-referenced-assemblies-with-svcutil-sr-switch.aspx
Otros consejos
Artículo " Cómo reutilizar los tipos en los puntos finales de servicio " sugiere en el lado del cliente actualizar manualmente Reference.svcmap para incluir múltiples y NamespaceMappings.
Alternativamente, svcutil le permite especificar múltiples puntos finales al mismo tiempo y utilizar los parámetros / r (/ referencia) y / n (/ espacio de nombres).