2016-05-11 7 views
0

Ich erstelle derzeit einige Beispiele mit Catel.Catel - Verwenden Sie ModelBase als "Datenübertragungsobjekt" in der dienstbasierten Anwendung

Das Szenario I im Sinn haben:

  • Database Server
  • WebServer mit WCF Data
  • WPF (oder Silverlight) Client

Mein "Problem":

Ich möchte den Validierungscode in Webserver und Client nicht wiederholen, aber das Problem ist, dass "ModelBase" doe s nicht als DataService-Datenübertragungsobjekte arbeiten.
(Die zusätzlichen Eigenschaften erzeugen alle Arten von Problemen)

Also - wie würden Sie normalerweise dieses Problem angehen?

Es gibt einige Ideen, die in den Sinn kommen:

  • validiere nicht wieder auf dem Server (authentifizierte Benutzer sind vertrauenswürdig ?!)
  • nicht verwenden WCF-Dataservice überhaupt, aber benutzerdefinierte erstellen WCF- Dienstleistungen (die vielleicht unter der Haube den EntityFrameworks db-Kontext verwenden)

Both "Solutions" klingt nicht sehr gut ...

Grüße
Johannes Colmsee

Antwort

0

Erste Anmerkung: validiere immer auf dem Server, vertraue niemals dem Client, nie.

Die Lösung besteht darin, ein freigegebenes Projekt mit Ihrem freigegebenen Code zu erstellen. Dort können Sie die Validierung sowohl auf dem Server als auch auf dem Client (mit der gleichen Code-Basis) teilen.

+0

Und der gemeinsame Code wäre? meine Modellklassen? oder "validator-classes", die an einer Schnittstelle arbeiten? (ICustandor statt konkreten Kundentyp?) –

+0

Kann alles sein. Manche Leute bevorzugen es, die Validierung innerhalb des Modells zu behalten, manche ziehen es vor, sie draußen zu lassen. Wenn Sie es behalten möchten, teilen Sie die Modelle (mit Validierung). Andernfalls können Sie sowohl eine gemeinsame Schnittstelle implementieren als auch benutzerdefinierte Validatoren (die einen ValidationContext erstellen) verwenden. –