AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Zugriff auf eine *.ini-Datei über mehrere Rechner im Netzwerk
Thema durchsuchen
Ansicht
Themen-Optionen

Zugriff auf eine *.ini-Datei über mehrere Rechner im Netzwerk

Ein Thema von Jean · begonnen am 23. Mai 2013 · letzter Beitrag vom 27. Mai 2013
Antwort Antwort
Jean

Registriert seit: 15. Mär 2013
10 Beiträge
 
#1

Zugriff auf eine *.ini-Datei über mehrere Rechner im Netzwerk

  Alt 23. Mai 2013, 19:42
Hallo an alle Delphispezialistinnen und -spezialisten,

ich bin noch so ziemich bei den Anfängen der Programmierung mit Delphi. Daher folgende Frage:

Kann es zu Problemen führen, wenn eine Anwendung, die auf ca. 200 Rechnern in einem Netzwerk läuft, auf die gleiche ini-Datei, die auf einem Server abgelegt ist, lesend zugreifen?

In dem App, welches auf den Rechnern läuft, wurde die TMemIni-Komponente verwendet.

Falls es zu Problemen kommen kann, wie kann man das geschickt abfangen?

Noch ein kurze Information zur Systemumgebung:
- auf den Rechnern läuft teilweise WinXP (SP3) oder Win7
- Es kann durchaus möglich sein, dass ca. 30-60 Rechner gleichzeitig gestartet werden (Arbeitsbeginn). Da die Anwendung im Autostart liegt, würde dann auch so ziemlich zeitgleich ein Zugriff der Rechner bzw. der gestarteten Anwendung auf diese ini-Datei auf dem Server erfolgen.

LG, Jean
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.682 Beiträge
 
Delphi 5 Professional
 
#2

AW: Zugriff auf eine *.ini-Datei über mehrere Rechner im Netzwerk

  Alt 23. Mai 2013, 19:49
Solange die Zugriffe tatsächlich nur lesend stattfinden, sehe ich nicht wirklich Probleme. Kritisch wird es, wenn irgendein Schreibzugriff stattfindet, während andere zeitgleich daraus lesen. Unabhängig davon ist vielleicht die Wahl einer INI nicht unbedingt passend für solche verteilten Anwendungen, eine Datenbank kann hier durchaus Vorteile haben.

MfG Dalai
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#3

AW: Zugriff auf eine *.ini-Datei über mehrere Rechner im Netzwerk

  Alt 23. Mai 2013, 20:00
...wenn eine Anwendung, die auf ca. 200 Rechnern in einem Netzwerk läuft
Du wirst bestimmt Einstellungen auf unterschiedlichen Ebenen haben:
  • Systemweit (zentral gespeichert)
  • pro Rechner
  • pro User
Ich würde mal damit beginnen die Einstellungen auf diese Ebenen aufzuteilen.
fork me on Github
  Mit Zitat antworten Zitat
Jean

Registriert seit: 15. Mär 2013
10 Beiträge
 
#4

AW: Zugriff auf eine *.ini-Datei über mehrere Rechner im Netzwerk

  Alt 23. Mai 2013, 20:21
Hallo und danke für die Antworten,

@sx2008: Einstellungsparameter sind dort nicht hinterlegt. Hier werden Informationen hinterlegt, die auf allen Rechnern erscheinen sollen (ähnlich eines Messengers, aber halt nur in eine Richtung).

@dalai: Für eine Datenbank-Anwendung ist dieses App zu klein. Aber ich werde es auf jeden Fall in Erwägung ziehen, vor allem wenn es darum geht, eventuell noch weitere Funktionalitäten zu integrieren.

Der Zugriff ist wirklich nur lesend, da ich im Vorfeld schon prüfe, ob die Datei existiert.

LG, Jean
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Zugriff auf eine *.ini-Datei über mehrere Rechner im Netzwerk

  Alt 23. Mai 2013, 22:49
Hallo,

< Der Zugriff ist wirklich nur lesend, da ich im Vorfeld schon prüfe, ob die Datei existiert. >

Was hat "Datei existiert" , mit Lesezugriff zu tun ?

Stell einfach sicher, dass deine App wirklich keinen Schreibzugriff auf die Ini macht,
dann ist es OK.


Heiko
Heiko
  Mit Zitat antworten Zitat
rwalper

Registriert seit: 6. Sep 2006
48 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Zugriff auf eine *.ini-Datei über mehrere Rechner im Netzwerk

  Alt 24. Mai 2013, 16:10
Hallo,

ich verwende auch Ini-Dateien zum Speichern von zentralen Einstellungen. Dabei konnte ich die Erfahrung machen, dass Ini-Dateien, auf denen häufig zugegriffen wird, Probleme in einem reinen SMB2-Netzwerk bereiten können (nur Rechner mit Windows Server 2008 und Windows Vista aufwärts, kein einziger mit Windows XP!).

Bei SMB2 werden Dateien auf SMB-Freigaben 10s standardmäßig gecached. Das soll so sein, Performance etc., und ist nur abschaltbar, wenn man SMB2 deaktiviert.

Bei Ini-Dateien, die nur selten gelesen werden, ist das kein Problem. Ich hatte aber eine Ini auf einem Server 2008, in der zentrale Programmeinstellungen gespeichert wurden und die häufig gelesen wurde. Hier gab es massive Probleme. Einzelne Ini-Zugriffe dauerten sehr lange. Das ganze Programm lief in Zeitlupe, die Processorlast ging hoch. Über den ProcessMonitor von SysInternals konnte man sehen, dass massenhaft Zugriffe auf diese Ini-Datei stattfanden, auch dann wenn im Programm gerade keine Ini-Zugriffe stattfanden.

Wenn man dann aber auf allen anderen PC's diese Anwendung minimiert hatte, lief wieder alles einwandfrei. Sowie man nur auf einem einzigen PC diese Anwendung wieder als Fenster öffnete (ohne irgendwas zu tun) lief wieder alles in Zeitlupe.

Ich weiß nicht, ob es ein Bug im SMB2-Client-Cache ist(oder war) oder ob nicht irgendeine andere Systemeinstellung damit zu tun hatte (Virenscanner waren alle aus).

Ich habe nun statt einer Ini-Datei eine XML-Datei verwendet (Zugriffe über TXMLDocument). Seitdem läuft es bei allen Kunden stabil.

Gruß
  Mit Zitat antworten Zitat
tgvoelker

Registriert seit: 9. Sep 2002
Ort: Oelsnitz, Vogtland
43 Beiträge
 
Delphi 12 Athens
 
#7

AW: Zugriff auf eine *.ini-Datei über mehrere Rechner im Netzwerk

  Alt 27. Mai 2013, 07:56
Solange Du nicht schreibst, ist alles in Butter. TIniFile.Read... ruft Windows API-funktionen auf, ReadString z.B. GetPrivateProfileString.

Allerdings kommt es für den Fall gleichzeitigen Lesens/Schreibens ggf. zu Deadlocks. Das liegt daran, daß die Windows-API beim Zugriff auf INI-Dateien augenscheinlich kein Locking implementiert, Du diese Locks also selbst setzen müßtest, z.B. indem du die INI-Datei als Filestream mit ShareDenyWrite zum Lesen öffnest und wieder zumachst, wenn Du Deine Werte gelesen hast.

Zum Thema:
http://web.archive.org/web/200803080.../06/68152.aspx
Thomas Völker
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:00 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