Business Layer Logic (BLL) - это данные? - PullRequest
6 голосов
/ 05 января 2010

Я думаю, что BLL о данных. Он не должен включать метод с именем SendEmail. BLL - это место для кэширования данных, манипулирования ими, выполнения расчетов, связанных с бизнесом. Отправка электронной почты является бизнес-процессом, но код, который фактически отправляет электронную почту, должен находиться за пределами пространства имен BLL.

Является ли BLL только данными?

Ответы [ 6 ]

12 голосов
/ 07 января 2010

BLL не о данных, это все о том, что должно быть сделано с данные.

  • Пользователь будет взаимодействовать только с внешними формами представления любого приложения, которое широко известно как уровень представления .

  • Данные будут отображаться или передаваться в качестве ввода / вывода на этот слой из различных источников данных . Этими источниками являются базы данных или веб-сервисы . Кусок кода, который фактически выбирает или отправляет эти данные в соответствующие источники данных, это то, что мы называем DAL - уровень доступа к данным.

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

  • Если данные необходимо сохранить в базе данных, BLL будет иметь DAL в качестве базового слоя .

  • BLL не знает об источниках данных и о том, как данные выбираются или отправляются в источники данных. У вас есть DAL для этого. BLL знает только о данных, которые чаще всего используются в формах бизнес-объектов и операциях с data бизнес-объектами .

  • BLL также не знает, использует ли пользователь веб-сайт или настольное приложение . Для этого у вас есть презентационный слой.

3 голосов
/ 05 января 2010

BLL обозначает ваш уровень бизнес-логики. Он должен обрабатывать все, что связано с вашим уровнем бизнес-логики. SendEmail может быть лучше в каком-то служебном классе?

Также, если вы сообщите своей BLL о механизме электронной почты, вы даете ей слишком много информации (тесно связаны, следуйте закону деметры для функций, вики / Google это). Ваш BLL не заботится ни об электронной почте, ни об этом.

Когда вы упомянули Данные , вы, вероятно, следуете за DAL (Уровень доступа к данным). Это уровень, который занимается вставкой / обновлением данных и т. Д. Обратно в некоторый ресурс, такой как база данных.

2 голосов
/ 05 января 2010

BLL не о данных, а о бизнесе (следовательно, бизнес логический уровень).

DAL - это данные.возможно, переместите метод SendMail в класс Utility, но вполне законно, что вам нужно вызывать SendMail из BLL.

0 голосов
/ 07 января 2010

Бизнес-уровень должен содержать классы, которые содержат бизнес-информацию. Классы в этом слое должны представлять ваш бизнес в программном обеспечении. Методы должны включать бизнес-правила. Бизнес-уровень будет хранить, проверять и обрабатывать данные, но базовый уровень доступа к данным (DAL) будет знать, как добавлять, удалять, получать и обновлять данные из базы данных. Бизнес-уровень также не должен заботиться о представлении.

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

0 голосов
/ 07 января 2010

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

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

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


Иногда жесткое соответствие шаблону может вызвать больше проблем, чем пытается решить. Если вы обнаружите, что конкретная реализация работает для вас сейчас и не вызовет никаких проблем в краткосрочной и среднесрочной перспективе, а стоимость исследования и реализации «идеального» решения слишком велика, то следуйте полученному. *

0 голосов
/ 05 января 2010

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

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

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

...