Architektur - Singleton-Klasse so in Ordnung?

  • C#
  • .NET (FX) 4.0

Es gibt 35 Antworten in diesem Thema. Der letzte Beitrag () ist von Trade.

    ErfinderDesRades schrieb:

    wenn ich Daten laden und bearbeiten möchte, schließt das für mich ein Dataset eiglich nicht von vornherein aus
    Naja, weißte. Hier hängt drum herum noch ein bisschen mehr dran. DataSets sind von mir aus recht, wenn ich irgendwo wirklich mit Datenbanken rumhantiere und diese dann auch nur entsprechend bearbeite und wieder ablege. Davon abgesehen, dass ich aber selbst da das MySQL Entity Framework o. ä. verwenden würde.
    Nur geht's hier halt um wenig mehr drumrum. Meine Daten liegen serialisiert vor (im JSON-Format) und die müssen halt überall schnell parat sein und entsprechende Daten bereitstellen und da reicht mein Datenmodell in Form einer stinknormalen Klasse bzw. Struktur, die ich serialisieren kann.

    ErfinderDesRades schrieb:

    ungut über verschiedene Dialoge verteilte Funktionalität - habich das richtig mitgekriegt?
    Naja, eher weniger. Die Funktionalität passt ja so, es geht nur darum, wie ich entsprechend an die Daten komme, damit ich die schön implementieren kann.

    Ich werde mich jetzt einfach für eine statische Klasse entscheiden, ist wohl die einfachste Lösung.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    ah - die fehlende Information war also, dass du dich bereits auf serialisierbare Klassen als Datenmodell festgelegt hast. Ich will dir da garnix ausreden, tatsächlich hab ich in diesem Thread ja garnet mit Datasets angefangen (thefiloe wars).
    Wusstest du, dass man auch serialisierbare Klassen mit Databinding präsentieren und bearbeiten kann?
    (Wenn nicht - interessierts dich?)

    Die Funktionalität passt ja so, es geht nur darum, wie ich entsprechend an die Daten komme, damit ich die schön implementieren kann.
    ja, habich doch gesagt: die Funktionalität ist ungut verteilt.
    @ErfinderDesRades So sehr das von dir geliebte DataSet auch in vielen Fällen seine Dienste erfüllt - es ist nicht die Allzwecklösung für alles.:D

    Grüße
    "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

    Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!
    Vorschlag, den ich bereits vor 2 Tagen bei Skype eingebracht habe:
    Die ganze Administration benötigt die Daten der aktuellen Session. Mach eine Session-Class und befülle sie beim Laden einer Konfiguration, dann nutze sie überall.

    Grüße
    "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

    Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!

    ErfinderDesRades schrieb:

    Wenn nicht - interessierts dich?
    Jo, klar. Kann man sich ja mal anschauen, wenn's das schon gibt, dass man da speziell mit DataBinding arbeiten kann. Bleiben werde ich dann wohl einfach bei der statischen Session-Klasse, aber ich lasse mich da gerne mal drauf ein.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Lässt sich lösen, indem man einfach eine einzige Session verwaltet, die man dann serialisiert.
    "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

    Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!
    Es geht ja hier auch um Singletons. Warum hier von statischen Klassen gesprochen wird verstehe ich ohnehin nicht.

    Grüße
    "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

    Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!
    Die Session-Klasse wird doch gar nicht serialisiert, nur das enthaltene UpdateProject, was 'ne normale struct ist.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    ah - genau wie ich in post#27 vermutet/angefragt habe.
    Aber warum eine Struct?
    Structs sind als Datenmodelle meist sehr problematisch, insbesondere wenn von verschiedenen Stellen drauf zugegriffen werden soll.
    Weil wenn eine Struct zugewiesen wird, wird ja immer eine Kopie übergeben, sodass Redundanz-Probleme auftreten, wenn versucht wird, an verschiedenen Stellen Daten zu ändern.

    Also genau was Databinding recht angenehm leisten könnte ist recht konterkarikiert, wenn die Datensätze Structs sind.
    Wieso du hier ein struct nutzt sollst du mir aber auch mal erklären :D
    Spricht irgendetwas gegen meinen Vorschlag?

    Grüße
    "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

    Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!
    ich glaub, das ist nur ein Missverständnis oder eine Verwirrung, weil noch keine Benamung stattgefunden hat, oder zumindest nicht bekannt ist.
    Höchstwahrscheinlich muss es 2 Klassen geben (zur not geht auch beides in einen Singleton, das wäre aber glaub recht ungewöhnlich):
    1) DataModel, ein Singleton oder eine statische Klasse, mit einer Property vom Typ:
    2) Session, oder UpdateProject oder whatever. Jdfs. 2) ist eine Klasse, die durch Deserialisierung erzeugt werden kann, während Datamodel das Statische/Singleton Dingens ist

    Wie nun die Namen lauten, muss Trade sich halt ausdenken.

    Und das wäre dann glaub genau das, was du in post#28 sagst: Eine Session die man deserialisiert und sich ins Datamodel (oder wie immer mans nennt) hängt.

    Nikx schrieb:

    Wieso du hier ein struct nutzt sollst du mir aber auch mal erklären
    Naja, im Prinzip war ich einfach der Meinung, dass die Klasse, die die Projekte repräsentiert, einfach ja nur Properties anbietet und eine Struktur ausreicht. Allerdings ist das da mit dem Setzen von Properties des ActiveProject in meinem Falle auch etwas blöd ("Cannot modify expression because it is not a variable"), sodass ich es nun wieder als normale Klasse behandle. ;)

    Und Session ist eben die statische Klasse, die dann das UpdateProject enthält. Nur das UpdateProject wird serialisiert, denn die Session beinhaltet ja nur die wichtigen Daten für die aktuelle Sitzung, die mit Hilfe des Projekts initialisiert wurden.
    Habe das nun also über die statische Klasse gelöst, was wohl auch am Einfachsten ist.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!: