2008-08-22 71 views
4

我有一个与.Net远程进行通信的客户端/服务器应用程序。我需要我的客户端能够在网络上找到服务器而不需要客户端配置。远程处理服务器自动发现。是否播放?

据我所知,在远程处理中没有发现支持。我准备实施一个UDP解决方案,客户端可以通过广播消息找到服务器。

在我继续之前,我想听听集体智慧智慧。这是最好的方法吗?还有其他建议吗?

回答

4

我已经看过SSDP和UPnP这种类型的功能,但我建议使用自定义UDP multicast解决方案。基本上,多播与广播非常相似,但只有已加入多播组的机器(即请求广播)才被联系。

恕我直言,SSDP和UPnP和臃肿和过度复杂的资源发现......但嘿,这是一个标准。 ;)

0

我在远程工作中找到的最佳解决方案是将服务器列表保存在客户端系统上的配置文件中并使其可更新。不是最容易维护的,但速度很快,没有广播。

+0

我已经有一个客户端配置解决方案。这个禁止触碰的要求已经在我的膝盖上重新下降了。基本上,我们需要以最少的管理干预部署到大量虚拟终端用户。无论如何。 – Ishmaeel 2008-09-07 19:49:00

1

似乎你需要的是Simple Service Discovery Protocol或SSDP。这是在Windows中实现的,作为Microsoft对Universal Plug and Play的支持的一部分。由于这是一个行业标准协议,它似乎是一个很好的选择。例如,如果你想要处理防火墙或其他问题,这将被其他人想出来,而不是你必须推出自己的解决方案。

既然你在说.NET,我会假设你在Windows上。有一个比较老的文档(2001)描述了一个C风格的API和一个用于Windows的COM API,标题为Universal Plug and Play (UPnP) Client Support。 COM API由UPNP.DLL公开,而SSDP的C风格API由SSDPAPI.DLL公开。

COM-style APIs for UPNP可能是你最好的选择。由于C#可以为你包装COM对象并处理互操作。我找不到这个API本地移植到C#或.NET Framework的地方。

1

你也可以考虑苹果的Bonjour,这是他们的Zeroconf实施。它适用于Mac,PC和Linux/BSD。

0

由于最近的MS更新,我的多播UDP解决方案似乎不可靠。