2010-11-27 13 views
1

Я недавно узнал о слоях доступа к данным, слоях бизнес-логики и слоях презентаций, но у меня все еще есть несколько вещей, которые не совсем понятны.Должен ли я пытаться помещать события управления asp в BLL?

Я могу использовать DAL и BLL с уровнем презентации, чтобы получить или установить информацию в базе данных.

Но я также думал о событиях управления asp и о том, как их реализовать.

Должен ли я, например, попытаться поместить событие нажатия кнопки в BLL или оставить его в коде aspx за файлом?

И если я должен положить их в BLL, как бы я это сделал?

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

+0

Хотел бы я принять более одного ответа. Я выбрал ответ Тома Б, потому что это было самым простым для меня, и я дал мне хороший ориентир, чтобы использовать, когда я больше узнаю о подходах N-Tiered. – 2010-11-27 15:51:54

ответ

2

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

3

Учитывая эту архитектуру:

Презентация -> Бизнес -> Данные

Любой слой должен знать только и делать предположения о слое до его непосредственного права. Это означает, что уровень презентации может взаимодействовать с бизнес-слоем и использовать его API, но он никогда не должен говорить напрямую с уровнем данных. Бизнес-уровень может использовать API уровня данных, но он никогда не должен знать или делать предположения относительно уровня представления, который его использует. И, очевидно, слой данных ничего не должен знать о каком-либо из других слоев.

Если вы следуете этому основному принципу, вы обнаружите, что ваше приложение будет проще и проще в обслуживании.

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

1

Ваш код ASPX за файлом (Presentation Layer) может либо иметь прямую ссылку на ваш BLL (результат в сочетании), либо вы можете использовать более ориентированный на обслуживание подход. Это предполагает создание интерфейсов, на которые ссылается ваш уровень презентации, и реализованный вашим бизнес-слоем. Во время инициализации приложения (т. Е. В файле Global.asax) вы можете подключить BLL к уровню презентации через инъекцию зависимостей или какой-либо другой подход.