Правильный способ создания сервисных ссылок WCF? - PullRequest
1 голос
/ 25 июня 2009

У меня есть собственная служба WCF на основе TCP. Сейчас я создаю проект, который использует этот сервис, но, кажется, есть по крайней мере два способа добавления ссылки на сервис в проект, и оба создают дико отличающиеся прокси. Сначала я использовал «Добавить ссылку на службу» из меню проекта, но это сгенерировало довольно много файлов и даже некоторые схемы XML основных типов .Net. Затем я попробовал SvcUtil, который создал только два файла, один прокси и один файл конфигурации, который содержит ссылку на службу и параметры привязки, это намного лучше, но ...

В обоих случаях инструменты VS, похоже, воспроизводят определения типов, хотя я предоставил ссылку на сборку, содержащую службу, и все типы, которые она использует. Например, некоторые из моих методов обслуживания возвращают общие коллекции классов Entity. Все классы Entity определены в сборке, на которую я напрямую ссылаюсь из потребляющего проекта, так зачем же снова определять эти типы?

Я был бы признателен, если бы какой-либо орган мог дать совет по использованию услуг WCF, которые возвращают типы сущностей, и любые рекомендации, которым они следуют.

Ответы [ 2 ]

2 голосов
/ 25 июня 2009

Да, в вашем конкретном случае это может показаться дублированием, но учтите это: WCF также разработан для обеспечения взаимодействия, и в сценариях MOST, особенно если у вас есть не-.NET клиент, вызывающий ваш код, вы не будете иметь сборку с контрактом и доступными интерфейсами.

Так что на самом деле ничего нет, НО создание полного прокси-сервера, содержащего всю эту информацию, для работы в любых возможных обстоятельствах.

Теперь, если вы действительно хотите избежать дублирования контрактов с данными и т. Д., Вы можете скомпилировать их в свою собственную сборку, а затем использовать ключ / r: (имя сборки) при вызове svcutil, чтобы сказать ей повторно использовать код и контракты в этой сборке.

Марк

2 голосов
/ 25 июня 2009

Мы обнаружили, что ссылка на службу добавления создает много ненужного кода, который мешает больше, чем помогает.

Мы перешли к ручному способу его настройки, здесь есть введение в этот метод:

http://perseus.franklins.net/dnrtvplayer/player.aspx?ShowNum=0103

...