Хотите знать, как проектировать большие системы масштаба предприятия? Прежде чем приступить к разработке основного кода, мы должны выбрать подходящую архитектуру, которая даст нам желаемую функциональность и качественные характеристики. Поэтому необходимо понимать различные архитектуры, прежде чем применять их к нашим проектам.
Что такое архитектурные модели?
Согласно Википедии,
Архитектурные шаблоны — это общие, повторно используемые решения общих проблем в архитектуре программного обеспечения в заданном контексте. Архитектурные шаблоны похожи на шаблоны проектирования программного обеспечения, но имеют более широкий охват.
В этой статье я кратко расскажу о следующих 10 распространенных архитектурных шаблонах, их использовании, преимуществах и недостатках.
Иерархический режим
Этот шаблон можно использовать для создания программ, которые можно разбить на группы подзадач, каждая на определенном уровне абстракции. Каждый раз услуга предоставляется более высокому уровню.
Наиболее распространенные 4-уровневые деления в общих информационных системах следующие:
- **Слой представления **Слой представления (то есть слой пользовательского интерфейса)
- **Прикладной уровень **Прикладной уровень (то есть сервисный уровень)
- **Уровень бизнес-логики **Уровень бизнес-логики (то есть уровень предметной области)
- **Уровень доступа к данным **Уровень доступа к данным (также известный как уровень сохраняемости данных)
заявление
- Обычное настольное приложение
- Веб-приложение электронной коммерции
клиент-серверный режим
Выкройка состоит из двух частей:Сервери несколькоклиент, сервер предоставляет услуги нескольким клиентам. Клиент инициирует запрос к серверу, сервер предоставляет соответствующие услуги этим клиентам, а затем сервер продолжает прослушивать запрос клиента.
заявление
- Интернет-приложения, такие как электронная почта, обмен файлами и банковские операции
режим ведущий-ведомый
Режим также разделен на два блока: ведущий модуль и подчиненный модуль. Главный модуль распределяет работу между теми же подчиненными модулями и вычисляет окончательный результат на основе структуры, возвращаемой подчиненными модулями.
заявление
- При репликации базы данных основная база данных считается авторитетным источником данных, а подчиненная база данных синхронизируется с ней.
- Периферийные устройства, подключенные к системной шине компьютера (главный и подчиненный диски)
Режим трубного фильтра
Этот шаблон можно использовать для построения систем, которые производят и обрабатывают потоки данных. Каждый шаг обработки содержится вфильтрВ компоненте данные для обработки передаются черезтрубопроводпередача. Эти каналы можно использовать для буферизации или синхронизации.
заявление
- переводчик. Выполняйте лексический анализ, синтаксический анализ, синтаксический анализ и генерацию кода последовательно, используя различные фильтры.
- Рабочий процесс в биоинформатике
Брокерский режим
Этот шаблон предназначен для создания распределенных систем с использованием несвязанных компонентов, которые могут взаимодействовать посредством удаленных вызовов службы.прокси-компонентОтвечает за координацию связи между компонентами.
Серверы публикуют свои возможности (услуги и характеристики и т. д.) для прокси, клиенты запрашивают услуги у прокси, а прокси перенаправляет запросы клиентов в соответствующую службу в соответствии со своим реестром.
заявление
- программное обеспечение брокера сообщений, такое какApache ActiveMQ, Apache Kafka, RabbitMQ а также JBoss Messaging.
P2P-режим
В этом шаблоне каждый независимый компонент называется одноранговым (или одноранговым). Одноранговый узел может действовать как клиент (запрашивая услуги у других одноранговых узлов) и как сервер (предоставляя услуги другим одноранговым узлам). Один и тот же узел может быть и клиентом, и сервером, и его роли могут динамически меняться.
заявление
- сети обмена файлами, такие какGnutella а также G2
- мультимедийные протоколы, такие какP2PTV а также PDTP
- Продукты на основе криптовалюты, такие какбиткойна такжеблокчейн
шаблон шины событий
Этот шаблон в основном имеет дело с компонентами, есть 4 важных компонента:Источники событий, прослушиватели событий, каналыа такжеавтобус событий. Источники событий отправляют сообщения в определенные каналы на шине событий, а слушатели подписываются на определенные каналы. Когда сообщение отправляется на канал, слушатели, подписанные на канал, уведомляются об этом сообщении.
заявление
- Android-разработка
- Служба уведомлений
Шаблон MVC
Этот режим делит интерактивное приложение на три части,
- Модель — содержит основные функции и данные
- Представления - отображать информацию для пользователя (можно определить несколько представлений)
- Контроллер — обрабатывает пользовательский ввод
Это делается для того, чтобы отделить внутреннее представление данных от пользовательского ввода и представления пользователю, что позволяет отделить компоненты, а также обеспечить эффективное повторное использование кода.
заявление
- Архитектура интернет-приложений основных языков программирования
- веб-фреймворки, такие как**Django **а также Rails.
режим классной доски
Этот шаблон полезен для задач, которые еще не имеют детерминированного решения, шаблон доски состоит из трех частей:
- Blackboard - структурированная глобальная память, содержащая объекты в области решения.
- Источники знаний - специализированные модули со своим смыслом
- Компоненты управления - выбор, настройка и выполнение модулей
Все компоненты имеют доступ к доске, компоненты могут создавать новые объекты данных для добавления на доску, компоненты ищут определенные типы данных на доске и могут находить эти данные путем сопоставления шаблонов с существующими источниками знаний.
заявление
- Распознавание речи
- Идентификация и отслеживание транспортных средств
- идентификация структуры белка
- Интерпретация сигналов сонара
Режим переводчика
Этот режим обычно используется для разработки компонентов для интерпретации программ, написанных на специализированных языках, и в первую очередь указывает, как оценивать строки программы, т. е. операторы или выражения, написанные на конкретном языке. Основная идея состоит в том, чтобы разработать класс для каждого языкового символа.
заявление
- Язык запросов к базе данных, такой как SQL
- язык, используемый для описания протоколов связи
Сравнение архитектурных шаблонов
| модель | преимущество | недостаток |
|---|---|---|
| Иерархический режим | Служба низкого уровня может использоваться различными службами высокого уровня; Стратифицированные результаты легче стандартизировать, поскольку каждый слой можно четко определить. Изменения внутри слоя не влияют на другие слои |
не универсальная архитектура; В некоторых сценариях некоторые из этих слоев необходимо пропустить. |
| СС режим | Легко моделировать семейство сервисов по запросам клиентов | На запросы обычно отвечают в разных потоках сервера; Поскольку разные клиенты имеют разные формы, межпроцессное взаимодействие вызовет большую нагрузку. |
| режим ведущий-ведомый | Точность - выполнение услуг делегировано различным подчиненным модулям | Ведомые модули независимы: нет общего состояния; Задержки связи между ведущим и ведомым модулями могут быть проблемой, особенно в системах реального времени. |
| Режим трубного фильтра | Поддержка параллельной обработки, когда ввод и вывод состоят из потоков данных, а фильтр начинает вычислять при получении данных; Легко добавлять фильтры, систему легко расширять; Фильтры можно использовать повторно, и путем рекомбинации существующих фильтров можно создавать различные конвейерные потоки. |
Общая эффективность ограничена самым медленным фильтром; Есть нагрузка по преобразованию данных при переходе от одного фильтра к другому |
| прокси-режим | Позволяет динамически изменять, добавлять, удалять и перемещать объекты, а распространение контента прозрачно для разработчиков. | Описания услуг должны быть стандартизированы |
| P2P-режим | Поддержка децентрализованных вычислений; Высокая устойчивость к выходу из строя любого узла; Высокая масштабируемость с точки зрения ресурсов и вычислительной мощности |
Качество обслуживания не может быть гарантировано, поскольку узлы сотрудничают добровольно; Трудно гарантировать безопасность; Производительность зависит от количества узлов |
| шаблон шины событий | В систему легко добавлять новых издателей, подписчиков и подключения; Эффективен для высокораспределенных приложений |
Масштабируемость может быть проблемой, поскольку все передачи информации проходят через одну и ту же шину времени. |
| Шаблон MVC | Легко создавайте несколько представлений одной и той же модели, которые можно произвольно подключать или отключать во время выполнения. | Добавленная сложность, действия пользователя могут привести к множеству ненужных обновлений |
| режим классной доски | Легко добавлять новые приложения; Легко расширить структуру в пространстве данных |
Изменение структуры пространства данных затруднено, поскольку затрагиваются все приложения; Могут потребоваться механизмы синхронизации и контроль доступа |
| Режим переводчика | Может поддерживать очень динамичное поведение; Программируемость в интересах конечного пользователя; Повышенная гибкость, так как переводчика легко заменить |
Поскольку интерпретируемые языки, как правило, медленнее, чем скомпилированные языки, производительность может быть проблемой. |