10 распространенных шаблонов архитектуры программного обеспечения

Архитектура

Хотите знать, как проектировать большие системы масштаба предприятия? Прежде чем приступить к разработке основного кода, мы должны выбрать подходящую архитектуру, которая даст нам желаемую функциональность и качественные характеристики. Поэтому необходимо понимать различные архитектуры, прежде чем применять их к нашим проектам.
image.png

Что такое архитектурные модели?

Согласно Википедии,

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

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

Иерархический режим

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

  • **Слой представления **Слой представления (то есть слой пользовательского интерфейса)
  • **Прикладной уровень **Прикладной уровень (то есть сервисный уровень)
  • **Уровень бизнес-логики **Уровень бизнес-логики (то есть уровень предметной области)
  • **Уровень доступа к данным **Уровень доступа к данным (также известный как уровень сохраняемости данных)

заявление

  • Обычное настольное приложение
  • Веб-приложение электронной коммерции

image.png

клиент-серверный режим

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

заявление

  • Интернет-приложения, такие как электронная почта, обмен файлами и банковские операции

image.png

режим ведущий-ведомый

Режим также разделен на два блока: ведущий модуль и подчиненный модуль. Главный модуль распределяет работу между теми же подчиненными модулями и вычисляет окончательный результат на основе структуры, возвращаемой подчиненными модулями.

заявление

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

image.png

Режим трубного фильтра

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

заявление

  • переводчик. Выполняйте лексический анализ, синтаксический анализ, синтаксический анализ и генерацию кода последовательно, используя различные фильтры.
  • Рабочий процесс в биоинформатике

image.png

Брокерский режим

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

заявление

image.png

P2P-режим

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

заявление

  • сети обмена файлами, такие какGnutella а также G2
  • мультимедийные протоколы, такие какP2PTV а также PDTP
  • Продукты на основе криптовалюты, такие какбиткойна такжеблокчейн

image.png

шаблон шины событий

Этот шаблон в основном имеет дело с компонентами, есть 4 важных компонента:Источники событий, прослушиватели событий, каналыа такжеавтобус событий. Источники событий отправляют сообщения в определенные каналы на шине событий, а слушатели подписываются на определенные каналы. Когда сообщение отправляется на канал, слушатели, подписанные на канал, уведомляются об этом сообщении.

заявление

  • Android-разработка
  • Служба уведомлений

image.png

Шаблон MVC

Этот режим делит интерактивное приложение на три части,

  1. Модель — содержит основные функции и данные
  2. Представления - отображать информацию для пользователя (можно определить несколько представлений)
  3. Контроллер — обрабатывает пользовательский ввод

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

заявление

  • Архитектура интернет-приложений основных языков программирования
  • веб-фреймворки, такие как**Django **а также Rails.

image.png

режим классной доски

Этот шаблон полезен для задач, которые еще не имеют детерминированного решения, шаблон доски состоит из трех частей:

  • Blackboard - структурированная глобальная память, содержащая объекты в области решения.
  • Источники знаний - специализированные модули со своим смыслом
  • Компоненты управления - выбор, настройка и выполнение модулей

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

заявление

  • Распознавание речи
  • Идентификация и отслеживание транспортных средств
  • идентификация структуры белка
  • Интерпретация сигналов сонара

image.png

Режим переводчика

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

заявление

  • Язык запросов к базе данных, такой как SQL
  • язык, используемый для описания протоколов связи

image.png

Сравнение архитектурных шаблонов

модель преимущество недостаток
Иерархический режим Служба низкого уровня может использоваться различными службами высокого уровня;
Стратифицированные результаты легче стандартизировать, поскольку каждый слой можно четко определить.
Изменения внутри слоя не влияют на другие слои
не универсальная архитектура;
В некоторых сценариях некоторые из этих слоев необходимо пропустить.
СС режим Легко моделировать семейство сервисов по запросам клиентов На запросы обычно отвечают в разных потоках сервера;
Поскольку разные клиенты имеют разные формы, межпроцессное взаимодействие вызовет большую нагрузку.
режим ведущий-ведомый Точность - выполнение услуг делегировано различным подчиненным модулям Ведомые модули независимы: нет общего состояния;
Задержки связи между ведущим и ведомым модулями могут быть проблемой, особенно в системах реального времени.
Режим трубного фильтра Поддержка параллельной обработки, когда ввод и вывод состоят из потоков данных, а фильтр начинает вычислять при получении данных;
Легко добавлять фильтры, систему легко расширять;
Фильтры можно использовать повторно, и путем рекомбинации существующих фильтров можно создавать различные конвейерные потоки.
Общая эффективность ограничена самым медленным фильтром;
Есть нагрузка по преобразованию данных при переходе от одного фильтра к другому
прокси-режим Позволяет динамически изменять, добавлять, удалять и перемещать объекты, а распространение контента прозрачно для разработчиков. Описания услуг должны быть стандартизированы
P2P-режим Поддержка децентрализованных вычислений;
Высокая устойчивость к выходу из строя любого узла;
Высокая масштабируемость с точки зрения ресурсов и вычислительной мощности
Качество обслуживания не может быть гарантировано, поскольку узлы сотрудничают добровольно;
Трудно гарантировать безопасность;
Производительность зависит от количества узлов
шаблон шины событий В систему легко добавлять новых издателей, подписчиков и подключения;
Эффективен для высокораспределенных приложений
Масштабируемость может быть проблемой, поскольку все передачи информации проходят через одну и ту же шину времени.
Шаблон MVC Легко создавайте несколько представлений одной и той же модели, которые можно произвольно подключать или отключать во время выполнения. Добавленная сложность, действия пользователя могут привести к множеству ненужных обновлений
режим классной доски Легко добавлять новые приложения;
Легко расширить структуру в пространстве данных
Изменение структуры пространства данных затруднено, поскольку затрагиваются все приложения;
Могут потребоваться механизмы синхронизации и контроль доступа
Режим переводчика Может поддерживать очень динамичное поведение;
Программируемость в интересах конечного пользователя;
Повышенная гибкость, так как переводчика легко заменить
Поскольку интерпретируемые языки, как правило, медленнее, чем скомпилированные языки, производительность может быть проблемой.

Ссылаться на

Architectural patterns