我知道UDDI和Ws-Discovery之间的区别(知道搜索服务与广播的位置)。但我的问题是:在WCF中发现Web服务的最简单方法是什么?最简单的意思是我已经在WCF中实现了什么并且现在可以使用了?我没有在WCF中看到UDDI或Ws-Discovery的任何内置实现。
您是否有任何链接或经验可以在WCF中分享这两个协议?
更新
现在我正在考虑三种解决方案,等待.NET 4.0上的WS-discovery,或者可能使用WCF提供的Peer to Peer绑定创建自己的发现绑定。这样我就可以广播请求。 或者使用eed3si9n链接提供的实现。
我认为我会做一个网关界面,以便轻松改变后面的实现。
答案 0 :(得分:3)
.NET 4.0将具有WS-Discovery。请参阅Messaging enhancements in .NET 4.0: (Discovery Part I) Using WS-Discovery in WCF 4.0。与此同时,Claudio Masieri提供了一个实现。请参阅WS-Discovery for WCF。
还有一个与UDDI类似的自定义发现实现。请参阅Windows Communication Service Discovery。
想象一下,你有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所做的和 使用元数据解析器来获取 配置退出服务 为了动态创建代理 允许客户讨论 服务。
这个人和你一样有类似的担忧,似乎有一个有效的解决方案。
答案 1 :(得分:2)
UDDI提供了一个中央注册表 存储有关可用的信息 服务。它提供了一个目录 消费者可以找到满足的服务 他们的需求。这个电话簿就好 信息目录允许 消费者按名称查找服务, 地址,合同,类别或 其他数据。可以想到UDDI 作为Web服务的DNS。
另一方面,WS-Discovery 提供了一个发现的协议 来来去去的服务 来自网络。作为服务加入 网络,它通知其同行 它的到来是通过广播你好 信息;同样,当服务下降时 在网络上他们组播了一个再见 信息。 WS-Discovery不依赖于 一个节点来托管信息 关于UDDI的所有可用服务 确实。相反,每个节点都转发 有关可用服务的信息 以临时的方式。这减少了 网络基础设施的数量 需要发现服务和 促进自举。
引自:http://travisspencer.com/blog/2007/09/post.html
这是一个很好的属性列表: http://laflour.spaces.live.com/Blog/cns!7575E2FFC19135B4!728.entry
答案 2 :(得分:0)
jUDDI有一个可以使用的.NET客户端。它极大地简化了使用UDDI的一些事情。
根据经验,只有两到三个功能实现的WS-Discovery。
你可以从任何东西访问UDDI。有许多客户端和服务器实现。 (这里列出了版本3的东西)
UDDI3甚至还有一个REST端点(jUDDI 3.2有它,XML或JSON响应),这可以打开更多的可能性。
此外,与您可以附加到UDDI的几乎无限数据相比,与WS-Discovery共享的数据有限。
那只是我的2美分。