2012-12-21 10 views
7

Sto sviluppando un'applicazione client-server utilizzando C#. Fondamentalmente il server è un server SQL ei client sono sviluppati in C#. Quello che vorrei sapere è il modo migliore (se esiste) di limitare il numero di utenti che utilizzano l'applicazione in qualsiasi momento - ad esempio, desidero limitare a due utenti. Potrei limitare il loro accesso a SQLserver?Numero limite di utenti nell'applicazione C#

+4

Stai facendo questo per problemi di licenza? E non hai altri server di app in mezzo? – ryadavilli

+0

Sì signore, lo sto facendo per le licenze e voglio dare l'accesso della mia applicazione ai client limitati. Non ho altri server delle app in mezzo. Il mio database Sql Server si trova su una macchina (chiamato server database) e il mio codice applicazione si trova sulla macchina client. Non so come dare accesso a client limitati. Scusami per il mio inglese. Grazie per la risposta – Vinit

+0

"voglio dare l'accesso della mia applicazione ai client limitati" Puoi spiegarlo ulteriormente nella tua domanda. Questo va al di là delle licenze, che sarebbero state più facili da gestire con un semplice conteggio. – ryadavilli

risposta

2

È potenzialmente necessario il concetto di una "sessione" per identificare il numero di utenti simultanei.

Se si desidera che ciò avvenga in modo sicuro, è necessario introdurre un livello applicazione tra il server DB e il client. È quindi possibile fornire metodi di accesso e disconnessione per gli utenti.

Ad ogni accesso sarà necessario incrementare il conteggio di "utenti concorrenti" e ad ogni disconnessione sarà necessario diminuire.

Potrebbe essere necessario introdurre il concetto di timeout della sessione poiché alcuni client potrebbero arrestarsi senza richiamare il metodo logff.

Il numero di utenti concorrenti consentiti può essere associato a una licenza.

+0

Si noti che con questo tipo di conteggio si dovrebbe creare solo una singola connessione da ciascun client. Questo può facilmente rendere difficile la creazione dell'applicazione. –

0

Potresti semplicemente vendere singole licenze.

Creare l'applicazione in modo che controlli la sua licenza su un server trusted (potrebbe essere lo SQL Server).

Vendi una licenza per computer/utente.

In questo modo è possibile scalare facilmente su più di 2 utenti, se necessario.

È inoltre possibile implementare le licenze mobili: ogni volta che un utente tenta di ottenere una licenza viene fornito solo quando disponibile. Ovviamente la licenza dovrà essere "liberata" dopo una disconnessione o un time-out. In questo scenario è necessario un server che contenga un numero di licenze e un servizio fidato che li distribuisca.

Nell'applicazione Winforms si dovrebbe semplicemente verificare la licenza all'avvio e si potrebbe estendere il timeout ogni volta che l'utente non qualcosa di significativo (come ad esempio l'interrogazione del database o facendo clic su una voce di menu)

1

Utilizzare la tabella "currentUser" per memorizzare contemporaneamente gli utenti che accedono al sistema contemporaneamente.

All'accesso dell'utente, controllare il conteggio delle righe se il numero max. di righe ha raggiunto.

Rimuovere la riga rispettiva quando l'utente lascia il sistema. In questo modo, puoi anche limitare l'uso dello stesso ID utente per accedere da diversi computer.

Problemi correlati