2011-01-09 2 views
2

Предположим, что бизнес-уровень потребляется сетью, а некоторые функциональные возможности бизнес-уровня открыты для публики также как веб-службы REST., где делать подтверждение ввода

Будете ли вы вводить подтверждение для бизнес-логики на уровне презентации (веб-службу или веб-службу REST) ​​или на бизнес-уровне и отображать ошибки проверки (брошенные бизнес-уровнем) на уровне презентации?

(В частности весной рамки используется)

ответ

3

Когда есть сомнения, то, как правило, лучше поставить бизнес-логики (включая логику проверки входных данных) в бизнес-уровне, потому что

  • Вы можете иметь дело с множественным презентационные медиумы (например, веб-интерфейс и API)
  • Вы не хотите повторять код и управлять два экземпляра этой логики

Goo d frameworks позволят вам определить такую ​​логику в общем месте и рано поддерживать проблемы ловушки (например, на уровне презентации), которая обычно является более интуитивно понятной (быстродействующей), более масштабируемой (front end catch).

Однако, если ваши рамки (ы) не поддерживают эту возможность, вы должны предпочесть согласованность и ремонтопригодность и поместить логику в бизнес-уровень.

+0

Спасибо за указание на эти Келли. Я согласен с этим, но проблема в том, что я думаю, что я могу просто отклонить недопустимые входные данные (выбросить ошибку проверки и т. Д.) На бизнес-уровне, но на уровне представления мне могут потребоваться более мелкие ошибки проверки (поле a и поле b отдельно и т. Д.). .). Чтобы сделать это, я должен поместить всю проверку в максимально возможное зерно на бизнес-уровень, а затем вести себя соответственно в слое представления, не так ли? Я думаю с весны, и я не уверен, что нашел ясное решение. Я новичок в весне, поэтому мне может не хватать точки. Любые разъяснения приветствуются. – mete

1

Я рекомендую внедрить валидацию во всех слоях. Я делаю пользовательский интерфейс, поэтому пользовательский интерфейс высок, с немедленной обратной связью. Но я никогда не доверяю данным, предоставленным пользовательским интерфейсом (думаю, пользователь, который отключает JS). Теперь, насколько подробно ваша проверка на стороне сервера зависит от вас. Но вы хотите, чтобы ваш пользователь не мог пострадать в течение полной поездки на сервер, если сможете.

+0

+1 «Никогда не доверяйте данным, предоставленным пользовательским интерфейсом». –

1

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