AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Konzepte für gemeinsames Arbeiten an einer Datei ohne Server
Thema durchsuchen
Ansicht
Themen-Optionen

Konzepte für gemeinsames Arbeiten an einer Datei ohne Server

Ein Thema von Harry Stahl · begonnen am 3. Mär 2019 · letzter Beitrag vom 15. Mär 2019
Antwort Antwort
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.291 Beiträge
 
Delphi 12 Athens
 
#1

AW: Konzepte für gemeinsames Arbeiten an einer Datei ohne Server

  Alt 4. Mär 2019, 08:37
In dem Zusammenhang erinnere ich mich an ein lustiges kleines Programm namens A Smaller Note 99 von vor 20 Jahren. Das konnte das mit dem shared-Read/Write-File erstaunlich gut. Der Datenaustauschordner wurde einfach auf irgendein Netshare gelegt und sämtliche Teilnehmer-Instanzen auf zich Rechnern griffen darauf zu. Das Programm selbst läuft sogar noch heute auf Win 10, nur der Installer nicht. Ich frage mich wie das da intern realisiert wurde. Vermutlich hat man Schreibversuche so lange in einen Warteloop geschickt bis es keinen Write-Lock mehr auf der Datei gibt.
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
989 Beiträge
 
Delphi 6 Professional
 
#2

AW: Konzepte für gemeinsames Arbeiten an einer Datei ohne Server

  Alt 4. Mär 2019, 09:11
Hmm..

Ich denke aber, das 'A Smaller Note 99' einfach in den definierten Ordner immer eine neue Nachricht als neue Datei ablegt und der Empfänger diese liest und löscht..

Somit würde hier nur einer schreiben und einer lesen...

Wenn jedoch auf die gleiche Datei schreibend von verschiedenen PCs zugegriffen werden soll, dann muss hier ein Locking stattfinden.

Dieses könnte durch zusätzliches Ablegen eine 'Lock' Datei des Schreibers erfolgen, oder unter Verwendung von exclusivem öffnen der Datei per Dateisystem.

Bei beidem würde der 2. Schreiber warten, bis das Lock aufgehoben wurde. Dann würde jedoch der 2. Schreiber die Datei 'überschreiben'.
Bei Verwendung der 'Lock'Datei könnte hingegen der 2. Schreiber erstmal die Datei einlesen, Vergleichen und nur seine eigenen Änderungen hinzufügen, selbst wenn die Datei während des Compares nicht mehr geöffnet ist, bleibt das Lock bestehen..
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.734 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: Konzepte für gemeinsames Arbeiten an einer Datei ohne Server

  Alt 4. Mär 2019, 09:27
Im Prinzip kann natürlch ein Client auch gleichzeitig Server sein. Dazu dann noch eine automatische Erkennung, welcher Client der Server ist, und schon entfällt die Konfiguration weitestgehend.

Aber der "Server-Client" muss dann natürlich laufen, wenn die anderen Clients funktionieren sollen.

Trotzdem schreckt es vermutlich weniger ab, wenn man sagt: "Der Hauptrechner muss immer laufen." als wenn man von einem Server spricht.

Dann gäbe es noch die Möglichkeit, dass alle Clients lesend auf dieselben Dateien im Netz zugreifen und nur beim Schreiben eine Synchronisation notwendig wird. Da muessten sich dann die Clients dynamisch auf einen "Server" einigen.

Oder man löst es ganz traditionell mittels File-Locking.

All das funktioniert natürlich nur sehr bedingt mit Cloud-Synchronisation, weil da auch kaputte Daten übertragen werden könnten. Außer man legt einen Lock auf die komplette Datei, die könnte dann zumindest nicht kaputt übertragen werden. Was der Sync-Prozess dann allerdings macht, ist ungewiss. Im Schlimmsten Fall schlägt das Öffnen fehl und die Synchronisation löscht deshalb die Datei in der Cloud.
Thomas Mueller
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.561 Beiträge
 
Delphi 12 Athens
 
#4

AW: Konzepte für gemeinsames Arbeiten an einer Datei ohne Server

  Alt 4. Mär 2019, 12:31
Im Prinzip kann natürlch ein Client auch gleichzeitig Server sein. Dazu dann noch eine automatische Erkennung, welcher Client der Server ist, und schon entfällt die Konfiguration weitestgehend.

Aber der "Server-Client" muss dann natürlich laufen, wenn die anderen Clients funktionieren sollen.
Aber auch da habe ich dann eine Netzwerk-Kommunikation. Es soll aber auch funktionieren, wenn ein Anwender mit dem PC auf eine Datei z.B. in der Cloud Zugriff hat und ein anderer mit einem Tablet oder iPhone.

Ich denke für die einfachsten Sachen (Datensatz hinzugefügt, geändert, gelöscht) könnte man einfach prüfen ob das Dateidatum geändert wurde, in diesem Fall die Datei laden, die erkannten Änderungen im Vergleich zum eigenen aktuellen Stand hinzufügen und - falls eigene Änderungen vorgenommen wurden, auch die in einen logischen aktuellen Stand einpflegen und speichern, so dass andere Anwender sich auch die eigenen Änderungen laden können.

Unter Windows kann man ja sehr schön eine Benachrichtigung einrichten, wenn eine Datei geändert wurde, muss mal prüfen, wie das bei den anderen Plattformen ist (sonst zur Not per regelmäßigem Pull).

Danke auch für den Hinweis auf TMS Echo. Könnte eine Lösung sein, aber wahrscheinlich müsste ich alles umstricken. Daher lieber eine Anpassung der eigenen Lösung.
  Mit Zitat antworten Zitat
Benutzerbild von scrat1979
scrat1979

Registriert seit: 12. Jan 2007
Ort: Sulzbach a.d. Murr
1.029 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Konzepte für gemeinsames Arbeiten an einer Datei ohne Server

  Alt 4. Mär 2019, 13:10
Wenn die „Servervariante“ wegfällt würde ich persönlich beim Öffnen der Datei ein Flag in diese schreiben um anderen Clients zu signalisieren, dass die Datei gerade bereits geöffnet ist. Dies setzt voraus, die Datei zunächst lesend zu öffnen, den Flag auszulesen und die Datei - wenn negativ - dann schreibend zu öffnen und den Flag neu zu setzen.

Man müsste sich dann nur Gedanken machen, wie man den Flag zurücksetzt wenn die Anwendung im Betrieb abschmiert... eventuell durch zusätzlichen Timestamp wann der Flag gesetzt wurde.
Michael Kübler
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#6

AW: Konzepte für gemeinsames Arbeiten an einer Datei ohne Server

  Alt 4. Mär 2019, 13:46
Ich finde das latent gruselig.

Was bedeutet "..ein Datensatz geändert oder gelöscht.."? Es geht nicht um bspw. Textdateien oder Word, sondern um Datenbankdateien? (Also sqlite vermutlich)?

"Einfach ein Flag schreiben wenn.."
Diese Sachen kennt man als Delphinutzer o.ä. ja von der BDE. Hat immer Spaß gemacht, die Sperrdateien zu löschen. Sprich selbst Server spielen. Wenn keine weiß, was eigentlich die Ursache ist, kann man sich damit noch beliebt machen, weil das System ja wieder läuft.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.561 Beiträge
 
Delphi 12 Athens
 
#7

AW: Konzepte für gemeinsames Arbeiten an einer Datei ohne Server

  Alt 4. Mär 2019, 14:25
Ich finde das latent gruselig.

Was bedeutet "..ein Datensatz geändert oder gelöscht.."? Es geht nicht um bspw. Textdateien oder Word, sondern um Datenbankdateien? (Also sqlite vermutlich)?
Ja, stimmt schon (latent gruselig). Aber es ist eben nur als zusätzliches Angebot gedacht, für Anwender die nicht im vollen Client-Server Betrieb mit dem Produkt arbeiten wollen. Insofern würde es da auch nicht alle Möglichkeiten geben, das erkennen und Berücksichtigen von Änderungen der Datensätze würde reichen.

Das Datenbankformat ist ein eigenes, da gibt es insofern alle Freiheiten für mich.

Wie gesagt, mir würde da schon etwas einfallen. Aber die Frage war halt, ob es schon bestehende Konzepte

für diesen Problemfall gibt, also eine Art Richtlinie, an der man sich lang angeln könnte, wenn man etwas implementiert ("um nicht wieder alles neu erfinden zu müssen").
  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 18:10 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz