AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Konzeptfrage: Datenobjekte syncronisieren

Ein Thema von stahli · begonnen am 16. Jun 2011 · letzter Beitrag vom 25. Jul 2011
 
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.351 Beiträge
 
Delphi 11 Alexandria
 
#1

Konzeptfrage: Datenobjekte syncronisieren

  Alt 16. Jun 2011, 16:59
Es ist noch nicht soweit, aber ich überlege, welches Konzept das beste wäre, meine Daten später einmal über ein Netzwerk/Internet zu syncronisieren.

Folgender Stand:

Ich halte Daten zur Laufzeit im Hauptspeicher in Objekten. Diese verwalten die Daten und enthalten die Geschäftslogik. Zur Laufzeit wird eine Datei geladen und die darin definierten (Daten-)Objekte werden erzeugt (ähnlich einer dfm).
Die Datenmenge ist so groß, dass sie im Speicher gehalten werden kann.

In einer GUI-Schicht werden (anbhängig von den vorliegenden Datenobjekten) dynamisch passende sichtbare Objekte erzeugt, die die Daten darstellen und eine Bearbeitung ermöglichen (anbei mal zwei Screenshots). U.a. gibt es einen Designer, auf dem Objekte hinzugefügt, verschoben und gelöscht werden können. Diese Manipulationen werden dann an die Datenschicht weitergeleitet.

Lokal funktioniert das alles schon mal wunderbar.

Nun möchte ich (später einmal) eine Möglichkeit anbieten, im Netzwerk/Internet mit mehreren Clients auf die gleichen Daten zuzugreifen. Clients sollen dann die Berechtigung nur zur Einsicht oder auch direkt zur Bearbeitung der Daten erhalten können.

Ursprünglich hatte ich die grundsätzliche Idee, eine einfache Datenbank als zentralen Datenspeicher zu nutzen. Die Getter und Setter meiner Objekte müssten dann "einfach" auf die Datenbank statt auf Ihre eigenen Felder zugreifen.

Ich bräuchte 2 Tabellen:
- TableStructure bildet die Objektstruktur der ineinander verschachtelten Objekte ab: ObjectId, ObjectClass, OwnerId
- TableData enthält die Objektdaten: ObjectId, PropName, PropText
Die Client-Objekte müssten dann über Zeitstempel immer prüfen, ob in der Datenbank Änderungen vorliegen.
Ein besonderes Problem ist die Konfliktbehandlung, wenn z.B. von einem Client aus ein Objekt gelöscht wird (da wäre z.B. ein Feld "Destroyed" denkbar). (Gleichzeitige schreibende Zugriffe sind aber - zumindest in meinem aktuellen Projekt - kaum zu erwarten).

Ich hatte so etwas mal grob angetestet und das sah ganz erfolgversprechend aus. (Wenn ich eine Komponente auf meinem PC verschoben habe, wurde die auch auf dem Laptop im Client verschoben und umgekehrt - also grundsätzlich sollte das machbar sein).


Anscheinend könnte man aber auch Datasnap für die Kommunikation für solche Zwecke nutzen!? (Videos ganz unten)
Im Beispiel wird ein kleiner Chat aufgebaut. Aber man kann ja auch Objekte über JSON übertragen!? Bzw. müssten die Clients einmal alle Objekte erhalten und sich dann gegenseitig über alle Änderungen informieren...
Der "Server" wäre der erste Rechner, der die Daten lädt. Die anderen würden sich als Clients anmelden (mit Lese- oder auch Schreibrechten).


Was wäre die beste Richtung - wenn ich unbedingt bei meinen Datenobjekten bleiben will.
(Eine klassische Datenbankanwendung kommt für mich nicht in Frage. Der User soll alles haptisch bedienen können und die Geschäftslogik soll in den Objekten bleiben.)


Die Datenbank(zwischenspeicher)lösung würde ich mir wohl grundsätzlich zutrauen.
Die Variante mit DataSnap klingt interessanter - wenn es denn so funktioniern kann.
Angehängte Grafiken
Dateityp: jpg o1.jpg (51,4 KB, 74x aufgerufen)
Dateityp: jpg o2.jpg (64,1 KB, 65x aufgerufen)
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)

Geändert von stahli (17. Jun 2011 um 10:37 Uhr)
  Mit Zitat antworten Zitat
 


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 08:54 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 by Thomas Breitkreuz