Как избежать дублирования проверки на сервере и на стороне клиента? - PullRequest
11 голосов
/ 22 апреля 2009

Как избежать дублирования проверки на сервере и на стороне клиента? Существует ли платформа веб-программирования, которая генерирует одно из другого, поэтому мне не нужно синхронизировать эти два?

Ответы [ 8 ]

5 голосов
/ 22 апреля 2009

Существуют платформы, которые могут генерировать проверку на стороне клиента из конфигурации проверки на стороне сервера.

Теперь я не знаю, какой язык или фреймворки вы используете, но, возможно, эта статья может вам помочь: http://www.emadibrahim.com/2008/09/08/client-server-side-validation-in-aspnet-mvc/

Он использует Castle Validator Component вместе с JQuery и добавляет немного клея для генерации проверки на стороне клиента на основе атрибутов проверки на стороне сервера. Это для asp.net mvc.

/ Asger

2 голосов
/ 23 апреля 2009

Я думаю, что лучший способ - использовать компонент, который предлагает оба варианта. Их код был протестирован, и вам не нужно его поддерживать. В прошлом я использовал 1002 * управления Питера Блума с большим успехом. Кроме этого, я думаю, вам придется поддерживать две базы кода, если вы хотите предложить обе. Существует инструмент под названием Script # , который может помочь скомпилировать C # в Javascript (он выполняет перевод, а не настоящую компиляцию), но я не уверен, насколько хорошо он будет работать в этой ситуации.

2 голосов
/ 22 апреля 2009

Как уже упоминалось, вы должны сохранять дублирование, так как проверка на стороне клиента должна помочь приложению быстрее реагировать, чтобы помочь пользователю, но настоящая проверка на стороне сервера, так как вы никогда не должны доверять чему-либо переданному. до тех пор, пока это не будет подтверждено. Вы, вероятно, проведете более обширную проверку на стороне сервера, особенно если есть необходимость сверяться с источником данных, например, является ли уникальное имя пользователя на стороне сервера, но достаточно ли длинное имя пользователя или адрес электронной почты, может быть сделано на стороне клиента и на стороне сервера.

Я склонен помещать комментарии, когда есть дублирование, особенно если я использую регулярное выражение, чтобы убедиться, что то, что изменяется в одном, изменяется в другом.

Хорошие юнит-тесты помогут гарантировать, что эти два всегда будут синхронизированы.

2 голосов
/ 22 апреля 2009

Проверка на стороне сервера требуется просто потому, что проверка на стороне клиента может быть отключена.

Проверка на стороне клиента не требуется, но она делает ваше приложение более отзывчивым во время обработки ошибок, так как вам больше не нужно отправлять форму на сервер и ждать, пока полученная страница вернется.

Хорошо разработанное приложение использует оба.

В качестве дополнительного примечания, Ajax может использоваться для определенных видов проверки, таких как проверка дубликатов имен пользователей в форме регистрации пользователя. Однако базовая проверка, такая как проверка того, содержит ли поле только цифры, должна выполняться без него.

2 голосов
/ 22 апреля 2009

Большинство отказались от написания сценариев на стороне клиента и сейчас делают только на стороне сервера. Вы можете использовать ajax при отправке сообщения, так что ответ будет немного легче, чем перезагрузка всей страницы.

0 голосов
/ 23 апреля 2009

В Asp.net версии 1 были элементы управления валидатора, чтобы делать то, что вы просите

http://msdn.microsoft.com/en-us/library/yb52a4x0.aspx

0 голосов
/ 22 апреля 2009

То, что вы можете сделать, - это запустить логику проверки на стороне сервера веб-сервисами, которые ваша проверка на стороне клиента может вызывать через AJAX, а также когда вы отправляете сообщение обратно на сервер.

0 голосов
/ 22 апреля 2009

В большинстве случаев лучше проводить проверку на стороне сервера. У вас есть много разных способов сделать это проще, например, Ajax или использование липких форм в PHP. Лично я склонен выполнять проверку на стороне сервера, потому что у пользователя есть возможность отключить JavaScript, и он не может отключить проверку на сервере .....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...