Umieszczenie DTO / POCO w projekcie trójwarstwowym
Byłem w trakcie przepisywania zaplecza strony internetowej i przenosiłem ją w stronę trójwarstwowej architektury.
Moim zamiarem jest to tak skonstruować:
Web site <--> WCF Service (1) <--> Business Layer (2) <--> Data Layer (3)
Moim problemem jest umieszczenie DTO w tej strukturze. Będę musiał użyć DTO, aby przenieść dane między warstwą biznesową a usługą WCF oraz z usługi WCF do używanej strony internetowej.
Podczas moich badań tutaj przeczytałem kilka świetnych dyskusji, choć zostawiłem trochę podrapania po głowie:
Davide Piras zdobywa świetne punktyten post a gdybym miał zastosować ten projekt, zadeklarowałbym interfejsy dla POCO w oddzielnym projekcie. Zostałyby one następnie zaimplementowane przez poziomy (1) i (2). Chociaż lubię korzystać z interfejsów, wydaje mi się, że robię więcej dla siebie, deklarując POCO w (1) i (2), a następnie kopiując ich dane tam iz powrotem, używając czegoś takiego jak AutoMapper.
Ten post używa systemu, w którym tworzony jest projekt obiektów biznesowych, do którego odwołują się wszystkie warstwy. Wydaje się, że jest to prostsze niż inne rozwiązanie i wydaje się prowadzić do rozwiązania, które byłoby
Web site <--> WCF Service (1) <--> Business Layer (2) <--> Data Layer (3)
<pre><code>^ ^ ^
| | |
[ -- Business Objects Referenced here --]
</code></pre>
Moje pytanie brzmi: czy istnieje zapach kodu z udostępniania obiektów biznesowych w trzech warstwach rozwiązania, czy też dwie metody, które wymieniłem powyżej, są tylko dwoma różnymi sposobami na złamanie tego samego orzecha?