В чем разница между архитектурными образцами и архитектурными стилями? - PullRequest
36 голосов
/ 18 октября 2010

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

Архитектурный паттерн

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

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

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

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

Ответы [ 11 ]

46 голосов
/ 11 января 2011

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

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

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

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

10 голосов
/ 18 октября 2010

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

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

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

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

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

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

7 голосов
/ 16 января 2016

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

+---------------+--------------------------------------------------------+
|   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

7 голосов
/ 15 июня 2014

Очень простыми словами:

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

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

    Например: REST ( Передача состояния представления ) - это архитектурный стиль , построенный на определенных принципах с использованием текущегоОсновы Интернета ».

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

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

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

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

3 голосов
/ 16 декабря 2012

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

2 голосов
/ 02 мая 2012

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

2 голосов
/ 18 октября 2010

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

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

0 голосов
/ 12 июля 2019

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

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

0 голосов
/ 05 апреля 2019

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

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

0 голосов
/ 29 августа 2016

Шаблон архитектуры: контекст + проблема -> решение

Стиль архитектуры: часть решения шаблона архитектуры

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

...