2011-09-22 21 views
6

Questa è la prima volta che sviluppo un'applicazione che verrà utilizzata da 10-15 persone in modo coerente, quindi non sono esattamente sicuro di un buon modo per ridurre al minimo le collisioni di aggiornamento.Gestire un ambiente con più utenti

In sostanza, la mia applicazione funziona come segue. I nuovi elementi vengono inseriti nel database tramite un servizio esterno appena vengono ricevuti. Le regole aziendali indicano che ogni articolo deve essere esaminato da due dipendenti indipendenti. Inutile dire che esiste una relazione uno-a-molti tra l'oggetto e le recensioni. Qual è l'aspetto più importante dell'applicazione è che nessun elemento può superare due recensioni e il sistema deve tenere traccia di chi erano i due revisori. Inoltre, ha agito come primo revisore e secondo.

Ora ho tutto a posto. Il problema con cui ho a che fare è questo (uno dei tanti scenari similari). Cosa succede se tutti gli utenti hanno aggiornato il loro elenco articoli negli stessi 5 minuti l'uno dall'altro. L'utente 1 invia una recensione per l'articolo 1. Una seconda persona invia una recensione sullo stesso articolo. Ora una terza persona invia una recensione sull'id oggetto 1, ma ci sono già 2 recensioni quindi l'elemento è stato contrassegnato come completo.

Quali sono i modi possibili per gestire un ambiente multiutente in cui esiste una grande possibilità di diversi utenti che aggiornano lo stesso record?

risposta

7

Non conosco i dettagli della vostra app, ma sembra che il processo di fare una revisione allarga la finestra in cui più persone possono avviare una revisione e poi quando commettono finisce essere più di due,

Un'opzione è di introdurre il concetto di iniziare una revisione. Quando qualcuno avvia l'azione di fare una recensione, "inizia" la recensione. Questo segna la recensione come iniziata. Il sistema non dovrebbe consentire più di due a partire.

È anche possibile rendere più avanzato scadenzando le recensioni che non vengono mai "inviate" o che hanno la possibilità di eliminare una revisione in sospeso avviata.

+0

simile a un concetto di check in/check out come si troverebbe nel controllo del codice sorgente – cordialgerm

5

Nhibere ha vari modelli simultanei che implementate nel vostro progetto in base alle vostre esigenze.

Dai un'occhiata alla NHibernate-Concurrency

+1

un problema con la simultanea sull'impegno della revisione è il revisore che perde continuamente tutto il tempo per scrivere la recensione. – bryanmac

+0

Esattamente. Ciò dipende dalle esigenze del progetto. Chiunque può sovrascrivere le modifiche o impedire l'aggiornamento dei dati in caso di modifica. –

+0

concordato. Penso che avere qualcuno in grado di scrivere una recensione completa solo per rifiutare su una scrittura protetta da concorrenza sia un'esperienza negativa. I miei 2 centesimi anche se tecnicamente accurati. – bryanmac

Problemi correlati