Предоставление службы WCF через привязку именованных каналов - PullRequest
11 голосов
/ 09 октября 2008

Введение:

Я успешно внедрил Службу WCF, размещенную в Службе Windows, несколько дней назад. Сообщество здесь, в StackOverflow, помогло мне разоблачение WSDL здесь . Я еще раз благодарю вас. Однако недавно я обнаружил, что на этот раз есть еще один потенциальный клиент для этой службы, расположенный на той же машине, что и служба, и это заставило меня подумать, что я должен добавить еще одну конечную точку с именем namedPipesBinding.

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

Проблема:

Мне нужно предоставить другую конечную точку для той же услуги / контракта, но на этот раз с использованием netNamedPipeBinding. Однако я действительно не понимаю, как я могу добавить ссылку на сервис от клиента. Глупо после добавления

<endpoint address="net.pipe://localhost/OfficeService"
          binding="netNamedPipeBinding"
          contract="netBridge.Development.OfficeService.IWordService"
          bindingConfiguration="localBinding" />

Я попытался добавить ссылку на службу в приложении Windows Forms, расположенном на том же компьютере, набрав net.pipe: // .... url. Это не сработало. Я должен упомянуть, что ранее удалил конечную точку mex (MetaData Exchange), потому что считал это ненужным.

  1. Необходима ли эта конечная точка mex для обнаружения привязки конечной точки именованных каналов?
  2. Как добавить ссылку на службу в клиентском приложении в конечную точку именованного канала?

Ответы [ 2 ]

13 голосов
/ 09 октября 2008

Ваша конечная точка выглядит нормально, хотя мне любопытно, что в localBinding ...

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

Удачи!

6 голосов
/ 19 июня 2009

конечная точка mex необходима во время разработки, так как она предоставляет http-местоположение, где создается wsdl. wsdl описывает клиенту, как взаимодействовать с сервером через именованные каналы, TCP / IP или что-либо еще. как только клиентское приложение построит прокси для привязки именованных каналов и настроит конфигурацию, конечная точка mex больше не будет нужна. следовательно, конечная точка mex может быть удалена перед развертыванием через среды, если это необходимо.

...