Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Sicheres arbeiten mit Dateien im Netzwerk (https://www.delphipraxis.net/57278-sicheres-arbeiten-mit-dateien-im-netzwerk.html)

Baeuerle 18. Nov 2005 11:48


Sicheres arbeiten mit Dateien im Netzwerk
 
Hallo,

so jetzt mal was allgemeines. Wisst Ihr was Windows mit euren Dateien anstellt ??

Folgende Situation:

Ein Client öffnet eine Datei auf dem Server
Delphi-Quellcode:
fs:=TFilestream.Create('\\Server\Share\File',fmOpenreadWrite);
-> Die Datei wird also in den lokalen Arbeitsspeicher gezogen ?!?

Die Datei wird verändert
fs.Write(record,sizeof(record));

-> Was passiert jetzt? wo wird geschrieben? direkt auf der HDD vom Server?

RavenIV 18. Nov 2005 12:12

Re: Sicheres arbeiten mit Dateien im Netzwerk
 
vermutlich wird direkt auf dem server geschrieben.
vorausgesetzt, du hast die passenden rechte dazu.

öffne doch mal ne datei auf'm server im editor und verändere sie.
dann wird sie acuh direkt auf'm server gespeichert.

Baeuerle 18. Nov 2005 12:23

Re: Sicheres arbeiten mit Dateien im Netzwerk
 
Hm,

wenn ich in eine Datei auf dem Server etwas schreiben möchte was ist sicherer?

1) Datei mit Stream öffnen schreiben und schließen

2) Datei lokal kopieren stream öffnen schreiben und wieder auf den Server kopieren?

1 oder 2 ?

Es geht darum bei inistabilen netzwerken eine möglichst hohe sicherheit zu gewährleisten

RavenIV 18. Nov 2005 12:35

Re: Sicheres arbeiten mit Dateien im Netzwerk
 
du musst noch etwas anderes bedenken:
ein anderer user könnte die datei verändern, während du sie geöffnet hast => exklusiv öffnen.
schlimmer wäre es noch bei 2), da würdest du die Änderungen des Kollegen überschreiben.

kritisch wird es beim speichern nur, wenn das Netzwerk abkackt, während du schreibst.
datei öffnen von Server - verändern - schreiben auf Server - währenddessen stirbt das netzwerk => du weisst nicht, wieviel geschrieben wurde, vermutlich ist die Datei komplett zerstört.

die Version hier ist besser:
Datei öffnen von Server - verändern ohne schreiben - Netzwerk kackt ab - Netzwerk kommt wieder - schreiben auf Server => kein Problem.

shmia 18. Nov 2005 12:43

Re: Sicheres arbeiten mit Dateien im Netzwerk
 
Zitat:

Zitat von Baeuerle
-> Die Datei wird also in den lokalen Arbeitsspeicher gezogen ?!?

Nein!
Zitat:

Zitat von Baeuerle
Die Datei wird verändert
fs.Write(record,sizeof(record));
-> Was passiert jetzt? wo wird geschrieben? direkt auf der HDD vom Server?

Die Daten werden dem Server übermittelt. Der Server speichert die Daten evtl. nur im Cache
und markiert die Blöcke als "Dirty".
Andere Prozesse (auch auf anderen Rechnern) sehen nun die veränderten Daten, falls sie gelesen werden.
TFileStream arbeitet im Gegensatz zu read, write, assignfile,... ungepuffert.
Wichtig sind die SHARE-Flags beim Erzeugen des FileStream.
Mit fmShareExclusive kann sichergestellt werden, das kein anderer Prozess die gleiche Datei schreiben oder lesen kann.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:08 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz