2 messaggi dal 17 ottobre 2004
Salve ha tutti,

ho una applicazione basata su ASP.NET per la gestione del magazzino, per la quale ho gestito la concorrenza con un timestamp e quanto trovo delle incongruenze evito l'aggiornamento ed avviso l'utente.

Ora per un uno sviluppo mi hanno chiesto di avere anche un client win/wpf a questo punto la secondo domanda è stata ma non possiamo evitare i problemi che ci sono sul web quando mi aggiorano un record? Che tradotto vorrebbe dire quando un utente entra in modifica non posso impedire algi altri di iniziare a modificare lo stesso record?

Non saprei come gestirla perchè un lock su db (MsSQL) non mi sembra una grande idea.

Aspetto fiducioso, un grazie in anticipo per le idee.

Mattia
Indipendentemente dal client (web o windows/wpf che sia) la prima idea che mi viene in mente è quella di gestire un flag per ogni record così da impostarne lo stato (locked/unlocked). In pratica quando un utente chiede di modificare un dato imposti nel db lo stato a "locked" ed impedisci applicativamente ad eventuali altri client l'accesso in scrittura a quella riga (restituendo ad esempio un messaggio tipo "l'elemento richiesto è stato estratto in modifica dall'utente tal dei tali"). Ovviamente al salvataggio del file ricontrolli il timestamp e reimposti il flag ad "unlocked".
Il meccanismo è simile a quello di un semplice source control come il vecchio Visual Source Safe (pre-2005, dove non esisteva la funzione merge, non così semplice da implementare  ) che imposta l'attributo in sola lettura per i file in check out.
Ci aggiungerei un qualche meccanismo (ad esempio a tempo) per impedire che qualche utente mantenga accidentalmente bloccato uno o più record per un tempo eccessivo od in modo indiscriminato.
HTH

Matteo Casati
GURU4.net

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.