Sto lavorando a un progetto in cui abbiamo un'applicazione desktop che dovrebbe essere in grado di ricevere comandi da un'applicazione web. Per risolvere questo problema, l'uso delle prese sembra un buon approccio (invece del lungo polling e varie altre tecniche).
L'applicazione desktop utilizza anche un'API Web e questo è protetto con l'autenticazione reciproca in SSL. Anche i socket dovrebbero essere protetti con SSL.
La domanda è: qual è il modo migliore per gestire grandi quantità di socket?
Ho pensato ad una soluzione che implica l'utilizzo di una "presa relè". Fondamentalmente l'applicazione desktop crea un socket per [The Relay Station]. Ogni volta che deve essere inviata un'azione dall'applicazione Web, l'app Web crea anche un socket per la stazione di inoltro.
L'app web invia un comando che dice "relay [this] to [socket]".
Questo approccio richiede che:
- Tutti i socket da desktop a relay devono essere persistenti
- L'applicazione desktop deve identificarsi, in modo che la webapp possa fare riferimento a lui nei suoi comandi
- La stazione di inoltro deve tenere traccia di tutti i socket dell'applicazione desktop e mapparli a un identificativo univoco.
Questo mi dà una buona struttura, ma pone anche alcune domande:
- Quale dovrebbe essere l'identificatore?
- C'è un modo migliore di inviare comandi da [WebApp] all'applicazione desktop corretta, senza utilizzare tale approccio?