Основной причиной этих границ является разделение интересов . Код, который обращается к хранилищу данных, должен беспокоиться только о доступе к хранилищу данных. Он не должен нести ответственность за соблюдение правил в отношении данных. Кроме того, пользовательский интерфейс должен отвечать за обновление элементов управления в пользовательском интерфейсе, получение значений из пользовательского ввода и перевод их во что-то, что может использовать уровень домена, и ничего более. Он должен вызывать операции, предоставляемые уровнем домена для выполнения любых необходимых действий (например, сохранить этот файл). Вызываемая веб-служба должна отвечать за преобразование среды передачи в то, что может использовать уровень домена, а затем вызывать уровень домена (большинство инструментов выполняют большую часть этой работы за вас).
Такое разделение при правильной реализации может дать вам возможность изменять части вашего кода, не затрагивая другие. Например, может быть необходимо изменить порядок сортировки возвращенной коллекции объектов. Поскольку вы знаете, что слой, отвечающий за манипулирование данными (обычно уровень бизнес-логики), обрабатывает эти вещи, вы можете легко определить, где необходимо изменить код. А также не нужно изменять способ извлечения из хранилища данных или любого другого приложения, использующего домен (пользовательский интерфейс и веб-служба из моего примера выше).
Конечная цель - сделать ваш код максимально простым в обслуживании.
Как примечание, некоторые вещи не могут быть помещены в определенный слой домена (например, регистрация, проверка и авторизация). Эти элементы обычно называются сквозными задачами, и в некоторых случаях их можно рассматривать как слой, который стоит сам по себе, который могут видеть и использовать все остальные слои.
Лично я считаю, что многоуровневый подход устарел, а сервисный подход лучше. У вас все еще есть четкая линия на песке относительно того, кто что делает, но это не заставляет вас быть иерархичным. Например, служба заказа на покупку, служба выставления счетов и служба доставки, с точки зрения приложения, все эти службы представляют ваш домен, и отсрочка ответственности, которую я описал выше, все еще действует в этом контексте, она только что была изменена таким образом что ваш домен существует в нескольких местах, дополнительно используя концепцию разделения интересов.