Возможно, вам не хватает вопроса о том, что произойдет, если вы сократите количество конверсий (то есть, если вы будете более тесно соединять слои).
Служба может напрямую возвращать объект DAL. Проблема заключается в том, что объекты DAL могут содержать данные о том, что они являются объектами DAL, а не о данных, которые они переносят. Например, классы LINQ to SQL являются производными от базовых классов, которые содержат функции LINQ to SQL - эти данные базового класса не требуются на клиенте и не должны отправляться.
Клиент может напрямую использовать объект DAL, отправленный обратно с сервера. Но для этого требуется, чтобы клиент и сервер использовали одну и ту же платформу - например, .NET. Им также придется использовать совместимые версии .NET, чтобы клиент мог использовать объект DAL на стороне сервера.
Клиент теперь может отображать объект DAL, как ему нравится, при условии, что ему не нужны интерфейсы на стороне клиента, такие как INotifyPropertyChanged. Серверу не нужен такой код для запуска, но он может понадобиться клиенту для привязки и проверки данных. .
Обратите внимание, что каждый слой имеет свои собственные требования. Сохраняя эти требования независимыми, код легче разрабатывать и поддерживать. Да, вы должны сделать некоторое копирование данных, но это дешево по сравнению со стоимостью обслуживания кода, который должен выполнять четыре разные вещи одновременно.