4 Stimmen

Bildschirmsynchronisation - Event Aggregator VS Caching ViewModel Referenzen

Ich habe einige Hausaufgaben gemacht und konnte keinen Artikel über bewährte Praktiken finden, wann man welche Methode anwenden sollte.

nur zur Klarstellung: Bei Verwendung des Ereignisaggregatormusters : Jeder Bildschirm hat seine eigene Referenz eines Viewmodels, das Viewmodel veröffentlicht Änderungen mit Hilfe des Eventaggregators, den später die Beobachter benutzen, um ihren Zustand zu synchronisieren.

Zwischenspeicherung von ViewModels : jeder Bildschirm hat die Speicherreferenz des Viewmodels, die Steuerelemente, die an die Eigenschaften des Viewmodels gebunden sind, werden synchronisiert, da jeder Bildschirm in der App die gleiche Referenz des Viewmodels hat (aus einem Cache), sind alle Bildschirme dank der Datenbindung synchronisiert.

Wann sollte man welchen Ansatz wählen? Was sind die Vor- und Nachteile jedes Ansatzes?

1voto

Aviad P. Punkte 30713

Meiner Meinung nach ist der Event-Aggregator-Ansatz besser skalierbar und ermöglicht ein entkoppeltes Design.

Der Ansatz mit einer einzelnen VM (oder mehreren VM-Caching) ist gut, wenn Skalierbarkeit kein Thema ist, da die VM zu monströsen Ausmaßen anwachsen kann, wenn mehr und mehr Ansichten hinzugefügt werden.

Zusammenfassend lässt sich sagen, dass der Event-Aggregator-Ansatz der "richtige" Ansatz für Systeme ist, die für eine lange Lebensdauer ausgelegt sind, aber Sie können den einfacheren Ansatz verwenden, wenn Sie ein internes Tool für einen bestimmten begrenzten Zweck und eine begrenzte Lebensdauer entwickeln.

1voto

Bermo Punkte 4901

Eine andere Möglichkeit, die für allgemeine Daten gut funktioniert, ist die direkte Bindung an eine einzelne Beobachter Klasse, die die erforderlichen Eigenschaften bereitstellt, anstatt doppelte Eigenschaften in mehreren Viewmodels zu haben, die synchronisiert werden müssen.

Die Verwendung eines Beobachters ist zwar stärker gekoppelt als das Abonnieren/Veröffentlichen eines Ereignisaggregators, aber wenn Beobachterschnittstellen mithilfe eines IOC-Containers injiziert werden, bleibt die Kopplung immer noch recht locker und es ist sehr einfach zu bestimmen, welche Viewmodels von welchen Beobachtern abhängig sind.

0voto

Erik Ashepa Punkte 1

Danke für die schnelle Antwort! was Sie sagen, ist nur wahr, wenn die gleiche VM-Klasse für mehrere Bildschirme verwendet wird und den Vertrag für jeden von ihnen erfüllt (in dieser Situation könnte die VM redundante Felder enthalten, die in einigen Bildschirmen, die mit ihr verbunden sind, nicht verwendet werden).

aber diese Situation lässt sich leicht beheben, wenn Sie die Komposition verwenden und dabei einen feineren Ansatz wählen...

btw, ich stimme zu, dass Ereignis-Aggregator ist mehr entkoppelt ... irgendwelche anderen Überlegungen?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X