Newsgroup: it.comp.programmare
Titolo: Quesito tosto

Ciao a tutti,
mi trovo alle prese con il seguente problema e chiedo consigli a chi ï¿œ 
piï¿œ esperto di me.
Vengo al problema:
supponiamo avere un'applicazione che opera in una rete di 3 pc.
Quest'applicazione ï¿œ utilizzata in un negozio diviso in reparti.
Il cliente cl1 va al reparto rp1 e mette nel suo carrello il prodotto  p1.
Il commesso del reparto rp1 apre un thread cl1 e carica il prodotto p1.
Questo thread deve essere, contemporaneamente, aggiornato su tutti i pc 
della rete.
Il cliente cl1 si reca al reparto rp2 e mette nel suo carrello il 
prodotto  p2.
Il commesso del reparto rp2 vede se esiste un un thread cl1 e se c'ï¿œ gli 
associa il prodotto p2.
etc. etc.
Ho pensato di gestire questi threads con xml e non con un db che lo 
riservo per la memorizzazione di dati permanenti.
Ci sono degli algoritmi, dei parsers per questire questi tipi di 
problematiche ?
ps.
Io programmo in c# visual studio 2008 e l'applicazione ï¿œ di tipo client 
server con db Sql Server.
L'applicazione non ï¿œ di tipo web.

 L'applicazione non ï¿œ di tipo web.
Che intendi dire?

 L'applicazione non ï¿œ di tipo web.
Avendo a disposizione un server, io consiglio di tenere tutti i dati 
centralizzati sul server, e gestiti da un programma server (che in 
ambiente Windows si chiama "servizio").
Puoi scriverti tu tale server, usando un protocollo ad hoc, o 
appoggiarti a Sql Server, o appoggiarti a un server Web.
dato che devi giï¿œ usare Sql Server, mi sembra molto piï¿œ semplice usarlo 
anche per gestire gli ordini aperti utilizzando apposite tabelle temporanee.
-- 
Carlo Milanesi
http://digilander.libero.it/carlmila

 anche per gestire gli ordini aperti utilizzando apposite tabelle temporanee.
stavo arrivando alla stessa idea ma mi hai preceduto 
^_^
-- 
"Non portare mai la tua donna alla
baia dei Porci. Lei capirà"

 
Cosa intendi per gestione dei lock e degli accessi in concorrenza ?

 a scoprire qual e' l'ordine eventualmente gia' aperto da quel cliente.
Non ho riportato quest'aspetto dell'applicazione perchï¿œ credo che possa 
indurre un pï¿œ di confusione e non ï¿œ importante ai fini della risoluzione 
del quesito principale.
Cmq. l'applicazione al momento funziona su una sola postazione e si 
avvale di un codice a barre che il cliente ha con se.


Il file xml e' unico per tutti, o comunque unico per cliente,
suppongo.
Se piu' terminali accedono in modifica allo stesso file xml e tu non
gestisci i lock dello stesso, l'ultimo che chiude si fuma i dati
scritti dai precedenti.
Sulla carta e' tutto bello: leggi, scrivi, chiudi, leggi, scrivi,
chiudi, ma in pratica, in situazioni di criticita' e carico, potrebbe
succedere che le operazioni dai diversi terminali si mescolano e
quindi puo' succedere:
 leggi, scrivi, leggi, scrivi, chiudi, chiudi
e se non c'e' una gestione dei lock...

 e se non c'e' una gestione dei lock...
Quindi se voglio gestire i lock l'unica ï¿œ usare un gestore di db tipo 
Sql Server con tabelle Temporanee.
No ?

 No ?
No, si possono anche usare Tabelle Non Temporanee, che e' meglio (*).
In ogni caso i database relazionali sono fatti apposta per questo genere
di applicazioni.
(*) le tabelle temporanee le lasciamo volentieri ad applicazioni batch o
stored procedure "pesanti".

 No ?
No!
I lock si possono gestire anche su tradizionalissimi file.
La questione e' quella di prevederla una gestione dei lock.
Poi, visto che tanto hai gia' un db, credo anche io che sia molto piu'
agevole sfruttarlo anche per questi record temporanei, che con un db,
la gestione dei lock e' piu' pratica.