Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
5 модуль.docx
Скачиваний:
19
Добавлен:
02.11.2018
Размер:
186.24 Кб
Скачать

Раздел 16. Многоуровневые и многослойные приложения. Шаблон проектирования Модель-Представление-Контроллер

16.1. Многоуровневые приложения

Говорят, что приложение имеет многоуровневую архитектуру, если оно состоит из физически разделенного программного обеспечения.

Например, если приложение использует СУБД для хранения данных, оно имеет, как минимум, два уровня. Типичный пример двухуровневой архитектуры — бухгалтерская программная система, в которой имеется одна общая база данных, располагающаяся на выделенном сервере и, собственно, программная среда, копия которой устанавливается на каждый компьютер. Программная среда в этом случае выступает клиентом по отношению к СУБД, а так как она реализует не только логику отображения данных, но и обработку данных бухгалтерского учета, то клиент называется «толстым».

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

Архитектура типичного веб-приложения, использующего СУБД в качестве хранилища данных, трехуровневая. Программное обеспечение, соответствующее разным уровням таково:

  1. Браузер + клиентская часть веб-приложения (веб-страницы, апплеты, JavaScript и др.).

  2. Сервер веб-приложений + серверная логика веб-приложения.

  3. СУБД и база данных (включая бизнес-логику, реализованную в самой базе, например, триггеры).

На рисунках ниже приведены схемы двух- и трехуровневых приложений.

Двухуровневая архитектура:

Трехуровневая архитектура:

Достоинства приведенной на схеме трехуровневой архитектуры:

  • Размещение базы данных на выделенном компьютере в сети позволяет организовать одновременную работу с одними и теми же данными многих пользователей.

  • Повышается надежность системы, так как возможно быстрое переключение на резервный сервер (как сервер базы данных, так и сервер веб-приложений). Более того, возможно настроить систему на работу с несколькими серверами одновременно и равномерно распределить нагрузку между ними так, что выход из строя одного из серверов останется незамеченным для пользователей.

  • Повышается безопасность системы, так как в этом случае настройка политик безопасности производится и отслеживается централизовано администраторами системы.

  • Аппаратное обеспечение серверов может быть улучшено, если необходимо увеличить производительность системы.

  • Производительность системы не зависит от аппаратного обеспечения компьютеров пользователей и, следовательно, больших требований к нему не предъявляется.

  • Возможность централизовано обновлять програмное обеспечение, без необходимости действий со стороны пользователей.

К недостаткам можно отнести высокие требования к производительности серверов.

16.2. Многослойные приложения

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

Рассмотрим типичные слои, встречающиеся в веб-приложениях:

  • Слой пользовательского интерфейса (или презентационный), включает в себя статические и динамические веб-страницы, вспомогательные классы и библиотеки, используемые для обработки запросов и генерации веб-страниц.

  • Слой другого внешнего интерфейса (поддержка внешнего протокола, помимо графического интерфейса пользователя, для предоставления сервисов приложения).

  • Сервисный слой, задачами которого являются предоставление функциональности приложения в зависимости от типа интерфейса, используемого клиентом, а также вмещение логики, не принадлежащей концептуально слою модели. Зачастую объединяется в один слой с моделью.

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

  • Слой доступа к базе данных, содержащий классы, инкапсулирующие код работы с базой данных.

  • Слой ведения журналов (логов).

  • Слой проверки прав доступа к тому или иной функциональности системы и др.

Изобразим все вышеперечисленные слои в виде схемы (стрелками обозначены взаимодействия между слоями):

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]