Экспортировать службу WCF через привязку именных труб

Введение:

Я успешно реализовал службу 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), потому что считал ее не необходимой.

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

Ответ 1

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

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

Удачи!

Ответ 2

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