Размещение DTO / POCO в трехуровневом проекте

Я переписывал серверную часть веб-сайта и перешел на трехуровневую архитектуру.

Мое намерение состоит в том, чтобы структурировать это так:

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

Моя проблема связана с размещением DTO в этой структуре. Мне потребуется использовать DTO для перемещения данных между бизнес-уровнем и службой WCF, а также из службы WCF на потребительский веб-сайт.

Во время моего исследования здесь я прочитал несколько прекрасных обсуждений, хотя меня немного почесали:

Davide Piras makes some great points in this post and if I were to follow this design then I'd declare interfaces for the POCOs in a separate project. These would then be implemented by tiers (1) and (2). Whilst I like the use of interfaces it does seem like I'd be making more work for myself by declaring POCOs in (1) and (2) and then copying their data back and forth using something like AutoMapper.

This post uses a system where a business objects project is created which would be referenced by all tiers. This seems to be simplier than the other solution and seems to lead me to a solution that would be

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

^               ^                       ^
|               |                       |
[ -- Business Objects Referenced here --]

У меня такой вопрос: есть ли запах кода от совместного использования бизнес-объектов по трем уровням решения, или два перечисленных выше метода - это всего лишь два разных способа взломать один и тот же орех?

Ответы на вопрос(2)

Ваш ответ на вопрос