Проверка отдельных полей с помощью AJAX - где разместить логику? - PullRequest
0 голосов
/ 15 июля 2011

У меня есть форма, которая, когда вы вводите текст в поле и выключаете его, вызывается событие jQuery, чтобы проверить это поле, вызвав соответствующее действие контроллера. Например, у меня есть AccountController и действие ValidateField. Когда пользователь покидает поле «Имя пользователя», он отправляет запрос в / Account / ValidateField. Затем я верну результат JSON обратно на основе проверки.

Хорошо, допустим, я хочу проверить поле «Имя пользователя». Я хочу проверить, было ли использовано достаточно символов, что имя пользователя еще не используется и что используемые символы разрешены. Два из них просты. Однако мне нужен доступ к базе данных, чтобы проверить, существует ли уже имя пользователя.

Куда бы я положил эту логику? На уровне сервиса?

1 Ответ

1 голос
/ 18 июля 2011

В мире, где нет абсолютно никакой репликации бизнес-логики:

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

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

В мире, где мы на самом деле заботимся о производительности:

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

Сегрегация ответственности при выполнении командных запросов

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

...