2009-06-25 3 views
1

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

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

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

ответ

2

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

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

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

+1

Да - но опять-таки - это * ТОЛЬКО * когда-либо работает в сценарии, где вы управляете * ОБА * концы связи, а также использовать .NET и WCF на обоих концах. Если это так - отличный способ сделать это! Но просто помните - это очень ограниченный сценарий в «реальном мире». –

+0

Спасибо, действительно хорошее видео, кто-то, кто разрабатывает службы WCF, должен смотреть это в первую очередь, плата VS ужасна. – James

2

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

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

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

Марк

 Смежные вопросы

  • Нет связанных вопросов^_^