Древовидная архитектура (она же трехуровневая) представляет систему программирования, согласно которой программный комплекс состоит из трех разноуровневых компонентов, являющихся независимыми модулями и чаще всего созданными на разных платформах.
Первый, простейший уровень – пользовательский интерфейс (терминал, «тонкий клиент», клиентское приложение), второй – сервер приложений, к которому подключается пользовательский интерфейс (уровень бизнес-логики и бизнес-правил), и третий уровень – уровень доступа к данным (сервер базы данных, с которым работает только сервер приложений).
Такая схема родственна клиент-серверной архитектуре, но имеет некоторые существенные отличия. Первый клиентский уровень не имеет прямых связей с базой данных, что обеспечивает ее безопасность, и работает преимущественно с простейшими элементами бизнес-логики. К таковым можно отнести простые операции с данными, проверку вводимых значений на соответствие, алгоритмы шифрования и интерфейс авторизации. На уровне сервера приложений располагается большая часть бизнес-правил, кроме тех, за которые отвечает уровень терминала, и кроме сложных процедур и триггеров, хранящихся на третьем уровне. На третий уровень выносятся объектно-ориентированные или реляционные БД, хранимые процедуры и триггеры. Если к этому перечню добавляется еще и схема, описывающая программу, совместимую с реляционной моделью СУБД, то второй уровень является программным интерфейсом, связывающим клиентский уровень с логикой базы данных.
Сервер приложений может находиться как на одном компьютере с сервером базы данных, так и на разных, причем последний вариант повышает степень надежности и безопасности всей системы. Идеальный вариант, когда терминалы подключены по сети к одному или нескольким серверам приложений, а те в свою очередь через сеть соединены с сервером базы данных.
К преимуществам данной модели можно отнести следующие ее свойства:
- безопасность
- надежность
- расширяемость
- конфигурируемость
- уменьшение сетевого трафика
- низкие требования к скорости сетевого соединения (между сервером приложений и терминалами) и к техническим характеристикам терминалов.
К недостаткам трехуровневой архитектуры относятся строгие требования к возможностям серверов, к скорости сетевого соединения между сервером баз данных и серверами приложений, а также высокая сложность создания приложений и администрирования в сравнении с клиент-серверными и файл-серверными моделями.