2 Stimmen

Wie man Domänenklassen und Geschäftsregeln zwischen Client und Server wie in RIA Services teilt, indem man sie nur einmal schreibt

In einer ASP.NET - WCF-Anwendung möchte ich Domänenklassen und Geschäftsregeln zwischen Client und Server teilen, ohne sie neu schreiben zu müssen, genau wie bei Silverlight RIA Services. Diese in einer Assembly zu sammeln und von Client und Server zu referenzieren, kann das Problem lösen, aber wie: Durch Hinzufügen des Serviceverweises zum Client werden diese Klassen im Client-Proxy generiert, ohne jegliches Verhalten (Methoden). Wie kann ich das erreichen?

HINWEIS: RIA Services werden nicht verwendet.

EDIT: Nach einigen Recherchen bin ich auf CSLA.NET gestoßen. Kann es dieses Problem lösen?

3voto

blowdart Punkte 53842

Sie vermeiden es, den Client-Proxy vollständig zu verwenden.

Zunächst legen Sie Ihre Vertragsklassen in eine gemeinsame Assembly und fügen Sie eine Referenz zum Projekt in sowohl den Server- als auch den Client-Programmen hinzu. Im Client können Sie dann ChannelFactory verwenden, um eine Verbindung zum WCF-Dienst herzustellen und Daten auszutauschen; etwas wie

ChannelFactory factory;
factory = new ChannelFactory("");

IServiceContract proxy = factory.CreateChannel();
using(proxy as IDisposable)
{
   proxy.MyMethod();
}

3voto

rovsen Punkte 4842

Ok, hier ist, wie ich es gemacht habe: Wie blowdart gesagt hat, habe ich den gesamten Domain-Code, den ich zwischen Server und Client teilen möchte, in eine separate Assembly gelegt. Dann habe ich sowohl Server als auch Client darauf verwiesen, diese gemeinsame Assembly. Dann habe ich dem Client einen Service-Verweis hinzugefügt, mit einer Ausnahme: Im Dialogfeld 'Serviceverweis hinzufügen' gibt es eine Schaltfläche "Erweitert". Dort habe ich "Typen in referenzierten Assemblys wiederverwenden" aktiviert. Auf diese Weise hatte ich alle Proxy-Goodies, asynchrone Methodenaufrufe usw. für mich generiert.

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