Laden...

MVVM - Netzwerk-Kommunikationsschicht unterhalb des Model ?

Erstellt von Mallett vor 11 Jahren Letzter Beitrag vor 11 Jahren 947 Views
M
Mallett Themenstarter:in
171 Beiträge seit 2012
vor 11 Jahren
MVVM - Netzwerk-Kommunikationsschicht unterhalb des Model ?

Hi,

folgende Sachlage: Das Projekt besteht aus mehreren Views (Usercontrols) zwischen denen über ein Nav-Menü hin und her geschaltet werden kann. Jedes View zeigt bestimmte Daten an und erlaubt auch eine Änderung dieser Daten durch Benutzereingaben. Die Datenquelle ist dabei eine Server-Applikation, die auf einem anderen Rechner läuft.

D.h. Jede Aktion des Benutzers im Client resultiert in einem Befehl, der über das Netzwerk an die Serverapplikation geschickt wird, und von dieser ggf. eine Antwort zurück erhält.

Die ganze Kommunikation läuft über einen TcpClient / TcpListener, über den serialisierte NetPackage-Objekte gesendet werden. Das ist über eine Netzwerk-Komponente gekapselt. Ich kann das Ganze also in etwa so ansteuern:


NetApp clientApp = new NetApp(ip, port, appID);
clientApp.AsyncReceiveEvent += new NetCommunicationHandler(OnNetPackageReceived);

int clientID = clientApp.Connect(timeout);

if(clientID > 0)
{
  int commandID = 0; //0=GetInitialState
  List<NetCommandParam> parameters = new List<CommandParams>();
  parameters.Add(new NetCommandParam("mode", 0)); //complete state

  //Beispiel zum Senden eines Befehls
  NetPackage np = new NetPackage(commandID, parameters);
  clientApp.AsyncSend(-1, np);
}
else
 throw new ApplicationException("Connection to server failed...");

Da ich das Ganze nach dem MVVM Muster umsetzen will, hab ich mich nun gefragt, wo diese Netzwerk-Comm Schicht eigentlich hin gehört. Letztendlich ist es ja nicht so, dass jedes Model auf seiner eigenen Datenquelle (z.B. xml-Datei) arbeitet, sondern jede Model-Klasse kriegt seine Daten ja aus dieser einen Netzwerkverbindung.

Von meinem Verständnis her sehe ich die NetApp Instanz als "Entity" welche als Ressource von allen Model-Klassen der Anwendung genutzt werden soll. Wie würdet ihr das modellieren, und was wäre dann noch MVVM-konform ? Umsetzen als Singleton und dann von allen Models darauf zugreifen ? Wäre dass dann nicht schon MVVMX ? Als statischen Member irgendwo anlegen worauf jedes Model zugreifen kann ? Klingt nach "globaler Variable" für mich ... bääh

Danke für jeden Vorschlag.

5.299 Beiträge seit 2008
vor 11 Jahren

Da kennichnix. Ist erforderlich, dass anwendungsweit nur eine einzige Instanz instanziert ist, so ist damit die Bedingung eines Singletons erfüllt, ob den Architektur-Astronauten das nu gefällt oder nicht.

Der frühe Apfel fängt den Wurm.