2009-08-07 4 views
2

Ich verstehe nicht, wie mein Modell ein WCF-Dienst sein kann. Es ist sinnvoll, wenn eine Astoria-Teilklasse auf dem Client vorhanden ist, die Remoteaufrufe Persistenzaufrufe ermöglicht. Ein WCF-Dienst verfügt jedoch nicht über Eigenschaften für Modellfelder, die zum Aktualisieren eines Datenspeichers verwendet werden können.MVVM & WCF - Modell- und Modellbeziehung anzeigen

Selbst wenn ich eine Schnittstelle für eine Modell-/Domänenobjektklasse in eine separate Assembly ausklammern könnte, erlaubt mir ein Silverlight-Projekt nicht, das als Referenz hinzuzufügen.

Wie sollte mein ViewModel meine WCF-Anrufe umfassen? Letztendlich wird der WCF eine Repository-Assembly aufrufen, die in Linq-to-Sql implementiert ist, aber anscheinend sind diese Entitäten in diesem Szenario nicht mein Modell, meine WCF-Klassen sind?

Danke für jede Anleitung zu diesem Thema.

Auch Beiträge, die ich gelesen habe, um einen Bezugsrahmen zu geben:

  1. http://development-guides.silverbaylabs.org/Video/Silverlight-Prism#videolocation_0
  2. http://blogs.conchango.com/davidwynne/archive/2008/12/15/silverlight-and-the-view-viewmodel-pattern.aspx
  3. http://msdn.microsoft.com/en-us/magazine/dd458800.aspx

Antwort

5

Wenn Sie zu einem WCF-Dienst in einem einen Dienstverweis erstellen Silverlight Projekt generiert es auch eine Schnittstelle für diesen Service, das ist David Wynns IFeedService in den Artikeln, die Sie oben aufgeführt. Die Dienstreferenz generiert auch Proxy-Objekte, die die vom Dienst verwendeten Objekte darstellen (Produkt, Kategorie usw.).

Die wichtige Sache zu beachten ist, dass die Service-Schnittstelle nicht das Modell ist, es ist, wie Sie auf das Modell zugreifen. Gehen wir zurück zu Davids Beispiel, stellt sein ViewModel eine Liste von Elementen (sein Modell) zur Verfügung, diese Liste wird mit dem Service abgerufen.

Wenn Sie Code zwischen dem Client und Server freigeben möchten, würde ich empfehlen, etwas wie RIA Services zu suchen. Wenn dies nicht für Sie ist, würde ich mir ein paar Artikel ansehen, in denen es darum geht, Code zwischen dem Server und dem Client auszutauschen (via Add as Link).

Hoffe, das hilft