Warning: preg_match(): Compilation failed: group name must start with a non-digit at offset 8 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 739

Warning: preg_match(): Compilation failed: group name must start with a non-digit at offset 8 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 739

Warning: preg_match_all(): Compilation failed: group name must start with a non-digit at offset 4 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 717

Warning: Invalid argument supplied for foreach() in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 718

Warning: preg_replace(): Compilation failed: group name must start with a non-digit at offset 4 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 722

Warning: preg_match_all(): Compilation failed: group name must start with a non-digit at offset 4 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 717

Warning: Invalid argument supplied for foreach() in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 718

Warning: preg_replace(): Compilation failed: group name must start with a non-digit at offset 4 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 722

Warning: preg_match_all(): Compilation failed: group name must start with a non-digit at offset 4 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 717

Warning: Invalid argument supplied for foreach() in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 718

Warning: preg_replace(): Compilation failed: group name must start with a non-digit at offset 4 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 722

Warning: preg_match_all(): Compilation failed: group name must start with a non-digit at offset 4 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 717

Warning: Invalid argument supplied for foreach() in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 718

Warning: preg_replace(): Compilation failed: group name must start with a non-digit at offset 4 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 722

Warning: preg_match(): Compilation failed: group name must start with a non-digit at offset 8 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 739

Warning: preg_match(): Compilation failed: group name must start with a non-digit at offset 8 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 739

Warning: preg_match(): Compilation failed: group name must start with a non-digit at offset 8 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 739

Warning: preg_match(): Compilation failed: group name must start with a non-digit at offset 8 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 739
HWR-Chat: Pflichtenheft – It2010-g1

HWR-Chat: Pflichtenheft


Warning: preg_match(): Compilation failed: group name must start with a non-digit at offset 8 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 739
Aus It2010-g1
Wechseln zu: Navigation, Suche
(Nachrichtenweiterleitung vom Server)
(Datenerhaltungskonzept: Server Data Access Object)
Zeile 328: Zeile 328:
 
*Die Anmeldung der User soll am Server erfolgen. Dabei lädt der Nutzer sein Profil sowie seine ihm bekannten Kontakte und Gruppen. Diese Daten müssen daher für den Server vorgehalten werden, damit dieser sie bei Bedarf speichern, bearbeiten oder auch löschen kann. Um auch bei einem möglichen Absturz oder beim Herunterfahren konsistente Daten zu gewährleisten, soll hierzu eine Datenbank genutzt werden.
 
*Die Anmeldung der User soll am Server erfolgen. Dabei lädt der Nutzer sein Profil sowie seine ihm bekannten Kontakte und Gruppen. Diese Daten müssen daher für den Server vorgehalten werden, damit dieser sie bei Bedarf speichern, bearbeiten oder auch löschen kann. Um auch bei einem möglichen Absturz oder beim Herunterfahren konsistente Daten zu gewährleisten, soll hierzu eine Datenbank genutzt werden.
  
*Diese Lösung ist zwar sehr konsistent, aber mit Java nur schwer umsetzbar. Aus dem Grund sollen zusätzlich alle Daten auf dem Server auf folgende Weise bereitgestellt werden:<br>Es gibt eine Liste von Benutzerobjekten. Ein Objekt vom Klassen-Typ Benutzer hat als Attribut selbst eine Liste von Usern, die es kennt. Diese Kennt-Liste enthält echte Objektreferenzen auf die User, die auch in der globalen Liste vertreten sind. Dasselbe Konzept liegt vor, wenn eine Gruppe eine User-Liste von Usern hat, die der Gruppe bekannt sind.
+
*Für die konkrete Implementierung bedeutet das, dass es zwei unterschiedliche Datenmodelle gibt. Zum einen die Datenbank selbst (und deren Schnittstelle um Daten auszulesen/speichern) und einem internen Datenmodell des Servers. Beim initialen Start wird die Datenbasis des Servers mit der Datenbank synchronisiert, was im konkreten Fall bedeutet, dass alle Nutzer und Gruppen geladen werden.
 +
Werden nun lesende Anfragen gestellt, wird nur die ServerDatenStruktur benutzt, die Datenbank bleibt unangetastet (Performance).
 +
Erst wenn Daten verändert werden muss ein Abgleich mit der Datenbank und dem Server erfolgen, damit die Daten konsistent bleiben.
  
*Ändert sich eine beliebige Eigenschaft eines User-Objektes, so ist diese Eigenschaft auch der Gruppe bekannt, da die Liste von Usern eine Objektreferenz auf dieses User-Objekt hat.
+
*Die Datenerhaltung auf dem Server erfolgt durch einen Liste von Benutzerobjekten, die wiederum Referenzen auf andere Gruppen/User Objekte besitzen. Diese Objektorientiertheit hat den Vorteil, das bei Änderung eines Users, die User die auf diesen User referenziert worden sind quasi sofort die aktuellen Daten bereithält. Der Server muss bei Änderungen nur dafür Sorge tragen, dass alle Freunde die diesen Nutzer kennen diese Änderung auch mitbekommen.
  
*Das Datenerhaltungskonzept wird folgendermaßen implementiert:<br>Wenn der Server gestartet wird, werden für alle bekannten Nutzer und Gruppen aus der Datenbank mit all ihren bekannten Relationen und Objektreferenzen die Objekte erstellt.<br>Sobald Daten geändert werden, geschieht dies sowohl in der Datenbank, wie auch in den User-Objekten.
+
*Die einzigen Daten die nicht mit der Datenbank synchronisert werden sind die Statuseinträge, da diese ja eben nur Live existieren. (Eine benutzerdefinierte Statusnachricht (Weiterentwicklung) würde wiederum gespeichert werden.)
  
 
===Config-Manager===
 
===Config-Manager===

Version vom 7. November 2011, 20:53 Uhr

Meine Werkzeuge
Namensräume
Varianten
Aktionen
Navigation
Projekte
Werkzeuge