Ich bin auf der Suche nach einem flexibleren Domänenmodell, wo es eine Trennung von Daten und Verhalten, aber ich glaube nicht, der Service Layer die entsprechende Schicht für das Verhalten ist . Stattdessen könnte man einen einfachen Business-Logik-Layer-Ansatz wählen, bei dem Business-Entity-Objekte nur Daten offenlegen und Business-Process-Objekte nur das Verhalten offen legen, und zu diesen Verhaltensweisen gehören Validierungsmethoden.
Ein Vorteil, abhängig davon, wie locker die Kopplung von Geschäftsprozessen ist, besteht darin, dass Sie die Validierung auf eine größere Bandbreite von Covarianten und möglicherweise sogar Invarianten anwenden können.Betrachten Sie einen Augenblick lang die Felder "FirstName" und "LastName" und denken Sie darüber hinaus, dass diese Felder in jedem großen System in einem halben Dutzend oder mehr verschiedenen Entitäten vorhanden sein können. Wenn Sie den Prozess von den Daten trennen, können Sie sicherstellen, dass Sie Ihre Validierungsprozesse einmal implementieren und auf viele Objekte anwenden können, die dieselben Daten bereitstellen.
Ich habe festgestellt, dass das Ideal, dass das Domänenmodell Domänenobjekte sein sollte, die eine Fusion von Daten und Verhalten sind, ein Konzept von Fowler/Evans, circa 2000-2002 (kurz nach einer schnellen Migration) hin zu verteilten Informationssystemen anstelle von 2-Tier-Anwendungen.)
Gedanken?
Ich würde auch hinzufügen, dass einige Business-Objekte vorhanden sein können, um die Koordination zu tun. Zum Beispiel würden Sie nicht die Verhaltensweisen schreiben, die benötigt werden, um eine Bestellung in eine Rechnung zu konvertieren, Sie hätten einen OrderConverter, der eine Bestellung prüft und sie gegebenenfalls konvertiert. Was ich normalerweise als "Service" -Objekte betrachte, ist im Grunde genommen eine Müllhalde von kaum verwandten Methoden. Sie alle tun etwas in einem Geschäft, aber anders als das sind nicht verwandt. In Csla würden diese Methoden typischerweise in separate Klassen eingekapselt werden, die volle Kenntnis des Anwendungsfalles haben, das heißt, sie weiß alles darüber, wie eine Bestellung zu einer Rechnung gemacht werden kann – Andy