Обнаружение веб-службы в WCF: Ws-Discovery или UDDI? - PullRequest
9 голосов
/ 15 марта 2009

Я знаю различие между UDDI и Ws-Discovery (хорошо известно местоположение для поиска службы и широковещательной передачи). Но мой вопрос: какой самый простой способ открыть веб-сервис в WCF? Проще говоря, я имею в виду то, что уже реализовано в WCF и может быть использовано сейчас? Я не видел никакой встроенной реализации в WCF для UDDI или Ws-Discovery.

Есть ли у вас какая-либо ссылка или опыт, чтобы поделиться этими двумя протоколами в WCF?

UPDATE

Теперь я думаю о трех решениях: ожидание WS-discovery в .NET 4.0 или, возможно, создание собственной привязки обнаружения с привязкой Peer to Peer, предоставляемой WCF. Таким образом, я могу транслировать запрос. Или используя реализацию, предоставленную по ссылке eed3si9n.

Я думаю, что я сделаю интерфейс шлюза, чтобы легко изменить последнюю реализацию.

Ответы [ 3 ]

3 голосов
/ 28 марта 2009

.NET 4.0 будет иметь WS-Discovery. См. Улучшения обмена сообщениями в .NET 4.0: (Часть I обнаружения) Использование WS-Discovery в WCF 4.0 . Тем временем Клаудио Масьери предоставил реализацию. См. WS-Discovery для WCF .

Существует также пользовательская реализация обнаружения, выполненная аналогично UDDI. См. Обнаружение службы связи Windows .

Представьте, что у вас есть 200 клиентов, использующих Ваш фанк сервис Wcf. Они бы все иметь в своем файле Conf раздел, как вот этот:

<client>
   <endpoint configurationName="default"
               address="http://localhost/servicemodelsamples/service.svc"
               binding="wsHttpBinding"
               bindingConfiguration="Binding1"
              contract="IDataContractCalculator" />
 </client>
 <bindings>
   <wsHttpBinding>
      <binding configurationName="Binding1" />
   </wsHttpBinding>
</bindings>

Теперь вы решили изменить существующий конечная точка (на стороне сервера) с новой который использует SSL по соображениям безопасности. Как Вы обновляете своих клиентов? Вы можете быстро увидеть, что это может стать утомительный. Так что идея, которую я хочу подробно здесь, чтобы реализовать открытие сервис похож на то, что делает UDDI и использовать распознаватель метаданных, чтобы получить Конфигурация вне службы в Для того чтобы динамически создать прокси позволяя клиенту обсудить с услуга.

У этого человека такая же проблема, как и у вас, и, похоже, у него есть рабочее решение.

2 голосов
/ 16 марта 2009

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

С другой стороны, WS-Discovery предоставляет протокол для обнаружения услуги, которые приходят и уходят из сети. Как сервис присоединяется сеть, она сообщает своим сверстникам его прибытие путем трансляции Hello сообщение; аналогично, когда услуги падают От сети они многоадресные пока сообщение. WS-Discovery не полагается на один узел для размещения информации обо всех доступных сервисах как UDDI делает. Скорее, каждый узел вперед информация о доступных услугах в особом порядке. Это уменьшает количество сетевой инфраструктуры необходимо обнаружить услуги и облегчает загрузку.

Цитирование из: http://travisspencer.com/blog/2007/09/post.html

Вот хороший список свойств: http://laflour.spaces.live.com/Blog/cns!7575E2FFC19135B4!728.entry

0 голосов
/ 31 декабря 2013

У jUDDI есть клиент .NET, который вы можете использовать. Это значительно упрощает работу с UDDI.

По опыту, существует только две или три работающие реализации WS-Discovery.

  • Apache CXF, но только при запуске вне контейнера
  • Этот: https://code.google.com/p/java-ws-discovery/, который не работает в Jboss и не поддерживается
  • Microsoft .NET 4.0ish

UDDI вы можете получить доступ из всего. Существует много реализаций клиента и сервера. (Просто материал версии 3 указан здесь)

  • IBM WS-Registry
  • Apache JUDDI
  • Microsoft UDDI v3 с Biztalk (бесплатно с сервером 2008)
  • HP SOA / Systinet или как он там сейчас называется
  • WSO2 имеет что-то
  • В ebXML есть какой-то мост или адаптер

Существует даже конечная точка REST для UDDI3 (она есть в jUDDI 3.2, ответы в формате XML или JSON), что открывает для этого множество других возможностей.

Кроме того, данные, которые можно использовать совместно с WS-Discovery, несколько ограничены по сравнению с практически неограниченными данными, которые вы можете прикрепить к UDDI.

Это только мои 2 цента.

...