Совместное использование объектов DTO между службами WCF
Я чувствую, что это глупый вопрос еще до того, как задать его, но мой мозг сейчас работает не слишком хорошо. У меня есть две службы WCF "CountryService"и " FloristService".
Теперь CountryService имеет следующий метод:
IList<CountryDTO> GetAllCountries();
Кроме того, FloristService имеет метод:
bool AddFlorist(FloristDTO florist);
Пока все хорошо, но проблема в том, что Флористдто ссылается на страну, т. е.
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; }
Это нормально, но если я использую прокси-сервер службы, генерирующий util с Visual Stuidos (т. е. Добавить ссылку > Добавить ссылку на сервис), то я получаю две версии CountryDTO создаются то есть FloristService.CountryDTO и CountryService.Кантридто.
Теперь я могу придумать несколько способов преодолеть это, но ни один из них не кажется правильным. Я задался вопросом, какой "правильный" подход к этому был бы, есть ли что-нибудь необычное, что я могу сделать с помощью инструмента генерации прокси, чтобы заставить его делиться общими DTO?Твое Здоровье, Крис
2 ответа:
Типы можно повторно использовать в svcutil: http://blogs.msdn.com/youssefm/archive/2009/10/09/reusing-types-in-referenced-assemblies-with-svcutil-s-r-switch.aspx
Статья "как повторно использовать типы между конечными точками службы" предлагает на стороне клиента вручную обновить ссылку.svcmap для включения нескольких и NamespaceMappings.
Альтернативно svcutil позволяет указать несколько конечных точек одновременно и использовать параметры /r(/reference) и /n(/namespace).