AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Datei in Echtzeit "teilen"
Thema durchsuchen
Ansicht
Themen-Optionen

Datei in Echtzeit "teilen"

Ein Thema von 64Jabor · begonnen am 21. Jun 2009 · letzter Beitrag vom 25. Jun 2009
Antwort Antwort
Seite 1 von 3  1 23      
64Jabor

Registriert seit: 9. Jan 2008
158 Beiträge
 
Delphi 7 Personal
 
#1

Datei in Echtzeit "teilen"

  Alt 21. Jun 2009, 20:32
Liiiebe DP,

bevor einer meckert, JA ich HABE gesucht und nix gefunden, was mich überrascht hat, denn ich dachte, dass mein Problem schonmal jedem über den Weg gelaufen ist - eventuell habe ich aber auch einfach nur mit falschen Suchbegriffen gesucht

Das Problem ist folgendes:
Ich habe Webspace, auf dem ich eine Datei hochlade.
Mein Programm lädt sich die Datei herunter, liest sie ein, der Benutzer kann was ändern und seine Änderungen werden sofort wieder retour hochgeladen.
Soweit so gut...

Kommt nun aber ein zweiter Client hinzu, der eine Änderung vornimmt, während der andere gerade etwas anderes ändert, so würde die zweite Person nach der ersten die alte Datei hochladen mit lediglich seiner Änderung, sodass die Änderungen von Person 1 verworfen wären!
Meine Idee: Prüfen wir doch einfach vorher, ob die Datei die wir haben noch aktuell ist...
Aber was wenn nicht? In dem Fall bekommt Person 2 eine Meldung, dass die datei verändert wurde und er sich das doch bitte vorher erstmal anschauen soll, denn
eine GLEICHZEITIGE Änderung desselben Wertes wäre mit einfachem Download, Upload fatal!
Wollen wir diese Möglichkeit aber einfach erstmal ausschließen...
Okay das war langatmig und sinnfrei, hier nochmal einfach

Es geht eher allgemein darum, wie kann ich Informationen in Echtzeit in mehreren Clients synchron halten? Ich verstehe es im Moment einfach nicht!

Schonmal vielen Dank für eure Zeit...
Sebastian
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.029 Beiträge
 
Delphi 12 Athens
 
#2

Re: Datei in Echtzeit "teilen"

  Alt 21. Jun 2009, 20:42
im Notfall kannst du auch einfach die Dateien sperren, sobald jemand daran arbeitet.

- Erster lädt eine Datei runter und diese Datei wird entsprechend auf dem Server makiert.
- Zweiter bekommt eine Meldung, daß diese Datei grade in Bearbeitung ist.
- Erster läd Datei hoch und sie wird wieder freigegeben
- Zweiter kann jetzt laden

- falls bei Erstem was passiert, wird auf dem Server nach einer Weile die Datei ebenfalls wieder freigegeben, so daß sie nicht ausversehn ewig blockert bleibt
(das Programm des Wweiten könnte auch noch in regelmäßigen Abständen seinen Bearbeitungsstatus aktualisieren, so mitteilen, daß er noch lebe und die Sperrzeit somit verlängert wird)


Ansonsten gab's hier vor 'ner Weile die Nachfrage nach so'ner Art "Live-Editor", wo Zwei/Mehrere über eine INetverbindung gleichzeitig an einer Datei arbeiten und beim jeweils Anderen die eigenen Änderungen sofort einfließen.

Dafür bräuchten die Programme aber sändige Verbindung zum Server oder eine zumindestens eine gegenseitige Verbindung.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
64Jabor

Registriert seit: 9. Jan 2008
158 Beiträge
 
Delphi 7 Personal
 
#3

Re: Datei in Echtzeit "teilen"

  Alt 21. Jun 2009, 20:43
Das wäre zwar eine Möglichkeit, aber ich will es ja ermöglichen, dass 2 Leute oder mehr, gleichzeitig Veränderungen vornehmen können!
Sebastian
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.029 Beiträge
 
Delphi 12 Athens
 
#4

Re: Datei in Echtzeit "teilen"

  Alt 21. Jun 2009, 20:44
Zitat von 64Jabor:
Das wäre zwar eine Möglichkeit, aber ich will es ja ermöglichen, dass 2 Leute oder mehr, gleichzeitig Veränderungen vornehmen können!
siehe meinen Nachtrag da oben :


Aber das Einfachere auch hier wäre, wenn man einfach Dateiteile sperrt, anstatt ganzer Dateien, so könnten die zumindestens an unterschiedlichen Teilen arbeiten und würden sich dennoch nicht in die Quere kommen
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#5

Re: Datei in Echtzeit "teilen"

  Alt 21. Jun 2009, 20:48
Wie wärs damit:

Wenn A die Datei runterlädt, und B zwischenzeitlich was ändert und danach A seine Änderungen hochladen will passiert folgendes:

A bekommt die Datei in einer Art Splitscreen-Modus, sodass er die beiden Verionen genau vergleichen kann
  Mit Zitat antworten Zitat
64Jabor

Registriert seit: 9. Jan 2008
158 Beiträge
 
Delphi 7 Personal
 
#6

Re: Datei in Echtzeit "teilen"

  Alt 21. Jun 2009, 20:52
Die Idee finde ich sehr gut!
Aber richtig Echtzeit...ich meine ich kann die Datei auch nicht einmal pro Sekunde runterladen, dann ist das ja nur am rumlaggen, nich

@jfheins
Ja das hatte ich bisher so gehabt, nur ich fand das halt blöd, ich fände es am besten, wenn jede Änderung sofort dargestellt würde, nur weiß ich halt nicht wie ich das realisieren soll...
Sebastian
  Mit Zitat antworten Zitat
Zerolith

Registriert seit: 12. Mär 2003
Ort: Kempten
188 Beiträge
 
Delphi 6 Enterprise
 
#7

Re: Datei in Echtzeit "teilen"

  Alt 21. Jun 2009, 21:04
Hallo 64Jabor,

Mir fallen auf Anhieb zwei Wege ein wie ich das lösen würde:

- Bevor Benutzer 1 die Datei läd, erstellst du eine "LOCK" Datei (Dokument1.doc wird angefordert, Dokument1.doc.LOCK wird erzeugt)
- Benutzer 2 fordert die gleiche Datei an, und erhält bei der Prüfung ob eine Lock Datei für diese Datei existiert eine "Bitte warten" Meldung oder so. Damit kannst du sichergehen dass nur ein User die Datei bearbeiten kann.

Der zweite Weg wäre bestimmt besser für dein Anliegen, aber auch deutlich umfangreicher. Und ich bin mir nicht sicher ob du Shell-Zugriff auf deinen Webserver hast:

- Socket-Server (Unter Linux: PHP, RUBY, Freepascal) der die Anmeldung der User und den Dateitransfer steuert
- zu diesem verbindest du dich mit einem Socket-Client den du dir mit Delphi baust
- Der Ablauf könnte dann ähnlich wie beim Versionierungssystem "Subversion" (SVN) laufen:
- CHECKOUT Datei (Datei laden)
- Bearbeitung durch den Benutzer
- UPDATE eventuelle Änderungen die zwischenzeitlich gemacht wurden laden
- Lokale Datei mit der aktuellen Remote Datei vergleichen und die Änderungen manuell durch den Benutzer einpflegen lassen
- oder automatisiert mit einem Merge-Tool (z.B. TortoiseMerge) "zusammenführen" (gibt bestimmt Commandline Tools dafür)
- COMMIT Die lokale (zusammengeführte) Datei zurückschicken

Bestimmt ist auch eine Mixtur aus beidem möglich.

EDIT: Ach, sehe gerade dass ein paar Andere hier ähnliches vorschlagen
Daniel
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#8

Re: Datei in Echtzeit "teilen"

  Alt 21. Jun 2009, 21:11
Ich stell mir das lustig vor, wenn nicht nur 2 Leute, sondern 20 an ein und derselben Datei rumfrickeln. Wozu soll das denn führen? Auch wenn das irgendwie nett wäre, das man direkt die Änderungen der Anderen mitverfolgen könnte, praktikabel ist das sicherlich nicht, eher eine visuelle Spielerei. Ich könnte mir auch vorstellen, das es eine Herausforderung wäre, das optimal hinzubekommen.

Du willst doch eine praktikable Lösung für das Problem "Gleichzeitiges Ändern einer Datei". Die ganze Datei zu sperren wäre eine Nöglichkeit, aber das ist vielleicht ein wenig zu viel des Guten.

Mach dir mal Gedanken über die Struktur und die kleinste sinnvolle Einheit, die exklusiv zu bearbeiten wäre. Nehmen wir ein Textdokument, irgendeine Abhandlung. Der besteht aus Kapiteln, Abschnitten, Absätzen, Sätzen, Wörtern und Buchstaben.

Welches Element ist hier das kleineste sinnvoll exklusiv zu bearbeitende? Ich würde plädieren, das es der 'Abschnitt' ist, auf jeden fall *nicht* so wie Du es willst, der Buchstabe.

Wenn wir also unsere Datei in 'Abschnitte' unterteilen können, können wir die einzeln sperren und jede Änderung den anderen zugänglich machen. Ob das live geschehen muss, sei mal dahin gestellt.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Reinhard Kern

Registriert seit: 22. Okt 2006
772 Beiträge
 
#9

Re: Datei in Echtzeit "teilen"

  Alt 21. Jun 2009, 22:07
Zitat von 64Jabor:
Das wäre zwar eine Möglichkeit, aber ich will es ja ermöglichen, dass 2 Leute oder mehr, gleichzeitig Veränderungen vornehmen können!
Das ist schon klar, ist ja auch eine lohnende Aufgabe, denn damit wirst du schlagartig weltberühmt. Die vielen tausend Entwickler von Datenbanken wie DB2, Oracle, MySQL usw. haben das Problem nämlich bisher nicht lösen können. Die arbeiten meistens, für dich unvorstellbar primitiv, mit Satzsperren, m.a.W. es können viele an einer Kundendatei arbeiten, aber nie 2 am gleichen Kunden.

Gruss Reinhard
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#10

Re: Datei in Echtzeit "teilen"

  Alt 21. Jun 2009, 22:18
Das geht schon, wenn Du schon mal an einem Remote-Desktop gearbeitet hast, bei dem der User auch noch rum tippt, weist Du wie viel Spass das bringt.

alzaimar hat es ja schon gesagt, es macht keinen Sinn, weshalb bekannte Lösungen logisch kleinste Bereiche sperren.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 07:30 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