Многие люди скажут вам, как это сделать. Я собираюсь ответить, почему вы можете этого не хотеть.
В N-уровневой системе все уровни работают полуавтономно. Но это не значит, что они могут - или должны - полагаться на другой уровень, чтобы гарантировать согласованность и достоверность данных.
Есть две основные причины. Во-первых, N-уровневая система расширяема. Например, в веб-системе новый интерфейс может использовать преимущества существующего веб-уровня, чтобы сделать что-то, о чем никогда не думали в оригинальном дизайне. Таким образом, вы разрабатываете систему для проверки своей системы, позволяя чему-то новому появиться в некоторой средней точке уровней.
Во-вторых, валидация часто наиболее эффективна, чем ближе к пользователю. Если я использую решение на основе браузера и ввожу неверный пароль в поле проверки с двойным вводом, я бы хотел, чтобы браузер немедленно указал на это. Ожидание поездки туда и обратно требует времени и разочаровывает пользователя.
Теперь возьмите тот же пример и переместите его на логический уровень. Уровень логики, не совсем уверенный, кто отправляет данные, хочет убедиться, что он получает два совпадающих пароля. Так что он также проверяет и возвращает ошибку, если они не совпадают. Это защищает данные от плохих изменений.
Это просто философия, но она хорошо работала для меня в прошлом.