| 

.NET C# Java Javascript Exception

3
Hallo ihr lieben,

ich arbeite gerade an einem Datenbank abhängigen Projekt bei diesem ich versuchen möchte das mvvm Pattern möglichst sauber zu implementieren.

Zu meiner Frage:

Ich habe ein Model, in diesem werden regelmäßig Daten von einem Server aus einer Datenbank gelesen und in eine Liste hinzugefügt. Nun möchte ich vom Model aus, die Änderungen der Liste an das Viewmodel weitergeben, doch wie mache ich das am besten? Mein Vorschlag wäre gewesen, ein Event vom Model zum Viewmodel zu senden, welches dann die nötigen Informationen beinhalten. Wäre das der richtige Ansatz oder gibt es da bessere Methoden?

LG Marcel
News:
02.06.2014
Repac3r 33 1 4
3 Antworten
2
Andreas schildert bereits 2 Standard-Wege wie das ViewModel (VM) vom Model (M) lose gekoppelt 'angesprochen' werden kann.

Es ist eine allgemeine Frage, für die es noch keine Standardlösung (Pattern) gibt: Wie wird das Model (serverseitig) aktualisiert und wie gibt es die Änderungen an das ViewModel weiter.
Sofern ein Timer im ViewModel bzw. im ViewModelService/Agent/Controler läuft, wie er ab und zu genannt wird, werden die Änderungen vom Client gepullt.
Es gibt jedoch auch die Möglichkeit, dass Änderungen im Backend - auf dem Server oder in der Datenbank - (auch über einen Service) an den Client getriggert und damit gepusht werden.

Das Schlagwort heisst Reactive Extensions, wo das Observer Pattern eingesetzt wird.
Näheres hierzu findest Du unter RX oder bzgl. einer Implemention zu MVVM und RX hier
Reactive Extensions sind sehr mächtig und scheinen auf den ersten Blick recht kompliziert.
Aber RX und MVVM sind eine feine Sache.
02.06.2014
judgy 3,0k 1 1 8
1
Das kann ich nur bestätigen. Rx ist eine enorme Bereicherung in diesem Umfeld. Ich hab auch kruzerhand den PRISM EventAggregator (sehr schweres Gerät) gegen 20 Zeilen Rx EventBus ausgetauscht. Wenn man sich einmal mit Rx angefreundet hat, will man nicht mehr ohne :-)
ffordermaier 03.06.2014
Danke für den Hinweis auf Rx. Wieder was interessantes kennen gelernt!
Xantiva 04.06.2014
2
Das Model sollte das ViewModel nicht kennen.

Das Model sollte stattdessen nach dem Nachladen von Daten ein Event feuern, an das sich das ViewModel und jeder beliebig andere Observer hängen kann.

Also analog zum ViewModel auch im Model das INotifyPropertyChanged Interface implementieren und im ViewModel sich für das Event registrieren.

Eine andere Möglichkeit wäre einen Callback-Mechanismus im Model zu implementieren.
02.06.2014
Andreas Richter 1,7k 1 2 8
Danke schön, so in der Art habe ich das gemeint. Werde einfach das PropertyChanged Event auch im Model implementieren.

Lg marcel
Repac3r 02.06.2014
0
Hallo,

ich bin gerade auf der Suche zum gleichen Thema gewessen und habe folgende Seite entdeckt:

http://www.norberteder.com/lose-kommunikation-zwischen-viewmodels/

Vielleicht hilft sie weiter.
20.10.2014
schnowboard 237 1 6

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH