2

Возможно, этот вопрос немного идиот, потому что все может быть гарантировано в бизнес-слое, но я не знаю, должен ли я сделать эффект, чтобы принести такие гарантии на уровень бизнес-логики.Как я могу обрабатывать бизнес-логику, которая может быть реализована только в пользовательском интерфейсе?

. Пример:

У меня есть бизнес-логика приложения ASP.NET, что пользователь может только получить доступ ко второй странице списка продуктов, если он был записан в В приложении ASP.NET WebSecurity заботится о входе пользователей, поэтому я не могу вызывать методы WebSecurity на бизнес-уровне. Как я могу справиться с этим? Сохраняйте эти законы только в слое пользовательского интерфейса?

ответ

6

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

  1. Application Logic - это логика видов, специально созданная для приложения. Они обеспечивают бесперебойную работу приложения, например, фильтрацию ввода мусора.

    • вход UI валидация, как электронная почта всегда должна выглядеть [email protected]
    • безопасности приложений, логин.
  2. Business Logic - Эти логики из проблемной области. Это реальный мир бизнес-правил.

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

Пример

Вот простое упражнение: Следующие пункты валидация для возраста пользователя. Узнайте, какой из них принадлежит логике приложения или бизнес-логике.

  1. Возраст всегда должен быть числовым, и в возрасте от 1 до 100.
  2. пользователя должно быть 18 или выше.

ПОДСКАЗКА: Если клиент пытается купить пиво, кассир никогда не будет спрашивать, если возраст клиента является числовым или если он находится в диапазоне от 1 до 100.

В реальном мире, кассир является частью бизнеса и обеспечивает соблюдение правил. Предполагается, что возраст клиента является нормальным, а не 1000.

Бизнес не заботится, если вы прошли аутентификацию или нет. Вы там делать бизнес, это он

Ответ на мой небольшое упражнение:

  1. Возраст всегда должен быть числовым, и в течение 1 до 100. - Эта проверка является логика приложения. Задача приложения - обеспечить качество ввода пользователей. Нет ввода мусора.

  2. Возраст пользователя до 18 лет или старше. Эта проверка является бизнес-логикой. Бизнес предполагает, что вход всегда в правильном формате или диапазоне, все, что он должен сделать, это проверить, разрешено ли вам покупать пиво.

+0

Ты точно понял, что я спросил. Пример доходит до того, что я сомневаюсь. Я вижу номер 1, как подтверждение приложения, хотя я понял, что кассир, который я видел как пользовательский интерфейс, не заботится о том, что требуется номер 1. Я вижу номер 2 как то, что я должен гарантировать, потому что, если мой бизнес - это бар, я не могу продавать пиво для людей моложе 18 лет, или я пойду в тюрьму, и трудно понять, что что-то вроде этого гарантируется в логике приложения. Правильно я или нет? Если вы не скажете мне, я могу понять, но мне нужно будет изменить свое мнение. – GoldShip

+0

@GoldShip Я обновил свой ответ – Yorro

+0

Спасибо! Теперь у меня есть лучшее представление о том, как я могу организовать вещи в моем проекте. – GoldShip

0

Помещение вызовов WebSecurity в вашей бизнес-логике было бы неправильным, правильным. Однако, что не так, вы используете вызовы WebSecurity в своих контроллерах.

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

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

+0

Это всего лишь пример. Я хотел бы знать, как я могу сохранить бизнес-логику, которая может быть реализована только в слое пользовательского интерфейса на моем бизнес-уровне. Или я должен беспокоиться о такой бизнес-логике, которая сохраняется только на уровне пользовательского интерфейса? – GoldShip

+0

Я думаю, что вы вводите в заблуждение бизнес-логику с UI/UX. На самом деле это не бизнес-правило, которое вы реализуете. –

1

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

public List<Products> GetProductList(bool isAuthenticated = false) 
{ 

} 

, то вы можете передать в правильные значения из пользовательского интерфейса на основе ли пользователи, вошедшие в или нет

 Смежные вопросы

  • Нет связанных вопросов^_^