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

StackOverflow https://stackoverflow.com/questions/3958316

Вопрос

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

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

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

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

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

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

Это было полезно?

Решение

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

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

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

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

Другие советы

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

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

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

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

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

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

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

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

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

    В примере: отдых (Изобразительное State Transfer) является архитектурный стиль построен на определенных принципах, использующих текущие основы «веб».

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

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

  • Конструкция шаблонов

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

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

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

Архитектурный рисунок Бетон IE внедрение архитектурного стиля.

  • Например: 3-уровня, N-уровня, MVC, отдых

Дизайн-рисунок Это общее многоразовое решение для общепринятого задачи в разработке программного обеспечения на архитектурном уровне.

  • Например: фабрика, синглтон, прототип.

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

enter image description here

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top