Platzierung von DTO / POCO in einem dreistufigen Projekt

Ich war dabei, das Back-End für eine Website neu zu schreiben und habe es in Richtung einer dreistufigen Architektur verschoben.

Meine Absicht ist es, es so zu strukturieren:

Web site <--> WCF Service (1) <--> Business Layer (2) <--> Data Layer (3)

Mein Problem ist die Platzierung der DTOs innerhalb dieser Struktur. Ich muss DTOs verwenden, um Daten zwischen der Geschäftsschicht und dem WCF-Dienst und vom WCF-Dienst auf die konsumierende Website zu verschieben.

Während meiner Recherchen hier habe ich einige ausgezeichnete Diskussionen gelesen, obwohl ich mich ein wenig am Kopf gekratzt habe:

Davide Piras macht einige gute Punkte indieser Beitrag und wenn ich diesem Entwurf folgen würde, würde ich Schnittstellen für die POCOs in einem separaten Projekt deklarieren. Diese würden dann durch die Stufen (1) und (2) implementiert. Während ich die Verwendung von Schnittstellen mag, scheint es, als würde ich mir mehr Arbeit machen, indem ich POCOs in (1) und (2) deklariere und dann ihre Daten mit etwas wie AutoMapper hin und her kopiere.

Dieser Beitrag Verwendet ein System, in dem ein Geschäftsobjektprojekt erstellt wird, auf das alle Ebenen verweisen würden. Dies scheint einfacher zu sein als die andere Lösung und scheint mich zu einer Lösung zu führen, die es sein würde

Web site <--> WCF Service (1) <--> Business Layer (2) <--> Data Layer (3)

<pre><code>^ ^ ^ | | | [ -- Business Objects Referenced here --] </code></pre>

Meine Frage lautet: Gibt es einen Codegeruch, wenn die Geschäftsobjekte auf drei Ebenen der Lösung verteilt werden, oder sind die beiden Methoden, die ich oben aufgeführt habe, nur zwei verschiedene Methoden, um dieselbe Nuss zu knacken?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage