Modello client / server in cui il server rifiuta le connessioni da * nuovi * client

0

Sto usando un pezzo di software commerciale in cui il server rifiuterà qualsiasi tentativo di connettersi ad esso da un client più recente . In altre parole, è possibile utilizzare la versione 8 del client per connettersi a un server v10.0, ma non alla versione 10.1 del client.

Ovviamente, questo software è quello che è. Ma perché dovrebbe essere progettato in questo modo? Perché i clienti non sarebbero retrocompatibili? Quali benefici (se esistono) ha questa disposizione?

Questa configurazione mi sembra molto controintuitiva e voglio provare a comprenderla.

(Il software sembra essere un database, ma non penso che sia importante per la domanda.)

    
posta Bobson 08.04.2014 - 15:22
fonte

2 risposte

5

Se il server risponde solo alle richieste del client e le nuove versioni di interfaccia aggiungono solo nuove richieste (le richieste e le risposte esistenti non vengono mai modificate), disabilitare i nuovi client significa che né il client né il server devono supportare esplicitamente più versioni del protocollo .

In questo caso, se un client versione 8 si connette a un server versione 10, tutte le funzionalità della versione 8 sono lì e le funzionalità più recenti (versione 9 e 10) non vengono mai richieste.
D'altra parte, se un client versione 10.1 si connettesse con successo a un server versione 10, il client avrebbe bisogno di sapere quale funzionalità era stata introdotta di recente nella versione 10.1 rispetto alla versione 10 (e probabilmente fino alla versione 1). Questo è abbastanza oneroso per il cliente ed è molto più semplice bloccare ciecamente tali connessioni e lavorare sul presupposto che se la connessione ha esito positivo, allora il server supporta almeno tutti i comandi che il client conosce.

    
risposta data 08.04.2014 - 15:39
fonte
1

È strano che un 10.1 non possa comunicare con una versione 10.0 (mi aspetterei almeno una differenza di versione maggiore prima che ciò accadesse).

Probabilmente il progettista non voleva che l'app client fosse appesantita dal livello di compatibilità necessario per connettersi al vecchio server, mentre il server può ricorrere al protocollo precedente se necessario.

    
risposta data 08.04.2014 - 15:31
fonte

Leggi altre domande sui tag