Как рефакторинг контрактов данных в сервисах WCF? - PullRequest
0 голосов
/ 11 февраля 2010

У нас есть много служб WCF, которые используются только нашим собственным кодом; код, который их использует, находится в основном в тех же файлах решений, что и сервисы.

Однако они не используют совместно используемую сборку для договоров, поэтому при каждом изменении договора с данными ссылка на службу должна обновляться вручную во всех проектах, использующих эту службу. (Затем код нужно исправить вручную)

Итак, как мне сделать простой рефакторинг, такой как переименование элемента данных в контракте данных?


Есть ли способ обновить все ссылки на сервисы в одном решении одной командой, вместо того, чтобы нажимать на каждую ссылку в каждом проекте?

Ответы [ 2 ]

1 голос
/ 11 февраля 2010

С вашими текущими настройками вы не можете сделать это, потому что вы восстанавливаете прокси каждый раз. Это хорошо с точки зрения SOA, поскольку контракт на данные не должен меняться очень часто. Но если вы управляете и клиентом, и сервисом, и это все .Net, вы можете сделать так, как предложил Шони. Используйте параметр / r в svcutil для генерации прокси из общей сборки. Тогда вы можете легко выполнить рефакторинг.

1 голос
/ 11 февраля 2010

Возможно, вы уже ответили на свой вопрос здесь.

Переместите ваши контракты данных в общий проект «Контракты», что позволит вам использовать встроенную опцию Refactor -> Rename в Visual Studio, чтобы изменить имя, и это изменение будет отражено во всех проектах решения .

Обновление

Чтобы уточнить, проект Контрактов является внутренней "организацией" ваших контрактов. Это позволяет многим вашим проектам ссылаться на один набор договоров. Например ...

Служба WCF предоставляет «List GetCustomerById (int id)».

Служба WCF может вызывать уровень обработки, которому может потребоваться вычислить что-либо с использованием другого проекта и т. Д. Все эти проекты могут использовать одно определение «Заказчик» из вашего проекта контрактов.

Любой потребитель услуги WCF получит определение Клиента через ссылку на услугу. Вы не поделитесь своим проектом Контрактов или не отправите DLL для их использования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...