Трудно ответить, если вы не определите, что такое «чистый путь». Мы говорим о чистоте SOA или WCF?
Прокси WCF уже в некотором смысле являются DTO, потому что они не несут никакой бизнес-логики в вашем сервисном контракте. Создание еще одного слоя DTO поверх прокси-классов, сгенерированных WCF, представляется излишним.
Самый большой вопрос, на который вы хотите ответить, - «как SOA это решение?». Вы не можете совместно использовать свои объекты POCO через границы служб, если вы хотите быть SOA-совместимым. SOA - это разные контракты.
Если вы используете все на основе SOA, вы теряете много функциональности, потому что классы, с которыми ваш веб-уровень будет работать большую часть времени, будут глупыми прокси. Вам придется повторить много логики, и вы потеряли много функций «метаданных, соглашения о конфигурации», которые предоставляет MVC 2.
Если вы добавите модное слово SOA в шредер, что вы должны сделать (http://soafacts.com/), тогда вам будет намного легче обмениваться бизнес-логикой и метаданными по уровням. Если единственным потребителем вашего веб-сервиса является вы сами, то этот метод, вероятно, является вашим лучшим выбором.
Здесь вы можете использовать DTO для отправки по проводам вместо ваших объектов POCO. Единственный недостаток - повторяющаяся логика и множество церемониальных кодов, которые ничего не делают. На самом деле зависит от размера вашего проекта. Если его мало, забудьте о DTO, но если у вас есть 20 разработчиков, работающих с 200 000 LoC, вероятно, стоит создать DTO.