В настоящее время многие системы спроектированы с многоуровневой архитектурой, NHibernate также имеет ее и прекрасно работает с этим дизайном.
Многоуровневая архитектура
Многоуровневая архитектура делит систему на несколько групп, где каждая группа содержит код, адресованный конкретной проблемной области, и эти группы называются слоями. Большинство приложений уровня предприятия используют архитектуру приложений высокого уровня , состоящую из трех уровней:
- Уровень презентации
- Бизнес уровень
- Постоянный слой
Например, уровень пользовательского интерфейса, который также известен как уровень представления, может содержать весь код приложения для создания веб-страниц и обработки пользовательского ввода.
Одним из основных преимуществ многоуровневого подхода является то, что вы часто можете вносить изменения в один уровень без какого-либо значительного нарушения других уровней, что делает системы менее уязвимыми и более удобными в обслуживании .
Это самый верхний слой, который содержит код, отвечающий за отрисовку пользовательского интерфейса, страниц, диалогов или экранов, а также за сбор пользовательского ввода и управление навигацией.
Бизнес-уровень отвечает за реализацию любых бизнес-правил или системных требований, которые пользователи будут понимать как часть проблемной области.
Он также повторно использует модель, определенную постоянным слоем.
Уровень персистентности состоит из классов и компонентов, которые отвечают за сохранение и извлечение данных приложения.
Этот слой также определяет соответствие между классом модели и базой данных. NHibernate используется в основном в этом слое.
Каждое приложение имеет набор вспомогательных или служебных классов, которые поддерживают другие уровни: например, виджеты пользовательского интерфейса, классы обмена сообщениями, классы исключений и утилиты ведения журнала.
Эти элементы не считаются слоями, потому что они не подчиняются правилам межслойной зависимости в многоуровневой архитектуре.
Это высокоуровневое представление приложения NHibernate, и вы также можете увидеть простую архитектуру NHibernate.
Код приложения использует API-интерфейсы NHibernate ISession и IQuery для постоянных операций и должен управлять транзакциями базы данных только в идеале с использованием API-интерфейса NHibernate ITransaction .