Condividi oggetti DTO tra servizi WCF
Domanda
Sento che questa è una domanda stupida anche prima di fare, ma il mio cervello non funziona troppo bene in questo momento. Ho due servizi WCF " CountryService " e "Servizio fioristi".
Ora CountryService ha il seguente metodo:
IList<CountryDTO> GetAllCountries();
Inoltre, FloristService ha un metodo:
bool AddFlorist(FloristDTO florist);
Finora tutto bene, ma il problema è che il FioristaDTO fa riferimento a un PaeseDTO, ad esempio
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; }
Questo va bene, ma se uso l'utilità di generazione proxy proxy con Visual Stuidos (ovvero Aggiungi riferimento > Aggiungi riferimento al servizio) allora ottengo due versioni di CountryDTO che vengono create ieFloristService.CountryDTO e CountryService.CountryDTO.
Ora riesco a pensare ad alcuni modi per ovviare a questo, ma il nonw di loro sembra giusto. Mi chiedevo che cosa " corretto " approccio a questo sarebbe, c'è qualcosa di strano che posso fare con lo strumento di generazione proxy per farlo condividere DTO comuni?
Saluti, Chris
Soluzione
Puoi riutilizzare i tipi in svcutil: http://blogs.msdn.com/youssefm/archive/2009/10/09/reusing-types-in-referenced-assemblies-with-svcutil-sr-switch.aspx
Altri suggerimenti
Articolo " Come riutilizzare i tipi negli endpoint di servizio " suggerisce di aggiornare manualmente Reference.svcmap sul lato client per includere più e NamespaceMappings.
In alternativa svcutil consente di specificare più endpoint contemporaneamente e utilizzare i parametri / r (/ reference) e / n (/ namespace).