我有一组使用System.ServiceModel.Discovery.UdpDiscoveryEndpoint来实现ws-discovery的WCF服务。当我将发现请求多播到服务器时,它们都会使用探测器匹配正确响应。但是,当我将发现请求单播到服务器时,只有其中一个响应。确定响应的内容有点棘手,但我认为这是第一个被创建的。
我知道我应该使用发现代理进行单播发现,我们将来可能会实现这一点,但我很困惑为什么我的服务在这两种情况下的响应方式不同。
答案 0 :(得分:1)
Ad hoc(多播)正在您的子网中搜索您所看到的任何人,但托管(单播)正在向默认发现端点询问可发现的服务。在ad hoc模式下,您广播发现请求,每个人都响应,如您所述,但在托管模式下,代理会将发现请求发送到一个目标,并且只有该目标响应(通常是发现代理)。
单播只是要求代理解析可发现的服务,在没有发现代理的情况下执行它意味着您已经知道服务端点,因为代理已经直接与该端点通信。