Domanda

Ho un'applicazione client/server che comunica con i servizi remoti .Net.Ho bisogno che i miei clienti siano in grado di trovare i server sulla rete senza richiedere la configurazione lato client.

Per quanto ne so, non c'è supporto per il rilevamento nei servizi remoti.Sono pronto a implementare una soluzione UDP in cui i client saranno in grado di trovare i server tramite messaggi broadcast.

Voglio ascoltare la saggezza collettiva di SO prima di andare avanti.È questo il modo migliore?Altri suggerimenti?

È stato utile?

Soluzione

Ho esaminato sia SSDP che UPnP per questo tipo di funzionalità, ma consiglierei di utilizzare un UDP personalizzato multicast soluzione.Fondamentalmente il multicast è molto simile a un broadcast, ma solo le macchine che hanno aderito al gruppo multicast (ad es.richiesto la messa in onda) vengono contattati.

IMHO, SSDP e UPnP e gonfiati ed eccessivamente complicati per il rilevamento delle risorse...ma ehi, è uno standard.;)

Altri suggerimenti

Sembra che ciò di cui hai bisogno sia il Protocollo di rilevamento dei servizi semplice o SSDP.Questo è implementato in Windows come parte del supporto di Microsoft per Plug and Play universale.Poiché si tratta di un protocollo standard del settore, sembra una buona scommessa.Ad esempio, se desideri gestire firewall o altri problemi, questo sarà stato risolto da altri invece di dover elaborare la tua soluzione.

Dato che stai parlando di .NET, presumo che tu sia su Windows.Esiste un documento piuttosto vecchio (2001) che descrive un'API in stile C e un'API COM per Windows intitolato Supporto client Plug and Play universale (UPnP)..Le API COM sono esposte da UPNP.DLL e le API di stile C per SSDP sono esposte da SSDPAPI.DLL.

IL API in stile COM per UPNP sono probabilmente la soluzione migliore.Poiché C# può racchiudere oggetti COM per te e gestire l'interoperabilità.Non sono riuscito a trovare alcun posto in cui questa API sia stata trasferita in C# o .NET Framework in modo nativo.

Potresti anche considerare quello di Apple Buongiorno, che è il loro Zeroconf implementazione.È disponibile per Mac, PC e Linux/BSD.

La soluzione migliore che ho trovato nel mio lavoro in remoto è stata quella di mantenere l'elenco dei server in un file di configurazione sui sistemi client e renderlo aggiornabile.Non è stato il più semplice da mantenere, ma era veloce e senza trasmissione.

La mia soluzione UDP multicast sembra essere inaffidabile a causa del recente aggiornamento di MS.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top