Это интересно. В течение самого длительного времени я выполнял всю проверку в модели, прямо над тем, что я бы назвал DAL (уровень доступа к данным). Мои модели обычно создаются по шаблону после шлюза табличных данных с DAL, обеспечивающим абстракцию и API низкого уровня.
В TDG я бы реализовал бизнес-логику и проверки, такие как:
- Имя пользователя пусто
- Имя пользователя> 30 символов
- Если запись не существует, вернуть ошибку
По мере усложнения моего приложения я начал понимать, что большая часть проверки может быть выполнена на стороне клиента с использованием JavaScript. Поэтому я реорганизовал большую часть логики проверки в JS и очистил свои модели.
Затем я понял, что проверка на стороне сервера (а не фильтрация / экранирование - что я считаю другим) должна выполняться, вероятно, и на сервере, и только на стороне клиента, как глазурь на торте.
Итак, логика валидации вернулась, когда я снова поняла, что, вероятно, существует определенная разница между валидацией / утверждением INPUT и бизнес-правилами / логикой.
В принципе, если это можно сделать на стороне клиента приложения (с использованием JS), я считаю это проверкой INPUT ... если это ДОЛЖНО быть сделано моделью (эта запись уже существует и т. Д.?), То я рассмотрел бы эту бизнес-логику. Что сбивает с толку, так это то, что они оба защищают целостность модели данных.
Если вы не проверяете длину имени пользователя, что может помешать людям создать одно-символьное имя пользователя?
Я до сих пор не совсем решил, куда поместить эту логику дальше, я думаю, что это действительно зависит от того, что вы предпочитаете больше: тонкие контроллеры, тяжелые модели или наоборот ...
Контроллеры в моем случае имеют тенденцию быть в большей степени ориентированными на приложения, в то время как модели, созданные тщательно, я часто могу использовать в «других» проектах, а не только для внутреннего использования, поэтому я предпочитаю держать модели легкими и контроллеры на более тяжелой стороне.
То, что движет вами в любом направлении, - это действительно личное мнение, требования, опыт и т. Д ...
Интересная тема:)