Ответ 1
Свободная проверка - это один из способов настройки выделенных объектов валидатора, которые вы использовали бы, если хотите рассматривать логику проверки как отдельную от бизнес-логики. Парадигма аспектно-ориентированного программирования (AOP) позволяет разделять сквозные проблемы внутри системы, и валидация является одной из таких проблем. Разделение проверки помогает очистить код домена и сделать его более сплоченным, а также дать вам одно место для поиска логики проверки.
Подтверждение с помощью аннотации MVC - это очень "дешевый" способ получить некоторую базовую валидацию в приложении, не обращаясь к проблемам создания выделенных объектов валидатора, создавая систему проверки, которая организует их и объединяет все вместе. Он очень прост в настройке, но может сделать объекты вашего домена менее чистыми.
Для небольших систем, где вся логика проверки может обрабатываться с помощью аннотаций, я бы рекомендовал использовать аннотации, потому что их так легко настроить. Для более крупных и более сложных систем я бы рекомендовал разделить проблему проверки с помощью объектов проверки.
Мне лично нравится использовать оба подхода: добавить атрибуты проверки в классы ViewModel (что означает, что аннотации не загромождают мои объекты домена), а также выделенные объекты проверки достоверности в моем доменном слое. Это небольшое количество дубликатов, но использование аннотаций настолько быстро и легко, что я считаю, что это стоит дополнительных затрат на обслуживание.