Бизнес логика против сервисного уровня

9

Я прочитал этот ответ: https://softwareengineering.stackexchange.com/a/234254/173318, пожалуйста, исправьте мое понимание.

Бизнес-правила относятся к списку шагов бизнеса в реальном мире (без кодов).

Бизнес-логика относится к процессу преобразования бизнес-правил в коды и к таким группам / видам кодов, которые называются «бизнес-логика».

И для чего используется уровень сервиса? если я читаю этот ответ, он звучит не иначе с бизнес-логикой https://stackoverflow.com/a/4817935/4190539

Является ли сервисный уровень местом, где бизнес-логика и хранилище встречаются друг с другом?

Какаши
источник
1
«Сервисный уровень» - это общий термин, он может быть или содержать то, что вам нравится. Этот вопрос, который вы процитировали, говорил о «сервисном уровне в ASP.NET MVC», который придает этому термину более конкретную направленность. Вы намеренно говорите о последнем? Или ты просто пропустил разницу?
Док Браун
это то, что я получил до сих пор. но я хотел бы услышать ваше объяснение о них всех.
Какаши

Ответы:

11

«Сервисный слой» - архитектурный термин. Это относится к части системы, которая находится где-то посередине многоуровневой архитектуры , ниже уровня взаимодействия с пользователем, но выше уровня доступа к данным.

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

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

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

Джон Ву
источник
это нормально, если у меня есть сервисный каталог и он содержит классы как места, куда я помещаю бизнес-логику и внедряю репозиторий, другие сервисы, валидацию?
Какаши
Да, естественно внедрить другие сервисы, включая доступ к данным, в сервисный уровень - он должен каким-то образом хранить данные, и при правильной записи он не знает, как это сделать самому.
Джон Ву
Хранилище не должно содержать никакого бизнес-кода, верно? это означает, что хранилище должно быть очищено от валидации, фильтрации или любых других манипуляций со стригами, таких как strtolower, например?
Какаши
Не обязательно (я уже приводил вам два примера в своем посте), но хорошей практикой является перенести как можно больше бизнес-логики на уровень обслуживания.
Джон Ву
о хорошо, кстати, у вас есть код шаблона репозитория, который я могу видеть?
Какаши