Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Понятие архитектурного стиля. Классификация архитектурных стилей
Архитектура может соответствовать некоторому архитектурному стилю. Большинство архитектур построены на основе систем, использующих похожие решения. Сходство может быть определено как архитектурный стиль, который, в свою очередь, можно рассматривать как особый вид паттерна (шаблона). Архитектурный стиль представляет собой кодификацию опыта проектирования ИТ-систем. Примеры архитектурных стилей включают распределённый стиль, стиль “каналы и фильтры”, стиль с централизованной обработкой данных, стиль, построенный на правилах, и т.д. Конкретная система может демонстрировать более одного архитектурного стиля. Архитектурный стиль можно определить, как семейство систем в терминах шаблона организации структуры. Точнее, архитектурный стиль определяет номенклатуру компонентов и типов соединительных звеньев, а также набор условий, в соответствии с которыми они могут соединяться. Архитектурный стиль определяется набором типов компонентов, во время счёта выполняющих некоторую функцию, топологической раскладкой компонентов с указанием их взаимосвязей во время выполнения, набором семантических ограничений, набором соединителей, служащих средой сообщения, координации и сотрудничества между компонентами. Иногда вместо термина архитектурный стиль используется термин архитектурный паттерн (шаблон). Однако следует отметить наличие принципиальных различий между архитектурными стилями и паттернами. Паттерн – это фрагмент кода на конкретном языке программирования, а архитектурный стиль – это подход к проектированию. Несмотря на многочисленные попытки до сих пор отсутствуют стандартные языки описания архитектур. Принято выделять 12 базовых архитектурных стилей, которые делятся на 5 групп: · потоки данных (Data Flow Systems); · вызов с возвратом (Call-and-Return Systems); · независимые компоненты (Independent Component Systems); · централизованные данные (Data-Centric Systems); · виртуальные машины (Virtual Machines). Рис. Классификация архитектурных стилей К системам, работающим по принципу потоков данных, относят системы двух архитектурных стилей: системы пакетно-последовательной обработки (Batch Sequential Systems) и системы типа конвейеры и фильтры (Pipe and Filter Architecture). К вызову с возвратом относят 4 архитектурных стиля: программа-сопрограммы (Main Program and Subroutines), объектно-ориентированные системы (Object-Oriented Systems), клиент-серверные системы (Client-Server Systems), иерархические многоуровневые системы (Hierarchically Layered Systems). Системы, работающие по принципу вызова с возвратом: К ним обычно относят системы, построенные по принципу программа-сопрограммы, клиент-серверные системы, объектно-ориентированные системы и иерархические многоуровневые системы. Самым старым архитектурным стилем, относящимся к данной группе, является архитектурный стиль типа программа-сопрограммы. Программа выполняет функции контроллера, который управляет вычислительным процессом, в то время как функциональность реализуется в сопрограммах. Отличительной особенностью данного стиля является то, что программа имеет только одну нить управления. Данный стиль является реализацией идей структурного программирования. В качестве разновидности стиля программа-сопрограммы можно выделить архитектуры типа ведущий-ведомый (Master-Slave Architecture). Обычно такие архитектуры не выделяют в отдельный стиль и рассматривают как параллельную версию стиля программа-сопрограммы. Отличительной особенностью данных архитектур является то, что основная программа и сопрограммы работают одновременно (параллельно). В данном случае на основную программу (ведущий) возлагаются функции диспетчеризации процесса вычислений. Сопрограмма (ведомый) получает задание, выполняет его, а по завершению задания запрашивает ведущего о новом задании. Данная архитектура может реализовываться как в рамках многопроцессорных систем, так и в сетевой среде с произвольной топологией. Клиент-серверные системы можно рассматривать как специальный случай стиля программа-сопрограммы. Основное различие состоит в том, что клиент и сервер находятся на разных хостах, хотя, в принципе, клиент и сервер могут работать на одном хосте. Клиент – это процесс, который формирует запрос на обслуживание. Сервер – это процесс, который реализует сервис. В простейшем случае клиент посылает серверу команды и ожидает окончания выполнения запроса. Объектно-ориентированные системы также поддерживают механизмы наследования и/или делегирования. Одна из проблем, возникающих в процессе функционирования объектно-ориентированных систем, состоит в том, что объект должен знать, где находится тот объект, с которым он хочет взаимодействовать и какими интерфейсами он обладает. Привязка к объекту может осуществляться либо в статике, либо в динамике. Основное достоинство объектно-ориентированных систем – возможность сокрытия данных от пользователя. Это позволяет изменять внутреннее представление объекта, не уведомляя об этом клиента. Другим достоинством объектно-ориентированных систем является то, что они естественным образом поддерживают процесс распараллеливания вычислений. Объектно-ориентированная система может рассматриваться как коллекция взаимодействующих агентов. Каждый объект при этом может быть как клиентом, так и сервером. Объекты могут располагаться в одном процессе, храниться в библиотеках, находиться в разных процессах, работающих на одном хосте и, наконец, располагаться на разных хостах. Системы, работающие по принципу независимых компонентов. К ним обычно относят системы взаимодействующих процессов и системы, управляемые событиями. Взаимодействующие процессы и системы, управляемые событиями, объединяет то, что в обоих случаях используется механизм неявного вызова оператора. Другими словами, вызывающий и вызываемый оператор могут существовать независимо и могут быть распределены по разным хостам. В самом общем виде идея взаимодействующих процессов состоит в том, что имеется множество независимых процессов, которые обмениваются сообщениями. Эта модель была предложена и разработана ещё в 1970-х гг. Хоаром и имеет множество вариантов реализаций, наиболее популярными из которых являются микроядерные архитектуры, параллельные системы, основанные на обмене сообщениями, а также мультиагентные системы. Системы, работающие по принципу централизованных данных (репозитарии). К ним относят системы, основанные на использовании централизованной базы данных и системы, использующие принцип классной доски. Репозитарии иногда называют также системами с централизованным хранением данных (Data-centric systems). Характерной особенностью архитектурных стилей, принадлежащих рассматриваемой группе, является наличие централизованного хранилища информации, содержимое которого общедоступно. Централизованное хранилище используется как для хранения данных, так и метаданных (знаний о данных). Централизованное хранилище обеспечивает удобный доступ к данным и метаданным.
|