Подтвердить что ты не робот

Какая разница между архитектурными шаблонами и архитектурными стилями?

В Software Architecture - Основы, Теория и Практика я могу найти определения для обоих. Проблема в том, что я не понимаю, что каждый из них означает на простом английском языке:

Архитектурный шаблон

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

Архитектурный стиль

Архитектурный стиль - это именованная коллекция решений архитектурного дизайна, которые (1) применимы в данном контексте развития, (2) ограничивают решения архитектурного проектирования, которые являются специфическими для конкретной системы в этом контексте, и (3) извлекают выгоду качества в каждой результирующей системе.

Что означает каждый из них и каковы различия между ними?

4b9b3361

Ответ 1

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

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

Фильтр Pipe & не решает какой-либо конкретной проблемы, это всего лишь способ организации вашего кода. Клиент/сервер, Основная программа и подпрограмма и Абстрактные типы данных /OO, то же самое.

Кроме того, одна архитектура может содержать несколько архитектурных стилей, и каждый архитектурный стиль может использовать несколько архитектурных шаблонов.

Ответ 2

Честно говоря, я всегда считал оба этих термина синонимами! И непрофессиональная (условно говоря) литература определенно относится к ним как к таковой. См. MSDN или Википедию

Тем не менее, ваш вопрос меня немного заинтриговал, поэтому я немного покопался и, честно говоря... я не смог найти много, кроме ссылки на Практическое руководство по корпоративной архитектуре (серия Coad), из которой я цитирую: -

An architectural style (Base et al. 1997) and an architectural pattern 
(Buschmann et al. 1996) are essentially synonymous. 

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

  • Архитектурный стиль - это концептуальный способ создания/работы системы.
  • Архитектурный шаблон описывает решение для реализации стиля на уровне подсистем или модулей и их взаимосвязей.

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

Ответ 3

В очень простых словах:

  • Архитектурный стиль

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

    В примере: REST (Репрезентативный перенос состояний) - это архитектурный стиль, построенный на определенных принципах с использованием текущего "Web".

  • Архитектурные шаблоны

    Описывает решение на уровне программной системы (или модуля). Другими словами, как он взаимодействует друг с другом, например, просмотр с моделью и модель с контроллером.

  • Шаблоны проектирования

    Является ли решение на базовом уровне, оно говорит о классах, функциях и о том, как на самом деле идет логика.

Ответ 4

Архитектурный стиль абстрактный, то есть концептуальный.

+---------------+--------------------------------------------------------+
|   Category    |                  Architecture styles                   |
+---------------+--------------------------------------------------------+
| Communication | SOA, ROA, Message Bus                                  |
| Deployment    | Client/Server                                          |
| Domain        | Domain Driven Design,Monolithic application            |
| Structure     | Component-Based, Object-Oriented, Layered, Plug-ins    |
+---------------+--------------------------------------------------------+

Архитектурный паттерн - это конкретное воплощение архитектурного стиля.

  • Например: 3-уровневый, N-уровневый, MVC, REST

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

  • Например: Фабрика, Синглтон, Прототип.

Аналогия: Храмы архитектурного стиля для разных религий:

enter image description here

Ответ 5

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

Ответ 6

Для архитектурных шаблонов рассматриваются конкретные способы стилизации вашего кода, как описано GoF; Адаптер, Стратегия, Строитель, Посредник и т.д.

Для архитектурного стиля думайте об общей системе; I.E., используя MVC для презентации, DDD для моделирования бизнес-уровня, WCF (если вы в .NET) для Interop, SOA для интеграции и т.д.

Ответ 7

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

Ответ 8

Архитектурные шаблоны - определяют общий набор типов элементов и их взаимодействия. Примеры архитектурных шаблонов включают в себя трубы и фильтры, Model-View-Controller и Reflection.

Архитектурный стиль - термин был придуман Гарланом и Шоу, это идиоматическая структура организации системы. Например, система клиент-сервер является архитектурным стилем.

p.s: Многие из оригинальных архитектурных стилей были переформулированы как образцы.

Ответ 9

Архитектурный шаблон: контекст + проблема → решение

Архитектурный стиль: часть решения архитектуры

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

Ответ 10

Архитектурный стиль описывает систему из многих компонентов. Существует только одна архитектура приложений, и вы должны везде применять один архитектурный стиль, такой как Microservices, SOA и управляемая событиями архитектура.

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

Ответ 11

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

Архитектурные паттерны оказывают значительное влияние на базу кода, чаще всего влияя на все приложение по горизонтали (т.е. Как структурировать код внутри слоя) или по вертикали (т.е. Как запрос обрабатывается из внешних слоев во внутренние слои и назад). Примеры архитектурных шаблонов: модель-вид-контроллер, модель-вид-видМодель

Ответ 12

Архитектурные стили

Архитектурные стили - это имена, которые представляют более широкие организации ваших подсистем приложений и отражают идею общего плана. Примеры: SOA, Client/Server, Message Bus и т.д.

Архитектурные Узоры

Архитектурные шаблоны - это названия повторно используемых решений общих архитектурных проблем, которые дают представление о том, как реализованы внутренние части для их решения. Примерами являются 2-Tier, 3-Tier, N-Tier, MVC, REST и т.д.

Один стиль может использовать несколько шаблонов для решения нескольких задач. Например, клиент/серверный стиль может использовать шаблон N-уровня или (и) шаблон MVC для разделения своей бизнес-логики, логики представления и данных логика для введения модульности, которая решает проблемы modifiability и maintainability.