Когда вы инкапсулируете логику проверки в ValidationService, вы можете использовать ее в своих контроллерах и сервисах. Поскольку вы хотите, чтобы пользователь взаимодействовал с вводом и исправлял неверную информацию, вы должны иметь возможность отображать проблемы проверки в вашем веб-представлении.
Иногда у вас могут быть данные (CommandObjects, Forms), которые непосредственно не видны на уровне службы, и затем необходимо выполнить проверку в контроллере, который затем передает информацию на уровень службы.
Когда вы разрабатываете свое приложение, вы должны думать о взаимодействии между каждым уровнем. Смешанная логика проверки на каждом уровне может не потребоваться. Подумайте, как данные попадают в вашу систему. Если контроллеры являются вашей основной точкой входа, вы можете прекрасно разместить их там, поскольку никакие данные не попадают в ваши службы без прохождения проверки.