спящий / весенний контроль в сервисном слое - PullRequest
0 голосов
/ 25 ноября 2010

--- добавлено (редактировать) -

следует ли выполнять проверку на уровне службы, даже если вы проверяете на внешнем интерфейсе?

Например, у Struts есть валидация, поэтому вы можете много проверять. (Я не имею в виду проверки сценариев Java.)

-

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

(внешний интерфейс не должен быть спящим или весенним)

Ответы [ 4 ]

1 голос
/ 25 ноября 2010

Согласованные данные - одна из самых важных вещей в приложениях для предприятий!

Так что да: вам нужно проверять их дважды: во внешнем интерфейсе и на уровне обслуживания.

В нашей сетиВ приложениях у нас разные проверки на разных уровнях: (я не говорю о непоследовательных проверках, я говорю о гранулярности и объеме проверок.)

  1. Проверки входных полей Java Script (максимальная длина, не пустая)...)
  2. Те же проверки, что и (1), и некоторые более сложные проверки в веб-контроллере на стороне сервера
  3. Важные (а иногда и сложные) ограничения, которые нарушают логику приложения, проверяются всущности и сервисы
  4. Все, что база данных может легко проверить (не ноль, forein key, уникальные), проверяется ограничениями базы данных.

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

0 голосов
/ 25 ноября 2010

Я бы настоятельно рекомендовал использовать Hibernate Validator и сохранять все ваши проверки для модели. Это хороший стимул для инкапсуляции Oops, поскольку модель теперь подтверждает себя.

0 голосов
/ 25 ноября 2010

мы использовали его в сочетании с калиткой в ​​качестве основы fronend. Вы должны учитывать, что вам необходимо выполнить проверку в два этапа:

  1. проверка ввода, например: это целое число
  2. проверка на соответствие бизнес-логике

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

0 голосов
/ 25 ноября 2010

Ваш вопрос недостаточно конкретен, т. Е. Он не предназначен для решения какой-то одной проблемы (это скорее опрос).

Чтобы ответить на более конкретный вопрос: «следует ли проводить проверку на уровне службы?», даже если вы подтвердите на входе? ", ответ абсолютно.Практически все проверки интерфейса, особенно для веб-приложений, можно обойти.Ваши службы должны реализовать соответствующую проверку, чтобы обеспечить их согласованность и не полагаться на проверку в пользовательском пространстве (например, проверки Javascript), поскольку они легко побеждаются.

ОБНОВЛЕНИЕ: при решении проверки между переднимконец кода (диспетчер / контроллер) и сервисные уровни, я бы сказал, что нет жесткого и быстрого правила.Я бы, вероятно, проверил, что входные данные, которые мы получаем, являются разумными на внешнем интерфейсе и выполнил бы проверку на уровне домена на уровне обслуживания.

...