Il miglior approccio alla progettazione di applicazioni multi-cliente

3

Mi stavo chiedendo come inizierai tu, se hai bisogno di progettare un progetto multi-cliente in cui più client possano interagire con un server. Nello specifico, come procedete nel trattare i diversi stati e la gestione dei messaggi, come iniziate a progettare e considerare tutti questi casi?

Ad esempio un'applicazione di webchat video dove è possibile che tu chiami un altro client, mentre quel client è già in una chiamata, o è bloccato in una finestra di dialogo modale in modo tale che la finestra di dialogo di chiamata non arrivi.

    
posta TomHastjarjanto 07.01.2011 - 15:50
fonte

2 risposte

3

La natura dei programmatori è quella di credere che la perdita di dati possa essere interrotta. Questo è vero, ma verrà a scapito di qualcos'altro.

Questo è estremamente comune quando si ha a che fare con più utenti che accedono agli stessi dati e fanno modifiche su di essi.

  • Blocca i dati per la modifica scopi e diminuire l'usabilità del prodotto complessivo?
  • Forse prendi il mantra che dura nelle vittorie in uno scenario di modifica?
  • Forse l'approccio è semplicemente isolare ogni utente con i propri dati e unirlo in un dato momento nel tempo; tuttavia quello fornirà un intero insieme separato di avvertimenti in e di stesso.

Qualunque sia la decisione, arriverà inevitabilmente a un caso d'uso in cui è necessario prendere una decisione per lanciare i dati o alzare le mani. Spesso l'approccio migliore in questo scenario è quello di alzare le mani e consentire all'utente di prendere una decisione. Quando si preme la decisione per l'utente; non puoi sbagliare. Non fare questa abitudine, tuttavia, come un utente non dovrebbe essere costantemente costretto a interagire e prendere decisioni che il software dovrebbe fare. Spingere questi tipi di decisioni in un'area delle impostazioni può rivelarsi utile in quanto consente all'utente di definire la propria decisione in anticipo.

    
risposta data 07.01.2011 - 16:42
fonte
3

Questo è un argomento Enorme .

Tuttavia, ci sono alcune cose che puoi fare per renderlo gestibile.

Il server ha stato condiviso. Ciò significa più lettori e più scrittori. Hai molte, molte opzioni per gestirlo.

  1. Un database. La maggior parte dei database include blocchi per impedire le scritture simultanee.

  2. Blocco. Puoi utilizzare il blocco a livello di sistema operativo sul file system per consentire le scritture simultanee.

  3. Serializzazione delle transazioni. È possibile accodare le richieste di aggiornamento in qualche tipo di serializzatore di transazione. Spesso, l'accodamento riguarda il blocco di un file, ma alcune code di messaggi non riguardano i blocchi del file system.

Una volta che hai un modo per scrivere lo stato condiviso, ora hai bisogno di un modo per gestire più connessioni client simultanee. È possibile utilizzare processi o thread o una combinazione dei due.

Spesso si desidera avere l'autenticazione (chi è un utente). Spesso si desidera avere l'autorizzazione (ciò che l'utente è autorizzato a fare). Ci sono diversi modi per gestirlo. OS lo fanno. Database lo fanno. Oppure puoi utilizzare un server LDAP per conservare queste informazioni.

Potresti voler avere una "sessione" in cui un utente si connette, è autenticato e rimane connesso fino alla fine della sessione. TCP / IP può aiutarti a gestirlo.

Una delle grandi cose che sono successe negli ultimi anni è l'evoluzione di un'architettura standardizzata per applicazioni multi-client. A volte viene chiamato Il World Wide Web.

Spesso funziona così.

  1. Hai un database. MySQL o qualcosa di simile. Gestisce la persistenza, il blocco, più autori e più lettori per te.

  2. Hai un server web. Apache HTTPD o qualcosa di simile. Questo gestisce più connessioni client simultanee per te.

  3. Hai una struttura per applicazioni web. Questo può gestire l'autenticazione, l'autorizzazione e la gestione delle sessioni per te, evitando di dover scrivere tutto ciò.

  4. Scrivi la tua applicazione come transazioni basate sul web utilizzando il framework web e i vari server.

risposta data 07.01.2011 - 17:24
fonte

Leggi altre domande sui tag