Я довольно новичок программист, который пытается изучить основы n-слоистой архитектуры (DAL, BLL, UI). Приложение, которое я программирую, представляет собой одноуровневое трехслойное приложение, написанное на VB.NET (.Net 3.5). Слои следующим образом:Как передавать данные между BLL и UI в трехслойном (одноуровневом) приложении?
DAL
BLL
UI
COMMON - содержит право DTO теперь.
У меня возникли проблемы с определением того, что нужно пройти между моим BLL и UI. Мой инстинкт подсказывает мне, что я должен только передавать данные в пользовательский интерфейс, а не полный бизнес-объект из BLL. Рассмотрим два сценария:
1) Передайте BO непосредственно из BLL в UI. Это предоставляет методы BO и позволяет UI напрямую обращаться к BO, что кажется плохим.
2) Передайте только соответствующие данные от BO к пользовательскому интерфейсу. Например, у клиента есть имя и адрес. Эти данные действительно показывают, что мы хотим отображать/редактировать в пользовательском интерфейсе, поэтому мы будем возвращать эти данные только пользовательскому интерфейсу, а не полному BO. Пользовательский интерфейс затем будет звонить в BLL для обновления определенного BO.
Я склонен использовать # 2, но я не знаю, как его реализовать. То, как я его запрограммировал сейчас, если я только верну данные из BLL, все ссылки на мои BO будут потеряны, и GC заявит о них. Исходя из этого, у меня есть некоторые вопросы:
1) Должен ли я поддерживать бизнес-объекты между вызовами BLL? Альтернативой является повторное создание их каждый раз, когда я передаю данные через BLL, что кажется неправильным.
2) Что такое лучший способ сохранить BO живой в одной архитектуре уровня (как держать ссылку, если мы не передать его в пользовательский интерфейс?)
3) Как многоуровневые приложения делают это? Сохраняют ли они BO в BLL и ждут обновления от пользовательского интерфейса? Разве это не требует много «бухгалтерского учета» в BLL, чтобы убедиться, что BO выпущены, когда они больше не нужны?
Спасибо за понимание, и простите меня, если я прошу что-то глупое. Я научил себя маленькому программированию, которое я знаю, поэтому я могу задавать глупый вопрос и не знаю этого.
эта тема полезна: http://stackoverflow.com/questions/518329/what-objects-should-you-return-from-the-data-access-layer-to-the-business-layer-a/ 518386 # 518386 –
Спасибо, Чад, я прочитал эту тему. Кажется, что «менеджер» для каждого бизнес-объекта движется к модели анемичного домена, не так ли? –