Announcement

Collapse
No announcement yet.

Wie merke ich mir den Zustand für alle Clients??

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Wie merke ich mir den Zustand für alle Clients??

    Hallo liebe Leute,

    ich brauche mal wieder einen guten Fachrat von euch.

    Ich möchte eine Webanwendung bauen. Diese Webanwendung soll sich Daten aus der Datenbank holen und sie in der Session speichern. Alle Anwender sollen dabei auf diese Session zugreifen. Es soll sich dabei also nicht um eine UserSession handeln für nur einen Client, sondern um eine Session, die innerhalb der ganzen Anwendung gültig ist und auf die alle User zugreifen können.

    Das ist aber noch nicht alles. User haben die Möglichkeit die Daten in der Session zu ändern. Wenn das geschieht, sollen alle Clients, die gerade daran arbeiten davon mitbekommen und es sollen die neuen Daten aus der Session geholt werden und auf der Oberfläche dargestellt werden.

    Wie gehe ich da am besten vor??

    Ich habe mich schon erkundigt und herausgefunden, dass man für sessions gewisse scopes setzen kann. Hierbei könnte ich dann den Application scope nehmen. Der wäre ja dann innerhalb der ganzen Anwendung gültig oder nicht?

    lg

  • #2
    Scopes

    Hallo daniel_bln,

    Du bist schon auf der richtigen Spur. Es gibt bei Webanwendungen drei sog. Scopes, in denen Daten (zwischen-)gespeichert werden können. Den Request-Scope, den Session-Scope und den Application-Scope.
    Daten im Request-Scope sind nur bei der Bearbeitung des Requests sichtbar und sind sofort ungültig, nachdem der etnspr. Request bearbeitet und ein Response generiert wurde.

    Daten im Session Scope sind solange sichtbar wie die Session läuft, also bis der Nutzer sich ausgeloggt oder seinen Browser geschlossen hat. Sie sind nur bei der Bearbeitung von Requests sichtbar, die von dem jeweiligen Nutzer kommen. Der Session Scope eignet sich also nicht, um Daten mehreren verschiedenen Nutzern anzuzeigen.

    Daten im Application Scope sind solange sichtbar, wie die Webanwendung selbst läuft. Sie sind unabhängig von Requests oder Sessions. Der Application Scope würde sich also eignen, um Daten mehreren Nutzern zugänglich zu machen. Aber, weil die Daten völlig unabhängig von Sessions und Requests sind, müsstest Du dich selbst darum kümmern, welche Nutzer die Daten angezeigt bekommen und welche nicht. Auch wann die Daten gelöscht (invalidiert) werden müsstest Du selbst programmieren.

    Nach dem, wie Du Deinen Anwendungsfall beschreibst, würde ich die Änderungen, die ein Nutzer macht, in der Datenbank speichern. Und wenn ein anderer Nutzer sich die Seite anzeigen lässt die Daten auch aus der Datenbank laden. Dann sieht dieser andere Nutzer die Änderungen auch. Wenn Du unnötige Datenbankzugriffe verweiden willst, arbeite mit einem ORM-Produkt wie z.B. Hibernate. Selbst programmieren würde ich das nicht.

    Prinzipiell ist es keine gute Idee, einen der Scopes mit zu vielen Daten (sog. Statusinformationen) aufzuladen.

    Gruß ngomo
    http://www.winfonet.eu

    Comment

    Working...
    X