Frage

Ich habe mir beim Betrachten mehrerer .net -Starter -Kits bemerkt, dass Business -Objektkonstruktionen häufig auf Kundenebene behandelt werden. Anschließend wird das Geschäftsobjekt für Manipulation, Serialisierung an die Datenbank an die Geschäftsschicht übergeben. Sollte dieser Code nicht in die Geschäftsschicht abstrahiert werden, damit der Client nur die erforderlichen Daten übergeben muss? Gibt es einen Vorteil, eine Geschäftsschicht mit CRUD -Abstraktionen zu haben, die nur Objekte als Argumente akzeptieren?

War es hilfreich?

Lösung

Ich stimme Ihnen zu, dass die Interaktion mit der Geschäftsschicht so einfach wie möglich gehalten werden sollte, mit komplexen Typen und anderen Komplexität versteckt, oder was ist der Punkt? An dem Punkt, an dem Ihre Benutzeroberflächen- und Geschäftsobjekte verkabelt werden, sollte es so nahe wie möglich von 0 Komplexität sein.

Ich kann mir Szenerien vorstellen, in denen die Konstruktion relativ komplexer Typen zu diesem Zeitpunkt legitim wäre. Je kleiner eine Site ist, desto wahrscheinlicher ist, dass <3 Ebenen tatsächlich besser sein können als strenge 3 -Stufe. Um offen zu sein, um die Starter -Kits zu erkennen, die Sie sehen: Vielleicht ist der Umfang so klein, dass die strenge Trennung von Bedenken übertrieben wäre, und ihr Ansatz könnte durchaus für die Situation angemessen sein. Oder was sie tun, ist so Komplex Dass dies der beste Weg ist, um damit umzugehen. Je komplexer das Draht oder die Integration oder wenn es ein Plug-in-Modell oder etwas gibt, kann ein scheinbar übermäßig komplexer Typ tatsächlich eine konsistente flexible Schnittstelle gewährleistet. Manchmal spart Ihnen ein wenig Komplexität an einem Ort eine Menge Komplexität woanders. Aber meistens ist dies nicht der Fall. Meine Vermutung ist, dass Sie wirklich so schlecht sehen. . . Schlecht.

  1. Viele Microsoft Quick-Start Demosund Vorlagen habe wirklich schlechte Architektur. Das Web-Forms-Modell selbst eignet sich nicht für eine gute Trennung von Bedenken. Sie werden viele offizielle Beispiele sehen, die es sindSpaghetti -Code Albträume. Unternehmen, DB und Benutzeroberfläche, die zusammen leben, ist eine schreckliche Harmonie.
  2. Wenn Sie über SDKs von Drittanbietern sprechen: Viele davon erfordern komplexe Typen, die an die Geschäftsobjekte übergeben wurden, da sie von C ++ portiert wurden, aber nie wirklich überarbeitet wurden, um objektorientiert zu sein. Ein paar Male musste ich einige machen Wahnsinnige Typen Um an einige bildgebende Softwareobjekte weiterzugeben, wobei logischerweise nur zwei einfache Wertparameter erforderlich waren.

Andere Tipps

Ich würde normalerweise diese Art von Arbeit in a machen Service oder Datenzugriffsschicht. Das heißt, für kleineres Projekt habe ich meine Datenzugriffsschicht meine Domänenobjekte zurückgeben. Für größere Projekte würde ich eine Serviceschicht verwenden, um eine komplexe Objektkonstruktion und Aufruf der Geschäftslogik zu verarbeiten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top