9

我知道 UDDI 和 Ws-Discovery 之间的区别(很清楚搜索服务与广播的位置)。但我的问题是:在 WCF 中发现 Web 服务的最简单方法是什么?最简单的意思是什么已经在 WCF 中实现并且现在可以使用?我没有在 WCF 中看到任何用于 UDDI 或 Ws-Discovery 的内置实现。

关于 WCF 中的这两个协议,您有任何链接或经验可以分享吗?

更新

现在我正在考虑三种解决方案,等待 .NET 4.0 上的 WS-discovery,或者使用 WCF 提供的 Peer to Peer 绑定创建我自己的发现绑定。这样我可以广播一个请求。或者使用eed3si9n的链接提供的实现。

我想我会做一个网关接口,以便稍后轻松更改实现。

4

3 回答 3

3

.NET 4.0 将具有 WS-Discovery。请参阅.NET 4.0 中的消息传递增强:(发现部分 I) 在 WCF 4.0 中使用 WS-Discovery。与此同时,Claudio Masieri 提供了一个实现。请参阅WCF 的 WS-Discovery

还有一个以与 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 所做的发现服务,并使用元数据解析器从服务中获取配置,以便动态创建一个代理,允许客户端与服务进行讨论。

此人与您有类似的担忧,并且似乎有一个可行的解决方案。

于 2009-03-28T05:17:17.577 回答
2

UDDI 提供了一个中央注册中心来存储有关可用服务的信息。它提供了一个目录,消费者可以在其中找到满足其需求的服务。这种类似电话簿的信息目录允许消费者按名称、地址、合同、类别或其他数据查找服务。UDDI 可以被认为是 Web 服务的 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

于 2009-03-16T20:39:49.530 回答
0

jUDDI 有一个您可以使用的 .NET 客户端。它极大地简化了使用 UDDI 的许多事情。

根据经验,WS-Discovery 只有两三个功能性实现。

  • Apache CXF,但仅在容器外部运行时
  • 这个:https ://code.google.com/p/java-ws-discovery/在 Jboss 中不起作用且未维护
  • 微软 .NET 4.0ish

UDDI 您可以从任何地方访问。有许多客户端和服务器实现。(此处仅列出了版本 3 的内容)

  • IBM WS-Registry
  • Apache jUDDI
  • 带有 Biztalk 的 Microsoft UDDI v3(2008 服务器免费)
  • HP SOA/Systinet 或现在的任何名称
  • WSO2有东西
  • ebXML 有某种桥接器或适配器

甚至还有一个用于 UDDI3 的 REST 端点(jUDDI 3.2 有它,XML 或 JSON 响应),这开启了更多的可能性。

此外,与您可以附加到 UDDI 的几乎无限的数据相比,与 WS-Discovery 共享的数据有些有限。

那只是我的2美分。

于 2013-12-31T01:53:58.847 回答