n-tier-architecture

___ qstnhdr ___ übergibt Daten in einer früheren Anwendung ___ answer917493 ___

Ich gehe davon aus, dass alle drei Ebenen in derselben App existieren. In Java atleast habe ich Hibernate für den Datenzugriff verwendet und diese Datenbeans in allen Schichten verwendet. (Option B) Es ist sinnvoll, Ihre Entitäten in Ihren Layern wiederverwenden zu können.

    
___ answer917534 ___

Wenn Sie einen Layered -Ansatz verwenden, was bedeutet, dass alle Layer (im Wesentlichen) im selben Prozessbereich ausgeführt werden und daher kein Marshalling / Serialisierung erfolgt, würde ich Ansatz B verwenden. Erstellen ein separates Modul für Ihre Entitäten, von dem alle Aspekte Ihres Programms abhängig sind, und mit diesem verbunden werden.

Wenn Sie jedoch einen abgestuften Ansatz verwenden, wie es Ihr Titel vermuten lässt, was bedeutet, dass Prozess- und / oder Netzwerkgrenzen überschritten werden, würde ich vorschlagen, dass Sie mit Ansatz C fortfahren Wenn Sie Instanzen nicht wirklich weitergeben, übergeben Sie Kopien, so dass alle Vorteile, die Sie beim Koppeln mit dem gleichen Objekt erhalten, wie beispielsweise beobachtbare Optionen für einen MVC-Ansatz, verloren gehen. Es ist besser, Daten-APIs auf jeder Ebene zu definieren, als zu versuchen, überall die gleiche Klasse zu verwenden.

    
___ tag123architecture ___ Architektur umfasst den Prozess, die Artefakte und die High-Level-Struktur einer Lösung. ___ qstntxt ___

Wie übergibt man Daten an Ebenen in einer n-Tier-Anwendung? Ich habe 3 verschiedene Methoden festgelegt.

A) generische .net-Objekte Generische Datentabellen, Hashtables, generische Datasets, Strings, Ints etc ... Verwenden Sie dann die Datensätze, um Ihre Geschäftsobjekte zu füllen, die an die UI-Ebene gesendet werden.

Alternativtext http://img11.imageshack.us/img11/460/generic.png

Ссылка

Pro - Keine zusätzlichen Ebenen erforderlich Con - Arbeiten mit generischen Datasets und Tabellen in der Business-Schicht

B) Verwenden eines Entity-Layers, auf den die anderen Layer verweisen würden. Diese Ebene enthält entweder stark typisierte Datasets oder einfache alte C-Objekte. Die Objekte wären meist Containerdaten und sehr wenig Logik. Dies wären die gleichen Objekte, die an die UI-Ebene gesendet werden.

Alternativtext http://img8.imageshack.us/img8/6454/entities.png

Ссылка

Pro - arbeitet mit den gleichen Klassen in allen Ebenen Con - Hinzufügen eines Verweises auf entities.dll zu allen Layern

C) Verwenden Sie Datentransferobjekte (nur Conatiner-Objekte), die in der DataAccess-Schicht definiert sind. Verwenden Sie dann diese Objekte zum Füllen von Geschäftsobjekten, die an die UI-Ebene gesendet werden.

Alternativtext http://img43.imageshack.us/img43/1236/transferp.png

Ссылка

Pro - Die Business-Schicht müsste nicht mit generischen Klassen arbeiten Con - arbeitet mit zwei Arten von Objekten und Sie müssten die Geschäftsobjekte mit den Transferobjekten hydratisieren

Wir hatten eine Diskussion bei der Arbeit und wollten sehen, was die Community dachte. Ich habe auch einen Link zum Dabbleboard hinzugefügt. bitte kopieren und erstellen statt editieren.
Danke

    
___ tag123domaindriendesign ___ Domain-driven Design (DDD) ist ein Ansatz zur Entwicklung von Software für komplexe Anforderungen, indem die Implementierung tief mit einem sich entwickelnden Modell der Kerngeschäftskonzepte verbunden wird. Beachten Sie, dass konzeptionelle DDD-Fragen besser auf softwareengineering.stackexchange.com gestellt werden können. ___ tag123layered ___ hilf uns dieses Wiki zu bearbeiten ___ answer917478 ___

Ich mag Option C, aber es gibt mir auch aus zwei Gründen eine Pause:

  1. Ich muss das Wissen darüber verbreiten, was die Eigentümer an zu vielen Orten sind.
  2. DTOs müssen serialisierbar sein, was nicht schlimm ist, aber immer noch eine Überlegung wert ist.
___ tag123nichtArchitektur ___ N-Tier-Architektur bezieht sich auf die Architektur einer Anwendung, die mindestens 3 "logische" Schichten oder separate Teile aufweist. Jede Ebene interagiert nur mit der Ebene direkt darunter und hat eine spezifische Funktion, für die sie verantwortlich ist. ___ answer917504 ___

Gute Frage - wie immer muss die Antwort lauten: "Es kommt darauf an".

Bei der Art der Anwendung, und ob Geschäftsobjekte (Entitäten) wirklich benötigt werden, im Gegensatz zu Transferobjekten (d. h. verdummten Geschäftsobjekten, die eher Datenbankeinheiten entsprechen).

Traditionell hätte ich argumentiert, dass Sie immer nur aus Performancegründen generische Datensätze (oder Datentabellen) benötigen. Wann immer es notwendig ist, mit größeren Mengen zu arbeiten, anzuzeigen oder zu manipulieren, ist die traditionelle strikte OO-Methode zum Instanziieren einer großen Anzahl von Geschäftsobjekten fehlgeschlagen.

Seit ich jedoch mit Linq zu SQL arbeite, haben sich meine Paradigmen geändert. Dies ist nicht mehr notwendig, da das Linq-Modell alles sein kann - Geschäftsobjekte, Transferobjekte und generische Datasets. Ich habe noch nicht untersucht, wie gut das in wirklich großen Anwendungen funktioniert und ob es notwendig ist, Front-End-Code vom Linq-Modell zu isolieren. Ich habe mit Kollegen darüber gesprochen, ohne wirklich eine Antwort zu finden.

    
___
3
Antworten

Wie modellieren und behandeln Sie Präsentations-DTOs, um vom komplizierten Domänenmodell zu abstrahieren?

Hi Ich entwickle eine Anwendung, die mit einem komplexen Domänenmodell mit Hibernate arbeiten muss. Diese Anwendung verwendet Spring MVC und die Verwendung der Domänenobjekte in der Präsentationsebene ist sehr chaotisch, daher denke ich, dass ic...
11.04.2010, 20:36
1
Antwort

Vermeidung der Duplizierung von Geschäftslogik über mehrere verschiedene Präsentationsebenen hinweg

Ich entwerfe derzeit die Architektur für ein Multi-Channel-Commerce-System, das mehrere verschiedene Frontend-Präsentationen haben wird, die auf Gerät und Kanal zugeschnitten sind (Benutzertyp und Standort). Die Herausforderung für mich besteht...
04.12.2013, 23:52
6
Antworten

Unity 3 und Fehler "Der Typname oder Alias" xxxxx "konnte nicht aufgelöst werden. Bitte überprüfen Sie Ihre Konfigurationsdatei und bestätigen Sie diesen Typnamen. "

Gibt es eine Möglichkeit, dieses Problem mit Unity 3 zu lösen? Ich habe alles gemacht, was möglich ist, um diesen Nachrichtenfehler zu umgehen, aber ich kann nicht auflösen ... Ich versuche zwei Tage zu lösen, und habe bereits alles gemacht,...
06.09.2013, 23:55
3
Antworten

Wie würde ich wissen, ob ich Self-Tracking-Entitäten oder DTOs / POCOs verwenden sollte?

Welche Fragen kann ich mir zu unserem Design stellen, um festzustellen, ob wir in unserer Anwendung DTOs oder Self-Tracking Entities verwenden sollten? Hier sind einige Dinge, die ich beachten kann: Wir haben eine Standard-n-Tier-Anwendun...
23.03.2011, 15:30
4
Antworten

übergibt Daten in einer früheren Anwendung

Wie übergibt man Daten an Ebenen in einer n-Tier-Anwendung? Ich habe 3 verschiedene Methoden festgelegt. A) generische .net-Objekte Generische Datentabellen, Hashtables, generische Datasets, Strings, Ints etc ... Verwenden Sie dann die Da...
27.05.2009, 19:03
5
Antworten

Business Layer in 3-Tier-Architektur

Ich ging zu einem Interview und wurde gebeten, meine Business-Layer-Architektur zu zeigen. Ich habe eine Idee über die 3-Tier-Architektur, aber wirklich keine Ahnung, was ich vor dem Interviewer schreiben soll. Angenommen, mein Projekt beschäfti...
22.09.2011, 06:21