Опубликован: 04.05.2010 | Уровень: для всех | Доступ: платный
Лекция 4:

Архитектурные особенности проектирования и разработки Веб-приложений

5.2.2.3. Паттерны интеграции корпоративных информационных систем
5.2.2.3.1. Структурные паттерны интеграции

К структурным паттернам интеграции относятся [25]:

  • Взаимодействие "точка – точка";
  • Взаимодействие "звезда" (интегрирующая среда);
  • Смешанный способ взаимодействия.

В данной лекции примеры структурных паттернов интеграции рассматриваться не будут.

5.2.2.3.2. Паттерны по методу интеграции

К паттернам по методу интеграции относятся [25]:

  • Интеграция систем по данным (data-centric);
  • Функционально-центрический (function-centric) подход;
  • Объектно-центрический (object-centric);
  • Интеграция на основе единой понятийной модели предметной области (concept-centric).

В данной лекции примеры паттернов по методу интеграции рассматриваться не будут.

5.2.2.3.3. Паттерны интеграции по типу обмена данными

К паттернам интеграции по типу обмена данными относятся [25]:

  • Файловый обмен;
  • Общая база данных;
  • Удаленный вызов процедур;
  • Обмен сообщениями.

В данной лекции примеры паттернов интеграции по типу обмена рассматриваться не будут.

5.2.3. Ключевые термины

Шаблон проектирования, Паттерн.

5.3. Способы передачи данных в Веб

5.3.1. Общие сведения

Рассмотрим в качестве дополнительной темы способы передачи данных в Веб. Эти знания понадобятся при рассмотрении следующих лекций.

Протокол HTTP имеет два самых часто используемых вида запросов GET и POST [26].

Основное различие методов GET и POST состоит в способе передачи данных веб-формы обрабатывающему скрипту, а именно [27]:

  • Метод GET [28]

    Используется для запроса содержимого указанного ресурса.

    GET http://www.example.com/index.html HTTP/1.1
    

    Данная команда говорит серверу "Дай мне файл index.html, который находится в директории (на сайте) http://www.example.com/".

    С помощью метода GET можно также начать какой-либо процесс. В этом случае в тело ответного сообщения следует включить информацию о ходе выполнения процесса.

    Клиент может передавать параметры выполнения запроса в URI целевого ресурса после символа "?":

    GET /path/resource?param1=value1&param2=value2 HTTP/1.1
    

    Согласно стандарту HTTP, запросы типа GET считаются идемпотентными – многократное повторение одного и того же запроса GET должно приводить к одинаковым результатам (при условии, что сам ресурс не изменился за время между запросами). Это позволяет кэшировать ответы на запросы GET.

    Кроме обычного метода GET, различают еще условный GET и частичный GET. Условные запросы GET содержат заголовки If-Modified-Since, If-Match, If-Range и подобные. Частичные GET содержат в запросе Range. Порядок выполнения подобных запросов определен стандартами отдельно.

    Итак, все, что отображается в адресной строке и любые ссылки, на которые можно нажать или скопировать – все они используют GET. Этот вид запроса позволяет вам посылать информацию на сервер, делать с ней что-то на сервере, и возвращать результат.

    Плюсы GET [26, 29]

    1. Страницу всегда можно сохранить в закладках (СЕО-дружелюбен).
    2. Он быстрее POST, так как вся информация находится в заголовках.
    3. Информация, посылаемая на сервер, всегда видима (в адресной строке).

    Минусы GET [26, 29]

    1. Метод GET ограничивает объем передаваемой информации (максимальная длина URL не оговаривается спецификациями протокола HTTP, но на практике она в каждом конкретном случае зависит как от версии браузера, так и от настроек сервера).
    2. Метод GET открыто пересылает введенную информацию в обрабатывающий сценарий, что может неблагоприятно сказаться на безопасности. Например, каждый человек, которому виден монитор вашего компьютера, может заметить введенный в форму пароль.
  • Метод POST [28]

    Применяется для передачи пользовательских данных заданному ресурсу.

    Например, в блогах посетители обычно могут вводить свои комментарии к записям в HTML-форму, после чего они передаются серверу методом POST и он помещает их на страницу. При этом передаваемые данные включаются в тело запроса. Аналогично с помощью метода POST обычно загружаются файлы.

    В отличие от метода GET, метод POST не считается идемпотентным, то есть многократное повторение одних и тех же запросов POST может возвращать разные результаты (например, после каждой отправки комментария будет появляться одна копия этого комментария).

    Сообщение ответа сервера на выполнение метода POST не кэшируется.

    POST может "симулировать" GET запрос, можно указывать параметры, как и в заголовке запроса, так и в теле.

    Плюсы POST [26, 29]

    1. Можно отправить много информации на сервер, объем неограничен.
    2. Отправляемая информация не показывается в адресной строке.
    3. Метод POST в отличие от метода GET позволяет передавать запросу файлы.

    Минусы POST [26, 29]

    1. Медленнее, чем GET, так как анализируются заголовки и тело запроса.
    2. Страницы, сгенерированные как результат запроса POST, нельзя добавить в закладки (СЕО-недружелюбен).
    3. Нарушение логики работы кнопки "Назад" – элемента пользовательского интерфейса браузера. Вернуться на страницу, сгенерированную при помощи метода POST, после перехода с нее куда бы то ни было еще, довольно трудно. Internet Explorer, например, выдаст сообщение: "Внимание: страница устарела" с требованием нажать на кнопку "Обновить".
    4. В ряде браузеров возникают трудности при сохранении веб-страниц, сгенерированных динамически с применением метода POST, для локального просмотра. Отмечаются также проблемы с распечаткой подобных документов.

В HTML формах можно указать, как отправлять информацию на сервер при помощи атрибута method:

<form method="get">
или
<form method="post">

По умолчанию всегда используется GET.

При выборе использования методов POST и GET можно следовать следующим рекомендациям [30]:

  1. 1. Все данные, которые участвуют в формировании страницы лучше передавать методом GET.

    Например:

    • перелистывание страниц;
    • поиск;
    • запрос по ID записи/категории/новости и т.п.
  2. 2. Все данные, которые сохраняются в Базу Данных (или файл) лучше передавать методом POST и после записи данных, делать перенаправление (редирект) на страницу, где уведомлять, к примеру, что данные сохранены.

5.3.2. Ключевые термины

GET, POST.

5.4. Краткие итоги

Архитектура информационной системы – концепция, определяющая модель, структуру, выполняемые функции и взаимосвязь компонентов информационной системы.

Классификация программных систем по их архитектуре:

  • Централизованная архитектура
  • Архитектура "файл-сервер"
  • Двухзвенная архитектура "клиент-сервер"
  • Многозвенная архитектура "клиент-сервер"
  • Архитектура распределенных систем
  • Архитектура Веб-приложений
  • Сервис-ориентированная архитектура

Шаблоны проектирования (паттерн, design pattern) – это многократно применяемая архитектурная конструкция, предоставляющая решение общей проблемы проектирования в рамках конкретного контекста и описывающая значимость этого решения.

Протокол HTTP имеет два самых часто используемых вида запросов GET и POST. Основное различие методов GET и POST состоит в способе передачи данных веб-формы обрабатывающему скрипту.

Владимир Тадеуш
Владимир Тадеуш
Украина
Кирилл Дубовик
Кирилл Дубовик
Россия, Петрозаводск