Какие системы существуют для управления бэкендом и логикой / валидацией внешнего интерфейса? - PullRequest
5 голосов
/ 20 ноября 2010

Мне просто интересно, как люди, работающие в командах, управляют отношениями между логикой и проверкой в ​​бэкэнде, скажем, в php, и точно такой же логикой и проверкой во внешнем интерфейсе, например в JavaScript?

В идеале, последнее слово должно быть дано бэкэндом, но для того, чтобы сделать приложение более доступным, было бы хорошо имитировать как можно больше во внешнем интерфейсе, используя JavaScript.Я, очевидно, пытаюсь минимизировать дублирование кода, и по мере того, как проекты становятся больше, мне становится все сложнее управлять тем, как интерфейсные элементы «копируются» из серверных компонентов.Опасность заключается в том, что, поскольку они не тесно связаны, иногда проверка внешнего интерфейса может быть «не синхронизирована» с бэкендом, особенно когда есть мошеннический разработчик JavaScript, который считает, что у него есть лучший способ выполнить некоторую проверку.!

У кого-нибудь есть понимание?

РЕДАКТИРОВАТЬ

Чтобы быть более кратким, мой вопрос на самом деле о том, как команды людей управляют «бумажным следом»«когда речь идет о дублировании логики (или о том, как внешний интерфейс обращается к бэкэнду, как предложено Фанисом ниже), а не о фактической реализации.Например, оставляете ли вы комментарии в бэкэнд-коде, говорящие «передний конец копирует / получает доступ к этому биту», или есть более «профессиональный» способ отслеживать, что и что делает?

Ответы [ 2 ]

4 голосов
/ 20 ноября 2010

Какая часть на самом деле использует данные, должна быть та, которая имеет последнее слово, т. Е. Бэкэнд, и должна иметь самые строгие правила проверки. Для меня валидация во внешнем интерфейсе призвана улучшить взаимодействие с пользователем, чтобы пользователь быстрее получал отзывы о том, что не так с его вводом, не дожидаясь перезагрузки страницы. Я был бы согласен с тем, чтобы у внешнего интерфейса было небольшое подмножество самых общих правил проверки (т. Е. Пустые поля, неправильно сформированные адреса электронной почты и т. Д.), И позволял бы бэк-энду делать тяжелые работы (например, обнаружение дублированных записей).

Однако, если вам нужно довести полную проверку до внешнего интерфейса, учтите следующее:

  • делает проверку бэкэнда отделенной от любой логики отправки формы
  • установить отдельную конечную точку (API), которая будет получать данные, выполнять проверку и выводить любые ошибки или «ок»
  • передайте передний конец через ajax данные формы в эту конечную точку и верните все ошибки для отображения
  • если все в порядке, тогда отправка формы продолжается

Таким образом, у вас есть только 1 копия правил проверки в вашем бэкэнде.

Обратите внимание, что вы выполняете проверку дважды, и, если это дорого (то есть обнаружение дубликатов с эвристикой в ​​большом наборе данных), возможно, это нежелательно. Это можно решить, сохранив данные формы в сеансе пользователя во время первой проверки, если не было обнаружено ошибок. Затем, когда форма действительно отправлена, бэкэнд не будет повторно проверять ее.

Это должно ухудшиться, если JavaScript не включен.

2 голосов
/ 20 ноября 2010

Вы смотрели на nodejs в последнее время? немного поработав и применив соответствующую инфраструктуру (например, mootools), вы можете запускать буквально одинаковые классы проверки как на стороне клиента, так и на стороне сервера.

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