Модели проектирования архитектуры программного обеспечения
Не могли бы вы рассказать мне, какие шаблоны проектирования архитектуры программного обеспечения доступны?
Чтобы уточнить мой вопрос, я хочу прочитать различные шаблоны проектирования архитектуры и решить, что соответствует моим требованиям к проекту?
Например, существуют шаблоны проектирования корпоративных приложений, шаблоны проектирования Enterprise Integration, шаблоны ESB, шаблоны SOA и т.д.
Ответы
Ответ 1
Шаблоны встречаются на многих уровнях. Архитектурные шаблоны (т.е. Архитектурные стили), как правило, являются крупнейшими по охвату и охватывают фундаментальную организацию системы. Шаблоны проектирования находятся на уровне нескольких взаимодействующих объектов. Предположение Бернда о Фаулере и других корпоративных моделях является хорошим. Просто признайте, что эти шаблоны имеют тенденцию быть более конкретными, чем эти архитектурные шаблоны:
- Многоуровневый (т.е. шаблон виртуальной машины)
- Большой шар грязи
- Труба и фильтр
- Batch-Sequential
- Модель-центрированные (общие данные)
- публикация-подписка
- Клиент-сервер (и N-уровень)
- Равный-равному
- MapReduce
Архитектурные шаблоны чаще всего применяются к структуре времени выполнения системы, но могут также применяться к его модулям или распределению оборудования. Одна из распространенных ошибок состоит в том, чтобы думать, что шаблон Layered применяется к среде выполнения, когда он действительно применяется к системным модулям (то есть к его зависимостям во времени компиляции). Разумеется, вы можете зеркально отразить структуру своего модуля во время выполнения
Эти шаблоны подробно обсуждаются в моей книге "Просто достаточно архитектуры программного обеспечения" , Fairbanks (2010). Большинство из них также включены в другие книги, в том числе Гарлан и Шоу (1996), Тейлор, Медвидович и Дашовый (2009) и Documenting Software Architectures (SEI, 2010).
Со списком имен шаблонов вы сможете найти множество веб-страниц (я отметил это как сообщество Wiki, чтобы мы могли добавлять эти ссылки). Книги также полезны, потому что они дают вам больше информации о том, как использовать шаблоны.
Ответ 2
Прочтите эти книги:
- Мартин Фольвер: шаблоны архитектуры корпоративных приложений
- Грегор Хохпе, Бобби Вульф: шаблоны интеграции с корпорацией: проектирование, создание и развертывание решений для обмена сообщениями.
Ответ 3
Согласно Википедии,
АРХИТЕКТУРНЫЙ ШАБЛОН - ОБЩЕЕ, РЕЗЕРВНОЕ РЕШЕНИЕ ДЛЯ ОБЩЕГО ПРОСМОТР ПРОБЛЕМЫ В АРХИТЕКТУРЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ В ДАННОМ КОНТЕКСТЕ. АРХИТЕКТУРНЫЕ ОБРАЗЦЫ ОБРАТИТЕСЬ К ПРОГРАММНОМУ ПРОГРАММНОМУ ПРОЕКТУ, НО ИМЕЮТСЯ ШИРОКИЙ ОБЛАСТЬ.
У вас есть ответ: Будет ли Android поддерживать Java 9 после обновлений Kotlin?
Я кратко расскажу о следующих топ-10 архитектурных шаблонах программирования с их использованием, плюсами и минусами.
1. Слоистый рисунок
Этот шаблон также известен как шаблон архитектуры n-уровня. Его можно использовать для структурирования программ, которые можно разложить на группы подзадач, каждая из которых находится на определенном уровне абстракции. Каждый уровень предоставляет услуги следующему более высокому уровню.
![введите описание изображения здесь]()
Наиболее часто встречающиеся 4 уровня общей информационной системы следующие.
- Уровень представления (также известный как слой пользовательского интерфейса)
- Уровень приложения (также известный как уровень сервиса)
- Уровень бизнес-логики (также известный как доменный уровень)
- Уровень доступа к данным (также известный как уровень сохранения)
Использование
- Общие настольные приложения.
- Электронные коммерческие веб-приложения.
Смотрите: Android Oreo Vs iOS 11: сравнение, которое вы должны знать об этом
2. Шаблон клиент-сервер
Эта схема состоит из двух сторон; сервер и несколько клиентов. Серверный компонент будет предоставлять услуги нескольким клиентским компонентам.
Клиенты запрашивают услуги с сервера и сервера, предоставляя соответствующие услуги этим клиентам. Кроме того, сервер продолжает прослушивать клиентские запросы.
![введите описание изображения здесь]()
Использование
- Онлайн-приложения, такие как электронная почта, совместное использование документов и банковское дело.
3. Шаблон "Master-slave"
Эта схема состоит из двух сторон; мастер и рабы. Главный компонент распределяет работу между идентичными подчиненными компонентами и вычисляет конечный результат из результатов, которые возвращают ведомые.
![введите описание изображения здесь]()
Использование
- В репликации базы данных основная база данных рассматривается как
авторитетный источник, а подчиненные базы данных синхронизируются с
он.
- Периферийные устройства, подключенные к шине в компьютерной системе (ведущий и
slave).
Рекомендуемый: Сравнение: Android O Vs Android N
4. Структура фильтра труб
Этот шаблон может использоваться для структурирования систем, которые производят и обрабатывают поток данных. Каждый этап обработки заключен в компонент фильтра. Данные, подлежащие обработке, передаются по трубам. Эти трубы могут использоваться для буферизации или для синхронизации.
![введите описание изображения здесь]()
Использование
- Составители. Последовательные фильтры выполняют лексический анализ,
синтаксический анализ, семантический анализ и генерация кода.
- Рабочие процессы в биоинформатике.
5. Шаблон брокера
Этот шаблон используется для структурирования распределенных систем с развязанными компонентами. Эти компоненты могут взаимодействовать друг с другом посредством удаленных сервисных вызовов. Компонент-брокер отвечает за координацию связи между компонентами.
Серверы публикуют свои возможности (услуги и характеристики) брокеру. Клиенты запрашивают услугу у брокера, а затем брокер перенаправляет клиента в подходящую службу из своего реестра.
![введите описание изображения здесь]()
Использование
- Программное обеспечение брокера сообщений, такое как Apache ActiveMQ, Apache Kafka,
RabbitMQ и JBoss Messaging.
Знаете ли вы: Проблемы с Android Oreo - 6 вещей, которые вам нужно знать
6. Одноранговая диаграмма
В этом шаблоне отдельные компоненты известны как сверстники. Одноранговые узлы могут функционировать как клиент, запрашивая услуги у других одноранговых узлов и в качестве сервера, предоставляя услуги другим аналогам. Одноранговый узел может выступать в роли клиента или как сервера или как того и другого, и он может динамически изменять свою роль со временем.
![введите описание изображения здесь]()
Использование
- Сети обмена файлами, такие как Gnutella и G2)
- Мультимедийные протоколы, такие как P2PTV и PDTP.
- Собственные мультимедийные приложения, такие как Spotify.
7. Шаблон событий-шины
Этот шаблон в основном касается событий и имеет 4 основных компонента; источник событий, прослушиватель событий, канал и шина событий. Источники публикуют сообщения на определенные каналы на шине событий. Слушатели подписываются на определенные каналы. Слушатели уведомляются о сообщениях, которые публикуются на канал, на который они подписали ранее.
![введите описание изображения здесь]()
Использование
- Разработка Android
- Услуги уведомления
8. Модель-контроллер-образец-образец
Этот шаблон, также известный как шаблон MVC, делит интерактивное приложение на 3 части как
- модель - содержит основные функциональные возможности и данные
- представление - отображает информацию пользователю (более одного вида может
быть определенным)
- контроллер - обрабатывает ввод от пользователя
Это делается для разделения внутренних представлений информации из способов представления и принятия пользователем информации. Он отделяет компоненты и позволяет эффективно использовать код.
![введите здесь описание изображения]()
Использование
- Архитектура для приложений World Wide Web в основном программировании
языки.
- Веб-фреймворки, такие как Django и Rails.
9. Шаблон доски
Этот шаблон полезен для проблем, для которых не известны стратегии детерминированного решения. Шаблон доски состоит из 3 основных компонентов.
- blackboard - структурированная глобальная память, содержащая объекты из пространства решений
- источник знаний - специализированные модули со своим собственным представлением
- элемент управления - выбор, настройка и выполнение модулей.
Все компоненты имеют доступ к доске. Компоненты могут создавать новые объекты данных, которые добавляются к доске. Компоненты ищут конкретные виды данных на доске и могут найти их по образцу, сопоставляющемуся с существующим источником знаний.
![введите описание изображения здесь]()
Использование
- Распознавание речи
- Идентификация и отслеживание транспортных средств
- Идентификация структуры белка
- Интерпретация сигналов сонара.
10. Шаблон интерпретатора
Этот шаблон используется для проектирования компонента, который интерпретирует программы, написанные на специальном языке. В основном он определяет, как оценивать строки программ, называемые предложениями или выражениями, написанными на определенном языке. Основная идея состоит в том, чтобы иметь класс для каждого символа языка.
![введите описание изображения здесь]()
Использование
- Языки запросов к базам данных, такие как SQL.
- Языки, используемые для описания коммуникационных протоколов.
Источник: Топ-10 архитектурных шаблонов программирования
Ответ 4
Для архитектурных моделей читайте Архитектура программного обеспечения с шаблоном. Том 1: Система шаблонов.
обсуждаемые шаблоны:
- Слои
- Трубы и фильтры
- Blackboard
- Брокер
- Model-View-Controller (MVC)
- Презентация-Абстракция-Контроль (Иерархический MVC)
- Microkernel
- Отражение
Ответ 5
Не очень уверен в вашем вопросе! Ваш тег - это шаблон дизайна, поэтому я скажу это:
Если вы не читали книгу шаблонов моделей, вам сначала нужно прочитать книги с шаблонами рисунков.
Главы первых шаблонов дизайна хороши. Когда вы можете понять о шаблонах проектирования, тогда можно понять шаблоны проектирования архитектуры.
Ответ 6
Кроме того, посмотрите Руководство по архитектуре приложений из шаблонов и методов. Обязательно прочитайте второе издание.
Для мягкой копии перейдите сюда: http://msdn.microsoft.com/en-us/library/dd673617.aspx