Как выполнить проверку на стороне клиента и синхронизацию на стороне сервера? - PullRequest
6 голосов
/ 19 декабря 2011

Обычно при написании веб-приложения мы хотим выполнить проверку как на стороне клиента, чтобы обеспечить немедленную обратную связь, так и на стороне сервера, чтобы обеспечить целостность и безопасность данных.Однако клиентские браузерные приложения обычно написаны на JavaScript.Серверная часть может быть написана на Java, Php, Ruby, Python и множестве других языков.Когда на стороне сервера поддерживается что-то вроде node.js, действительно легко повторно использовать один и тот же код проверки как на клиенте, так и на сервере, но если сторона сервера основана на Rails или Django (или любой другой среде, которую вы можете назвать), как лучше всего обеспечить синхронизацию кода проверки?Кажется немного излишним, чтобы заново реализовать один и тот же код на нескольких языках.

Ответы [ 2 ]

2 голосов
/ 21 декабря 2011

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

Давайте разберем валидации на две части. A) Бизнес-валидации, например «Сумма в поле X должна превышать 500 долларов США, если установлен флажок Y» B) Проверка основных данных, например, проверки типов данных, проверки на нулевые значения и т. д. (Мы можем спорить, что каждая проверка - это проверка бизнеса, но это зависит только от контекста).

Категория A: Это часть вашей бизнес-логики и должна храниться только на стороне сервера.

Категория B: Проверки этого типа являются потенциальными кандидатами для размещения на стороне клиента. Но имейте в виду, что проверка на стороне браузера может быть обойдена . Это не означает, что у вас вообще не должно быть проверок на стороне браузера, но такие проверки должны рассматриваться просто как бонус для сохранения сетевой передачи данных с сервера. Сервер должен повторно выполнить эти проверки.

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

Надеюсь, это поможет.

0 голосов
/ 17 августа 2017

Из проектов, которые я видел, есть три общие стратегии:

  1. Полностью дублируйте проверку на стороне клиента и на стороне сервера.Это потребует двух разных кодовых баз в случае внешнего интерфейса javascript и внутреннего интерфейса java / c # / ruby.Вам придется вручную синхронизировать логику обоих.

  2. Выполните минимальную проверку на стороне клиента.Проверьте только на очень простые вещи.Сделайте, чтобы сторона сервера сделала полную проверку.Попросите серверную часть передать объект ошибок проверки своего рода обратно клиенту и иметь клиентскую логику для преобразования этого в сообщения пользовательского интерфейса (сообщения об ошибках, красные границы и т. Д.).Asp.net MVC Framework является примерно примером этой модели.

  3. Используйте ajax для выполнения проверочных вызовов на стороне вашего сервера, когда пользователь изменяет или покидает каждый элемент управления.Это может разрешить всю вашу проверку на стороне сервера и сократит время ожидания обратной связи для пользователя, но может значительно увеличить трафик между клиентом и сервером.

По моему опыту, вариант 1, как правило, менее болезненный, чем поддержание дополнительного кода и сложности, необходимых для вариантов 2 и 3.

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