Newsgroup: it.comp.lang.visual-basic
Titolo: [VB.Net] Xml al posto dei db "tradizionali", si puo?

Ho terminato la prima fase dello sviluppo di un programma con 
vb.net
 . Ho
deciso per prova di utilizzare solo xml come deposito di dati. Ho inserito
nel programma la possibilita' di configurare dinamicamente la posizione dei
file xml e xsd in modo da condividerli tra piu' utenti. Funziona che e' una
bellezza tranne che se due utenti aprono contemporaneamente il programma e
apportano modifiche l'ultimo che salva sovrascrive le modifiche del primo
utente.
(E' anche logico. Il dataset viene caricato all'inizio con il metodo readxml
al posto del dataadapter e viene riversato nel file xml con il metodo
writexml. )
Quale tecnica si puo' utilizzare per ovviare a questo "piccolo problemino"
;-) ?
Saluti
Riccardo

 ha scritto

e' bello vedere come le stesse cose tornano:
a quanto sembra siamo in pieno 
rlock.net
 :))
per semplificarmi la vita, avevo messo i .dot di word sul server.
magnifico, finche' un utente non si e' trovato sulla toolbar un
cuoricino che nessun altro, salvo uno, sapeva che scopo avesse nella
vita :)
senza conoscere .net:
- modalita' di apertura del file, ma blocchi tutto il file, oppure il
secondo che arriva lo apre in sola lettura e per modificare deve
chiudere e riaprire. hmmm...
- flag da attivare solo quando si entra in edit. se attivo, nessun
altro puo' editare.
altre ipotesi ? e' possibile bloccare solo un troncone di un xml,
caricandolo tipo chunks ? sono realmente curioso, e' un problema che
travalica dotnet.
--
ciao
www.sundaysw.com

 altre ipotesi?
Una, ma non è molto fantasiosa: il file xml dovrebbe essere gestito da un
unico utente (un servizio, web o meno), che scambia messaggi con gli altri
utenti (ma qui scadiamo nel multitier ;-) ).
Volendo (c'è più fantasia) si potrebbe anche fare in maniera paritetica: il
primo che apre il file in maniera esclusiva scrive in un file nella
directory condivisa con il proprio indirizzo di rete, gli altri che si
connettono e trovano il file xml impegnato, leggono velocemente il file con
l'indirizzo, si connettono con l'applicativo all'indirizzo dato ed iniziano
a scambiare messaggi con quest'ultimo.. in ogni caso questo approccio
avrebbe senso soltanto se il numero di file xml da condividere è elevato,
così da realizzare una certo impegno distribuito statisticamente delle
risorse.. se il file è uno solo, molto meglio il multi-tier..
-- 
Ale
La RFD originale per it.comp.dotnet su
http://www.sen.it/stoa/articles.asp?id=10
Se vuoi discuterne, vai su it.news.gruppi

Ciao!
A meno di implementare un sistema di scambio messaggi sul disco (tipo
Access) vedo un solo sistema: creare un componente/servizio che gestisca i
dati al quale le applicazioni (leggi: le istanze dell'applicazione) si
connettono. Ovvero sostanzialmente ricreare un server di database... Il
problema vero é: "NE VALE LA PENA"? Con dotnet non é particolarmente
difficile realizzarlo però comunque forse coviene ancora un buon MSDE/SQL
Server.
                            Ciao
                                            Allanon
--
- SPAMKILLER
 L'indirizzo delle risposte é 
itlangv...@michele.sytes.net
 LASCIATE il NOSPAM fa parte dell'indirizzo :-)
  Per superare le impostazioni di protezione antispam scrivete
  nel testo del messaggio la scritta "SPAMKILLER"
Scusate il disturbo, ma non posso più di pubblicità

Forse esiste un modo per risolvere questo problema utilizzando
GetChanges e diffdiagram. Il primo se non ho capito male rilegge il dataset
e il secondo fa un confronto tra quello modificato e quello appena
riletto... sto studiando la faccenda quindi non sono in grado di dire con
certezza se e' fattibile.
Cmq riflettendo, anche Ado lavoro con i dati sconnessi. Cioe' dopo aver
caricato nel dataset i dati a quel punto se un altro utente con unaltro
programma li modifica noiche ne sappiamo? Credo che il problema possa
esserci anche con i tradizionali dbms o mi sbaglio?
Saluti
Riccardo

 Riccardo
Ciao
Andrea

Un metodo poco elegante:
Non so su un file.xml
ma su un file.txt abbiamo utilizzato la data e il tempo dell'ultima modifica
del file.
Un accorgimento:
il valore più piccolo sono i secondi , ma se fai in modo che tra la lettura
e la modifica intercorra un tempo maggiore di un secondo , puoi verificare
se il file è stato modificato.
giuseppeD

 ha scritto

se l'editing e' solo manuale, ok.
ma, anche su un pc lento, da codice si possono generare decine o
centinaia di file al secondo...
l'affidabilita' quindi dipende prob dall'impostazione del programma.
ciao

 ha scritto nel messaggio
news:b0jgpq$q3jfd$1...@ID-51318.news.dfncis.de...


Venia per il post precedente.
Vediamo se cosě č meglio:
1- Pima lettura e costruzione DataTable1
2- Copia del DataTable1 in DataTable2
3- Modifiche di uno
4- Verifica se il file č scrivibile
5- se si renderlo  sola lettura
6- lettura del file , costruzione DataTable3
7- confronto tra i due DataTable
8- ecc ......

 ha scritto
