У меня есть следующий (упрощенный) сценарий.Взаимодействие с клиентами и объектами отображения веб-сервиса
Существует служба WCF (MyService), которая предоставляет некоторую сущность MyEntityDTO. На стороне клиента я создал интерфейс IMyServiceClient, который передается моим клиентским компонентам, поэтому они могут запрашивать MyEntityDTO из любой базовой реализации. А также теперь я могу запускать клиентские модульные тесты с использованием некоторого MockedMyServiceClient: IMyServiceClient. Кажется, все хорошо.
Теперь я создал фактический MyRealWCFServiceClient: IMyServiceClient, который по существу просто обертывает ссылку на службу WCF, созданную Visual Studio.
Одна из проблем заключается в том, что ссылка на службу WCF возвращает совершенно другой вид MyEntityDTO, поэтому мне нужно сопоставить его с типом сущности ссылки службы на тип MyEntityDTO, который возвращается из IMyServiceClient. Для этого я могу использовать AutoMapper.
Но здесь самая большая проблема. Предположим, я хочу повторно использовать myRealWCFServiceClient в некоторых других приложениях в моем проекте. Если каждое из этих приложений будет иметь свою собственную ссылку на службу WCF со своими собственными типами DTO, мне придется каким-то образом передать все типы DTO текущей ссылки службы и настроить AutoMapper каким-то хитрым Reflection, чтобы вставлять в нее мои общие типы. Какой беспорядок ...
Но я мог бы собирать свои общие ссылки WCF с их оболочками MyRealWCFServiceClients в какой-то общей библиотеке, поэтому все пользователи MyRealWCFServiceClients используют только те известные общие ссылки WCF.
Интересно, полезно ли создавать общую библиотеку для ссылок на службы? Есть ли лучшее решение для этого?
Что именно вы подразумеваете под «ссылкой службы WCF, возвращает совершенно другой вид MyEntityDTO»? Не является ли MyEntityDTO типом, сгенерированным генератором VS-прокси-сервера? –