Архитектура Web приложения Многослойная архитектура (2- слойная, 3-слойная) & MVC.

Презентация:



Advertisements
Похожие презентации
Учебный курс Технологии и средства разработки корпоративных систем Лекция 1 Открытые системы. Клиент и сервер Лекции читает кандидат технических наук,
Advertisements

Лекция 1 MVC (Model-View-Controller) - это конструкционный шаблон, который описывает способ построения структуры приложения, сферы ответственности и взаимодействие.
1 Современные системы программирования. Часть 2. Системное и прикладное программное обеспечение Малышенко Владислав Викторович.
Трехслойная архитектура приложений, основанных на использовании баз данных.
Организация распределенных прикладных систем. Попытаемся ответить на вопросы Как устроены распределенные прикладные системы? Каковы наиболее важные их.
Где хранить данные в web- приложении page –JSP страница request – HTTP запрос session – сессия пользователя application – веб-приложение Static Java class.
Лекция 2. Модель клиент- сервер. УЧЕБНЫЕ ВОПРСЫ 1.Клиенты и серверы 2.Разделение приложений по уровням 3.Варианты архитектуры клиент-сервер.
Разработки на базе WEB- технологий. Подходы и решения ОАО «Конструкторское бюро системного программирования», г. Гомель, Беларусь.
Лекция 22 Лекция 22 Локальные, сетевые и распределенные базы данных. Архитектура «файл- сервер». Двух и трехуровневая архитектура «клиент-сервер». Модель.
Тренинг «Разработка веб-приложений с использованием ASP.NET MVC Framework» Занятие 1 Знакомство с подходом MVC Гайдар Магдануров
Архитектура операционных систем. Архитектура ОС Состав модулей (компонент) ОС Структура связей между отдельными модулями ОС Принципы взаимодействия модулей.
Распределенная обработка данных Различные модели в технологии баз данных.
Организация программного кода при создании информационных систем Подготовил: Студент группы МЭК-21 Акименко В. И. Руководитель: Доц. Яровенко А. Н.
Презентация по: информатике Ученицы 8 а класса МКОУ «Линевская СШ» ЛЕМАЕВОЙ ЭЛЬВИРЫ Преподаватель: СУШКОВ АЛЕКСАНДР ИВАНОВИЧ.
Симпозиум 2008 Сергей Шутов, ДИМАС Борис Егоров, Интерсистемс Практика использования Zen и Прототип-6.
Архитектура операционных систем Семестр 2, Лекция 1.
Мартин Фаулер « Архитектура корпоративных программных приложений » Подготовила Ст. ПС - 41 Лукиных Н. А.
Чувашский Государственный педагогический университет имени И.я.Яковлева Тема учебного проекта: Базы данных в сети Интернет Автор: Студент ФМФ 5-го курса.
Администрирование информационных систем Лекция 4. Система управления базами данных.
Лекция 23 Лекция 23 Схемы распределения данных и запросов. Обработка распределенных данных и запросов. Многопотоковые и многосерверные архитектуры. Типы.
Транксрипт:

Архитектура Web приложения Многослойная архитектура (2- слойная, 3-слойная) & MVC

Обзор Независимость данных в реляционной СУБД N-уровневая архитектура Шаблона проектирования Модель MVC

НЕЗАВИСИМОСТЬ ДАННЫХ В РЕЛЯЦИОННОЙ СУБД Отделение представления от логики и данных

Архитектура базы данных и представления Жестки диск User 1User 2 View 2View 1 Схема БД Система хранения То что видит пользователь Таблицы и ссылки Файлы на диске Каждый уровень не зависит от уровня ниже

Логический и физический уровни Жестки диск User 1User 2 View 2View 1 Схема БД Система хранения Логический уровень Физический уровень

Независимость данных Логическая независимость: возможность изменять логическую схему без изменения внешнего вида (кода приложения) – Можно добавлять новые поля, новые таблицы без изменения представления – Можно изменять структуру таблиц без изменения представления Физическая независимость: возможность изменять физическую схему без изменения логической схемы – Можно изменять размер пространства хранения – Тип данных может быть изменён по причинам оптимизации Нужно всегда отделять представление - VIEW (то что видит пользователь) от модели- MODEL (данных сервиса)

N-УРОВНЕВАЯ АРХИТЕКТУРА

Необходимость слоёв N-уровневая архитектура имеет следующие компоненты: – Уровень представления – Уровень бизнес логики – Данные N-уровневая архитектура пытается разделить компоненты на разные уровни (слои): – Физическое разделение – Логическое разделение

1-уровневая архитектура Все 3 слоя на одной машине – Весь код и все процессы происходят на одной машине Представление, логика, уровень данных сильно связаны – Расширяемость (Scalability): на одном процессоре можно запустить только ограниченное число процессов – Переносимость (Portability): для перемещения на новую машину придётся переписать весь код – Поддержка (Maintenance): при изменении одного слоя придётся изменять остальные Data Base Presentation Logic Business Logic Data Access Logic Приложение

2-уровневая архитектура База данных работает на сервере – Отделение данных от клиента – Клиент может переключить базу данных Отделение представления от данных – Высокая нагрузка на сервер – Потенциальные проблемы с задержкой в сети – Уровень представления и логики остаются сильно связанны Business Logic Presentation Logic Data Access Logic Data Base Data Layer Client Server

3-уровневая архитектура Каждый слой может быть потенциально запущен на отдельной машине Представление логика и данные разделены Presentation Layer Содержит Presentation Logic Business Layer Содержит Business Logic Data Layer Содржит Data Access Logic Data Base ClientServerDB Server

Любое приложение Взять общее число клиентов Число клиентов 4 Взять список клиентов за последний год Сложить всех клиентов вместе Запрос Клиент 1 Клиент 2 Клиент 3 клиент 4 База данных Хранилище Уровень представления Уровень логики Уровень данных Принципы архитектуры: Клиент-серверная архитектура Каждый слой (данные, представление и логика) не зависит от остальных и не зависит от реализации Несоединённые слои вообще никогда не взаимодействуют Изменение платформы влияет только на тот уровень который на ней находится

Любое приложение Взять общее число клиентов Число клиентов 4 Взять список клиентов за последний год Сложить всех клиентов вместе Запрос Клиент 1 Клиент 2 Клиент 3 клиент 4 База данных Хранилище Уровень представления Уровень логики Уровень данных Предоставляет графический интерфейс Обрабатывает пользовательские события Иногда называют GUI или client view of front- end

Любое приложение Взять общее число клиентов Число клиентов 4 Взять список клиентов за последний год Сложить всех клиентов вместе Запрос Клиент 1 Клиент 2 Клиент 3 клиент 4 База данных Хранилище Уровень представления Уровень логики Уровень данных Набор правил для работы с данными Может обрабатывать запросы нескольких пользователей Иногда называют middleware или back- end Недолжен содержать пользовательских форм или непосредственно обращаться к данным

Любое приложение Взять общее число клиентов Число клиентов 4 Взять список клиентов за последний год Сложить всех клиентов вместе Запрос Клиент 1 Клиент 2 Клиент 3 клиент 4 База данных Хранилище Уровень представления Уровень логики Уровень данных Физическое хранилище для данных (persistence) Управляет доступом к БД или файловой системе Иногда называется back- end Недолжен содержать пользовательских форм или бизнес логики

3-уровневая архитектура Уровень представления – Статический или динамически сгенерированный контент отображаемый через браузер (front-end) Уровень логики – Уровень подготовки данных для динамически генерируемого контента, уровень сервера приложений (application server). Middleware платформы: JavaEE, ASP.NET, PHP, ColdFusion Уровень данных – База данных включающая в себя данный и систему управления над ними или же готовая RDBMS система, предоставляющая доступ к данным и методы управления (back-end)

Преимущества Независимость уровней – Лёгкость в поддержке – Отдельные компоненты можно использовать в других задачах – Задача разработки хорошо делится и поэтому может быть быстрее решена (уровни можно разрабатывать параллельно) Web дизайнер делает уровень представления Инженер (Software Engineer) делает логику Администратор БД делает модель данных

ШАБЛОНЫ ПРОЕКТИРОВАНИЯ Design Patterns

Проблемы в дизайне и их решения Разработка и тестирование – Как сделать web приложение? – Какую технику стоит выбрать? Повторное использование – Можно ли использовать стандартные компоненты? Масштабируемость – Как приложение будет справляться с огромным числом запросов? Безопасность – Как защититься от атак приложения, скомпрометированных данных, вирусов и отказов сервиса? Представления данных – Типы, индивидуальные учётные записи, защита данных Нужно одно общее и многоразовое решение: Шаблоны проектирования

Что такое шаблоны проектирования? Общее и многоразовое решение наиболее общих проблем построения архитектуры программы Шаблон описывает то как решить проблему в большинстве подобных ситуаций Это не конечный дизайн – Шаблон всегда должен быть адаптирован для приложения – Нельзя просто транслировать общие идеи в код

Происхождение Шаблонов Проектирования Architectural concept by Christopher Alexander (1977/79) Adapted to OO Programming by Beck and Cunningham (1987) Popularity in CS after the book: Design Patterns: Elements of Re- useable Object-oriented software, Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides Сейчас шаблоны проектирования широко используются в разработки коммерческих приложений

ШАБЛОН ПРОЕКТИРОВАНИЯ MVC

Проблема Нужно изменить внешний вид без изменения логики (ядра приложения) Нужно представлять данные в различном контексте (т.е. мощный десктоп, web браузер или мобильный телефон) Нужно взаимодействовать с данными из различного контекста (т.е. touch экран планшета или клавиатура компьютера) Нужно иметь несколько представлений для одних и тех же данных (т.е. список, миниатюры, пр.)

Решение Отделить ядро функциональности от представления и логику правления, использующую эту функциональность Позволить нескольким представлениям разделять одни и те же данные Сделать подожку нескольких клиентов (клиентских частей приложения, представений) проще

Модель Model-View-Controller Такая схема помогает отделить модель от представления Так обслуживание данных (файл с текстом или БД) отделено от представления (график или список) и того как данные будут обрабатываться (GUI или командная строка)

Модель Model-View-Controller Модель – Управляет поведением и данными приложения – Отвечает на запросы о своём состоянии (часто для представления) – Следуя инструкциям изменяет состояние (часть для контроллера) Представление – Обрабатывает модель в форму удобную для взаимодействия, в пользовательский интерфейс (несколько представление могут обрабатывать одну модель для разных целей) Контроллер – Получает пользовательские данные и инициирует вызов модели – Получает пользовательские данные и инструкции для модели и отображения производит действия исходя из этих данных

На практике Модель – Содержит специфические здания о приложении – Записи статуса приложения – Часта связано с БД – Не зависит от представления Одна модель для нескольких представлений Представление – Представляет данные пользователю – Позволяет пользователю производить действия – Не обрабатывает ничего самостоятельно Контроллер – Описывает как реагирует интерфейс на события пользователя – Получает сообщения от представления – Взаимодействует с моделью (Говорит что за данные следует показывать)

MWC для Web приложения Модель – Таблицы данных – Данные сессии – Правила руководящие транзакцией Представление – (X)HTML – CSS – Шаблоны обрабатываемые на стерне сервера (JSP) Контроллер – Клиентские скрипты – Процесс обработки http – Бизнес логика

Преимущества MVC Простой дизайн – Модель предоставляет API для данных и состояний – Упрощает разработку модели и контроллера Модульность – Любой компонент может быть легко заменён Множественное представление – Можно добавлять новые представления по мере необходимости – Каждое представление используете одно и тоже API для модели Легко дорабатывать и поддерживать – Можно создать простое (текстовое) представления для отладки модели – Остальные представления и контроллеры могут быть добавлены позже – Проще создать стабильный интерфейс Распределение – Распределение приложение выглядит естественно (разнести компоненты по разным машинам)

MVC против 3-ч уровневой архитектуры Взаимодействие – 3-tier: Уровень представления никогда независимо не работает с данными, только через уровень логики (линейная топология) – MVC: Все уровни могут взаимодействовать непосредственно (треугольная топология) Использование – 3-tier: В основном используется для Web приложение, где клиент, middleware и слой данных расположены на физически раздельных платформах – MVC : Исторически применяется для запуска всех компонент на одной рабочей станции (однако часто применяется и для распределённых систем)