Compartilhar DTO objetos entre os serviços WCF
Pergunta
Eu sinto que esta é uma pergunta estúpida, mesmo antes de perguntar, mas meu cérebro não está funcionando muito bem agora. Eu tenho dois serviços WCF "CountryService" e "FloristService".
Agora CountryService tem o seguinte método:
IList<CountryDTO> GetAllCountries();
Além disso, FloristService tem um método:
bool AddFlorist(FloristDTO florist);
Tudo bem até agora, mas o problema é que as referências FloristDTO um CountryDTO i.
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; }
Isso é bom, mas se eu usar o gerador de proxy de serviço util com Stuidos Visuais (ou seja Add Reference> Adicionar Serviço de Referência), então eu obter duas versões do CountryDTO são criados i.e.FloristService.CountryDTO e CountryService.CountryDTO.
Agora eu posso pensar em algumas maneiras de superar isso, mas nonw deles parece certo. Fiquei imaginando o que a abordagem "correta" para isso seria, há algo descolados que posso fazer com a ferramenta de geração de proxy para torná-lo compartilhar DTOs comuns?
Cheers, Chris
Solução
Você pode reutilizar tipos de svcutil: http://blogs.msdn.com/youssefm/archive/2009/10/09/reusing-types-in-referenced-assemblies-with-svcutil-sr-switch.aspx
Outras dicas
"Como aos tipos de reutilização em terminais de serviço " sugere no lado do cliente atualizar manualmente Reference.svcmap para incluir múltiplo e NamespaceMappings.
Como alternativa svcutil lhe permite especificar vários pontos de extremidade de uma única vez e utilizar / r (/ referência) e / n (/ namespace) parâmetros.