2010-04-01 4 views
6

Ich habe mich gefragt, wie man genau den Domain Service in RIA implementiert. Ist es üblich, alle Entitäten in das gesamte Domänenmodell in einem einzigen Domänendienst einzubeziehen, sodass der Dienst für die gesamte Datenbank verantwortlich ist? Ist das normalerweise so? Ich habe wirklich keinen Grund, den Datenzugriff auf verschiedene Dienste zu beschränken, aber ich habe mich gefragt, ob dies als eine gute Praxis angesehen wird und welche Vor- und Nachteile ein solcher Ansatz haben würde.Wie viele Entitäten sollte der RIA-Domänenservice enthalten?

Wird es auch als gute oder schlechte Praxis angesehen, Domänenkontexte als Singleton mit IOC zu registrieren, sodass die gesamte Anwendung mit denselben Datensätzen arbeitet und so Nebenläufigkeitsprobleme und ähnliche Probleme vermieden werden?

Gedanken?

Danke

Antwort

1

Wir haben zwei separate Dienste in unserer App: ein für das Datenmodell und eine streng zur Authentifizierung verwendet. Wir haben dieses Design aus der Business-Beispiel-App-Struktur von MS übernommen.

Wir haben in Erwägung gezogen, unseren Datendomänenservice in kleinere Komponenten aufzuteilen, entschieden uns jedoch dagegen, da er keine Vorteile zu bieten scheint (außer der Reduzierung der Dienstklassengröße). Wenn Sie über voneinander getrennte Datenmodelle verfügen anderenfalls könnte diese Route sinnvoll sein. Intuitiv sollte der Domain-Service die gesamte Domain repräsentieren. Wenn Ihre Domänen unabhängig sind (mit der occasional need for crossover), ist es logisch sinnvoll, sie auf diese Weise zu trennen.

In Bezug auf die Verwendung des Kontextes als Singleton: Ich habe das versucht und am Ende Klassen-Bereich-Instanzen stattdessen erstellt. Wir haben keine Probleme dabei festgestellt, da sie alle dieselbe zugrunde liegende Datenverbindung verwenden. Ich weiß nicht, was die "offizielle" Best Practice ist, aber so habe ich es in zahlreichen RIA-Apps gesehen.

+0

stimme ich nicht zu. Ich denke, der DomainService sollte eine Aufgabe oder einen Geschäftsprozess darstellen, nicht die gesamte Domain. Eine gute Beispiel-App ist die Book Club App, die Sie hier finden können http://www.nikhilk.net/RIA-Services-MIX10-Slides-Code.aspx. – PilotBob

0

Danke Nick. Ich habe das gleiche gemacht wie du, ich habe zwei Dienste aufgebaut, einen für die Authentifizierung und einen für den Datenzugriff. Das erscheint mir logisch.

Um Datacontext ein Singleton zu machen, habe ich das auch versucht und es funktioniert gut. Keine Notwendigkeit, Daten ständig neu zu laden und zu aktualisieren und sich um Nebenläufigkeitsprobleme in anderen Klassen zu kümmern :)

Verwandte Themen