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

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

更新

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

我想我会做一个网关接口来轻松更改后者的实现。

有帮助吗?

解决方案

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

还有一个以与 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类似的发现服务,并使用元数据解析器将配置退出服务,以动态创建一个允许客户端与服务讨论的代理。

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

其他提示

UDDI提供了一个中央注册表来存储有关可用服务的信息。它提供了一个目录,消费者可以在其中找到满足他们需求的服务。此信息类似的信息目录允许消费者按名称,地址,合同,类别或其他数据找到服务。可以将UDDI视为Web服务的DN。

另一方面,WS-Discovery提供了一个协议,以发现正在从网络中到达的服务。当服务加入网络时,它通过广播Hello消息来告知其同龄人的到来;同样,当服务删除网络时,它们会多播给BYE消息。WS-Discovery并不像Uddi那样托管有关所有可用服务的信息。相反,每个节点都以临时方式转发有关可用服务的信息。这减少了发现服务并促进引导所需的网络基础架构的数量。

引用自: http://travisspencer.com/blog/2007/09/post.html

这是一个很好的属性列表:http://laflour.spaces.live.com/Blog/cns!7575E2FFC19135B4!728.entry

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

根据经验,WS-Discovery 只有两到三个有效实现。

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

  • IBM WS-注册表
  • 阿帕奇jUDDI
  • Microsoft UDDI v3 with Biztalk(2008 年服务器免费)
  • HP SOA/Systinet 或现在的任何名称
  • WSO2 有东西
  • ebXML 有某种桥接器或适配器

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

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

这只是我的2分钱。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top