(Примечание: thesetwo вопросы похожи, но более специфичные для ASP.Net)Какое место для проверки входных данных?
Рассмотрим типичный веб-приложение с богатым клиентом (это Flex в моем случае), где у вас есть форма, лежащая в основе клиентская логика, которая отображает вход формы в модель данных, способ перенаправления этих объектов на логику сервера, которая обычно помещает ее в базу данных.
Где я, вообще говоря, ставил логику проверки, т.е. е. обеспечение правильного формата адресов электронной почты, номеров и т. д.?
- Как можно скорее. Богатые клиентские среды, такие как Flex, обеспечивают встроенную логику валидатора, которая позволяет проверять правильность при отправке формы, даже до того, как она достигнет вашей модели данных. Это приятно и отзывчиво, но если вы развиваете что-то расширяемое, и вы хотите, чтобы валидация защищала от ошибок программирования более поздних авторов, это не улавливает его.
- В модели данных на стороне клиента. Поскольку это «официальное» представление ваших данных, и у вас уже есть типы данных и геттеры/сеттеры, эта проверка фиксирует ошибки пользователя и ошибки программирования у людей, расширяющих вашу систему.
- После получения данных на сервере. Это добавляет защиту от неработающих или вредоносных клиентов, которые могут присоединиться к системе позже. Кроме того, в сценарии с несколькими клиентами это дает вам один авторитетный источник проверки.
- Перед тем, как хранить данные в бэкэнд. Это включает защиту от всех ошибок, совершаемых в любом месте цепи (за исключением самой логики хранения), но может потребовать повторения ошибки на всем пути назад.
Я вроде как склоняюсь к использованию как 2, так и 4, поскольку я создаю приложение, которое имеет различные точки потенциального расширения третьими лицами. Использование 2 в дополнение к 4 может показаться излишним, но я думаю, что это делает клиентское приложение более удобным для пользователя, поскольку для проверки отсутствия данных на сервере не требуется обратного перехода к серверу. Каков ваш подход?
довольно прекрасно :) Он удовлетворяет всем частям веб-разработчиков моего мозга: D – jrharshath
Спасибо за комментарий :) – coobird