Должен ли я попытаться поставить ASP Control событий в BLL?
-
28-09-2019 - |
Вопрос
Недавно я узнал о слоях доступа к данным, бизнес-логикам и слоям презентации, но у меня все еще есть несколько вещей, которые не совсем понятны.
Я могу использовать DAL и BLL с помощью слоя презентации, чтобы получить или установить информацию в базе данных.
Но я также думал о контрольных событиях ASP и как я должен их реализовать.
Должен ли я, например, попробуйте поставить кнопку Click Event в BLL или я должен просто оставить его в коде ASPX за файлом?
И если я должен положить их в BLL, как бы я пошел по этому поводу?
Я не уверен, как сделать событие вызовов методом, который находится в BLL, поэтому любой совет будет очень оценен.
Решение
Если событие связано с бизнес-моделью, вы должны создать метод в BLL. Если это тип мероприятия UI, обрабатывать его в коде позади. Итак, например, если пользователь нажимает кнопку, чтобы рассчитать доставку, в обработчике событий кнопки Click (код позади) вызовите метод CallateShipping (Code). Если, однако, у вас есть кнопка, которая меняет цвет фона страницы (я не мог подумать лучшего примера), тогда вы полностью обработаете это полностью в коде.
Другие советы
Учитывая эту архитектуру:
Презентация -> Бизнес -> Данные
Любой слой должен знать только и делать предположения о слое к его непосредственному праву. Это означает, что слой презентации может говорить с бизнес-слоем и использовать его API, но он никогда не должен говорить непосредственно на слой данных. Бизнес-слой можно использовать API слоя данных, но он никогда не должен знать или делать предположения о уровне презентации, который потребляет его. И, очевидно, слой данных не должен знать ничего о любом из других слоев.
Если вы будете следовать этим общим директором, вы обнаружите, что ваше приложение будет проще и проще для обслуживания.
Чтобы ответить на ваш вопрос, например, кнопки Click Events принадлежат к слою презентации - поместив кнопку Click Event в вашу бизнес-логику, будет размыть линии между двумя слоями и создаст ненужную связь.
Ваш код ASPX за файлом (слой презентации) может иметь непосредственное ссылку на ваш BLL (приводит к связи в муфте), либо можно использовать более ориентированный на сервис подход. Это будет включать в себя создание интерфейсов, на который ссылаются ваш слой презентации и реализован вашим бизнес-уровнем. Во время инициализации приложения (т.е. в вашем файле Global.Asax) вы можете подключить BLL к своему презентационному слою через инъекцию зависимости или некоторый другой подход.