Pergunta

Eu tenho um aplicativo cliente/servidor que se comunica com a comunicação remota .Net.Preciso que meus clientes possam encontrar os servidores na rede sem exigir configuração do lado do cliente.

Até onde eu sei, não há suporte para descoberta em comunicação remota.Estou preparado para implementar uma solução UDP onde os clientes possam encontrar os servidores através de mensagens broadcast.

Quero ouvir a sabedoria coletiva do SO antes de prosseguir.É este o melhor caminho?Alguma outra sugestão?

Foi útil?

Solução

Analisei SSDP e UPnP para esse tipo de funcionalidade, mas recomendo usar um UDP personalizado multitransmissão solução.Basicamente, o multicast é muito semelhante a um broadcast, mas apenas as máquinas que se juntaram ao grupo multicast (ou seja,solicitou a transmissão) são contatados.

IMHO, SSDP e UPnP e inchados e excessivamente complicados para descoberta de recursos...mas ei, é um padrão.;)

Outras dicas

Parece que o que você precisa é do Protocolo Simples de Descoberta de Serviço ou SSDP.Isso é implementado no Windows como parte do suporte da Microsoft para Plug and play universal.Como este é um protocolo padrão da indústria, parece uma boa aposta.Por exemplo, se você quiser lidar com firewalls ou outros problemas, isso terá sido resolvido por outras pessoas, em vez de você ter que implementar sua própria solução.

Já que você está falando em .NET, presumo que você esteja no Windows.Há um documento um tanto antigo (2001) que descreve uma API estilo C e uma API COM para Windows intitulada Suporte ao cliente Plug and Play universal (UPnP).As APIs COM são expostas por UPNP.DLL e as APIs estilo C para SSDP são expostas por SSDPAPI.DLL.

O APIs estilo COM para UPNP são provavelmente sua melhor aposta.Já que o C# pode agrupar objetos COM para você e lidar com a interoperabilidade.Não consegui encontrar nenhum lugar onde esta API tenha sido portada para C# ou .NET Framework nativamente.

Você também pode considerar o da Apple Bom dia, qual é o seu Zeroconf implementação.Está disponível para Mac, PC e Linux/BSD.

A melhor solução que encontrei em meu trabalho remoto foi manter a lista de servidores em um arquivo de configuração nos sistemas clientes e torná-la atualizável.Não foi o mais fácil de manter, mas foi rápido e sem transmissão.

Minha solução UDP multicast parece não ser confiável devido à atualização recente do MS.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top