Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Технологии программирования / источники / ++часть 1 Совр веб-техн / 5. +Архит особ проект и разр Веб-прилож.rtf
Скачиваний:
637
Добавлен:
10.05.2015
Размер:
10.15 Mб
Скачать

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

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

Содержание

5.1. Архитектура информационных систем

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

5.1.2. Централизованная архитектура

5.1.3. Архитектура "файл-сервер"

5.1.4. Архитектура "клиент-сервер"

5.1.5. Многоуровневый "клиент-сервер"

5.1.6. Архитектура распределенных систем

5.1.7. Архитектура Веб-приложений

5.1.8. Сервис-ориентированная архитектура

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

5.2. Шаблоны проектирования

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

5.2.2. Обзор паттернов

5.2.2.1. Паттерны проектирования классов/объектов

5.2.2.1.1. Структурные паттерны (Structural)

5.2.2.1.2. Паттерны проектирования поведения (Behavioral)

5.2.2.1.3. Порождающие паттерны проектирования

5.2.2.2. Архитектурные системные паттерны

5.2.2.2.1. Структурные паттерны

5.2.2.2.2. Паттерны управления

5.2.2.2.3. Паттерны, предназначенные для представления данных в Web

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

5.2.2.3.1. Структурные паттерны интеграции

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

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

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

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

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

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

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

5.1. Архитектура информационных систем

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

Современные программные приложения и информационные системы достигли такого уровня развития, что термин "архитектура" в применении к ним уже давно не удивляет. Грамотно построить информационную систему, эффективно и надежно функционирующую не проще, чем сконструировать и возвести современное многофункциональное здание [1].

Когда речь заходит об "архитектуре информационной системы", обычно не возникает недостатка в определениях. Есть даже Web-сайты, которые собирают такие определения [2].

Рассмотрим определение "архитектуры информационной системы", которое дают различные источники:

  • Архитектура – это организационная структура системы [3].

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

  • Архитектура – это базовая организация системы, воплощенная в ее компонентах, их отношениях между собой и с окружением, а также принципы, определяющие проектирование и развитие системы [5].

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

  • Архитектура программы или компьютерной системы – это структура или структуры системы, которые включают элементы программы, видимые извне свойства этих элементов и связи между ними [7].

  • Архитектура – это структура организации и связанное с ней поведение системы [8]. Архитектуру можно рекурсивно разобрать на части, взаимодействующие посредством интерфейсов, связи, которые соединяют части, и условия сборки частей. Части, которые взаимодействуют через интерфейсы, включают классы, компоненты и подсистемы.

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

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

Под архитектурой программных систем будем понимать совокупность решений относительно [1, 10]:

  • организации программной системы;

  • выбора структурных элементов, составляющих систему и их интерфейсов;

  • поведения этих элементов во взаимодействии с другими элементами;

  • объединение этих элементов в подсистемы;

  • архитектурного стиля, определяющего логическую и физическую организацию системы: статические и динамические элементы, их интерфейсы и способы их объединения.

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

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

Для того чтобы построить правильную и надежную архитектуру и грамотно спроектировать интеграцию программных систем необходимо четко следовать современным стандартам в этих областях. Без этого велика вероятность создать архитектуру, которая неспособна развиваться и удовлетворять растущим потребностям пользователей ИТ. В качестве законодателей стандартов в этой области выступают такие международные организации как SEI (Software Engineering Institute), WWW (консорциум World Wide Web), OMG (Object Management Group), организация разработчиков Java – JCP (Java Community Process), IEEE (Institute of Electrical and Electronics Engineers) и другие.

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

  • Централизованная архитектура;

  • Архитектура "файл-сервер";

  • Двухзвенная архитектура "клиент-сервер";

  • Многозвенная архитектура "клиент-сервер";

  • Архитектура распределенных систем;

  • Архитектура Веб-приложений;

  • Сервис-ориентированная архитектура.

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

Далее подробно рассмотрим особенности каждой архитектуры.