Совместное использование объектов 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 5

2 ответа:

Статья "как повторно использовать типы между конечными точками службы" предлагает на стороне клиента вручную обновить ссылку.svcmap для включения нескольких и NamespaceMappings.

Альтернативно svcutil позволяет указать несколько конечных точек одновременно и использовать параметры /r(/reference) и /n(/namespace).