Предлагается справочная информация по основным архитектурным стилям веб-приложений с основными терминами по мотивам диссертации Роя Т. Филдинга (автора REST). В первой части предлагается список архитектурных стилей и таблица их сравнения. Во второй планируется описание самих стилей.
Зачем это нужно?
Для того, чтобы успешно проектировать приложения, взаимодействующие через сеть, необходимо знать основные архитектурные стили, которые могут дать вашей архитектуре требуемые свойства.
О каких веб-приложениях идет речь?
Network-based hypermedia systems.
Архитектура (программной системы) – это модель элементов программной системы во время определенной фазы ее работы.
Программная система может рассматриваться на различных уровнях детализации, также может рассматриваться множество фаз ее работы (запуск, инициализация, процесс выполнения, реинициализация, завершение). Каждому уровню детализации и каждой фазе работы соответствует своя архитектура.
Архитектурный стиль – упорядоченное множество архитектурных ограничений, которые определяют роли и характеристики архитектурных элементов и разрешенные виды отношений между этими элементами для любой архитектуры, которая соответствует этому стилю.
Первый столбец – названия стилей, второй – названия родительских стилей (для тех, у которых он есть).
Значение в таблице показывает относительное влияние архитектурного стиля на соответствующее архитектурное свойство. Минус (–) означает негативное влияние, плюс (+) положительное, а (±) означает что влияние зависит от дополнительных условий.
Список рассматриваемых стилей и свойств идет после таблицы.
Рассматривается 21 архитектурный стиль.
Рассматривается 13 архитектурных свойств.
Представленная таблица интересна по двум основным причинам – все архитектурные стили веб-приложений собраны воедино и некоторым образом классифицированы, а также сравниваются между собой по большому количеству параметров.
Введение
Зачем это нужно?
Для того, чтобы успешно проектировать приложения, взаимодействующие через сеть, необходимо знать основные архитектурные стили, которые могут дать вашей архитектуре требуемые свойства.
О каких веб-приложениях идет речь?
Network-based hypermedia systems.
Сравнение стилей
Определения
Архитектура (программной системы) – это модель элементов программной системы во время определенной фазы ее работы.
Программная система может рассматриваться на различных уровнях детализации, также может рассматриваться множество фаз ее работы (запуск, инициализация, процесс выполнения, реинициализация, завершение). Каждому уровню детализации и каждой фазе работы соответствует своя архитектура.
Архитектурный стиль – упорядоченное множество архитектурных ограничений, которые определяют роли и характеристики архитектурных элементов и разрешенные виды отношений между этими элементами для любой архитектуры, которая соответствует этому стилю.
Таблица Архитектурные стили (Styles) / Архитектурные свойства (Properties)
Первый столбец – названия стилей, второй – названия родительских стилей (для тех, у которых он есть).
Значение в таблице показывает относительное влияние архитектурного стиля на соответствующее архитектурное свойство. Минус (–) означает негативное влияние, плюс (+) положительное, а (±) означает что влияние зависит от дополнительных условий.
Список рассматриваемых стилей и свойств идет после таблицы.
Стили (styles)
Рассматривается 21 архитектурный стиль.
- Data-flow styles
- PF (Pipe and Filter)
- UPF (Uniform Pipe and Filter)
- Replication styles
- RR (Replicated Repository)
- $ (Cache)
- Hierarchical styles
- CS (Client-Server)
- LS (Layered System)
- LCS (Layered-Client-Server)
- CSS (Client-Stateless-Server)
- C$SS (Client-Cache-Stateless-Server)
- LC$SS (Layered-Client-Cache-Stateless-Server)
- RS (Remote Session)
- RDA (Remote Data Access)
- Mobile Code Styles
- VM (Virtual Machine)
- REV (Remote Evaluation)
- COD (Code on Demand)
- LCODC$SS (Layered-Code-on-Demand-Client-Cache-Stateless-Server)
- MA (Mobile Agent)
- Peer-to-Peer Styles
- EBI (Event-based Integration)
- C2 (Component- and message-based)
- DO (Distributed Objects)
- BDO (Brokered Distributed Objects)
Свойства (properties)
Рассматривается 13 архитектурных свойств.
- Performance
- Net(work) Performance – производительность, зависящая от объема передавамых данных через сеть
- UP (User-perceived) Performance – производительность, воспринимаемая пользователем
- Network Efficiency – эффективность использования сети (интенсивность взаимодействия с сетью и объемы передачи данных)
- Scalability – масштабируемость (возможность архитектуры поддерживать большое число элементов и их взаимодействий)
- Simplicity – простота (степень разделения системы на простые элементы)
- Modifiability
- Evolvability – степень, до которой изменения одного компонента не затрагивают другие
- Extensibility – возможность добавления нового функционала в систему
- Customizability – способность временно менять поведение компонентов для реализации новой возможности
- Configurabiity – возможность модифицировать поведение компонентов системы после ее запуска
- Reusability – возможность повторного использования элементов системы
- Visibility – возможность мониторинга компонентом взаимодействий других компонентов
- Portability – возможность запуска в различных средах
- Reliability – надежность (вероятность сбоя всей системы при неработоспособности части ее компонентов)
Резюме
Представленная таблица интересна по двум основным причинам – все архитектурные стили веб-приложений собраны воедино и некоторым образом классифицированы, а также сравниваются между собой по большому количеству параметров.