В общем, вы всегда должны выполнять проверку данных на стороне сервера. Это гарантирует, что вы защищаете свой сервер от злонамеренно подделанных запросов, хранилище данных от ввода неверных данных (поскольку БД не позаботится об этом сама). Если вам нравится использовать инструмент или инфраструктуру для проверки входных данных на стороне сервера, как описано в статье, на которую вы ссылаетесь, это ваше дело.
Проверка на стороне клиента, например, с использованием javascript, также полезна, но по другой причине: она позволяет вам предоставить полезную информацию пользователю до отправки данных.
Так что это не вопрос / или, скорее, и / или. Вы на самом деле не делаете никакой двойной работы здесь. Проверка на стороне клиента и на стороне сервера просто служит разным целям (соответственно, повышая удобство использования для пользователя и охраняя логику и безопасность вашего сервиса).
Возможно, что проверки на стороне сервера и на клиенте управляются одной и той же бизнес-логикой (например, для почтового индекса вы можете использовать одно и то же регулярное выражение для проверки и отклонения ввода как на стороне сервера, так и на стороне клиента). В этом случае у вас возникает проблема синхронизации обоих уровней проверки (что можно сделать, сгенерировав логику page + javascript из той же модели бизнес-логики, что и код обслуживания на стороне сервера).
Если вы все еще чувствуете, что выполняете двойную работу, выберите проверку на стороне сервера. (Конечно, вы все равно можете использовать это для информирования клиента, но для этого потребуется ответ.) Проверка на стороне клиента не предлагает никакой защиты, так как клиент может просто подделать запрос вручную или, отключив браузер, отключить его. javascript или измените javascript на стороне клиента, например, как скрипт greasemonkey.