it-swarm.com.de

Was ist der Unterschied zwischen Architekturmustern und Baustilen?

In Softwarearchitektur - Grundlagen, Theorie und Praxis finde ich Definitionen für beide. Das Problem ist, dass ich nicht verstehe, was jeder von ihnen im Klartext bedeutet:

Architekturmuster

Ein Architekturmuster ist eine benannte Sammlung von Architekturentscheidungen, die auf ein wiederkehrendes Entwurfsproblem anwendbar sind, das so parametrisiert ist, dass es unterschiedliche Softwareentwicklungskontexte berücksichtigt, in denen dieses Problem auftritt.

Architektonischer Stil

Ein Architectural Style ist eine benannte Sammlung von Architekturentscheidungen, die (1) in einem bestimmten Entwicklungskontext anwendbar sind, (2) Architekturentscheidungen einschränken, die für ein bestimmtes System in diesem Kontext spezifisch sind, und (3) jeweils vorteilhafte Eigenschaften hervorrufen resultierendes System.

Was bedeutet jeder und was sind die Unterschiede zwischen ihnen?

33

Ein Architekturmuster ist eine Möglichkeit, ein wiederkehrendes Architekturproblem zu lösen. MVC löst beispielsweise das Problem der Trennung der Benutzeroberfläche vom Modell. Sensor-Controller-Actuator, ist ein Muster, das Ihnen bei der Problemlösung bei mehreren Eingangsempfindungen hilft. 

Ein Architekturstil hingegen ist nur ein Name, der einem wiederkehrenden architektonischen Entwurf gegeben wird. Im Gegensatz zu einem Muster existiert es nicht, ein Problem zu "lösen". 

Pipe & Filter löst keine spezifischen Probleme, es ist nur eine Möglichkeit, Ihren Code zu organisieren. Client/Server, Hauptprogramm & Unterprogramm und Abstrakte Datentypen/OO, gleich.

Eine einzelne Architektur kann auch mehrere Architekturstile enthalten, und jeder Architekturstil kann mehrere Architekturmuster verwenden.

43

Ehrlich gesagt, ich habe immer beide Begriffe als gleichbedeutend betrachtet! Und Laien- (relativ gesprochen) Literatur behandelt sie definitiv als solche. Verweisen Sie MSDN oder Wikipedia

Ihre Frage hat mich jedoch etwas fasziniert, also habe ich ein bisschen mehr gegraben und ehrlich gesagt ... ich konnte nicht viel finden, außer für einen Verweis auf Ein praktischer Leitfaden zur Unternehmensarchitektur (The Coad Series) , aus dem ich zitiere: -

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

Basierend auf mehr googling , denke ich, könnte dies eine Möglichkeit sein, die beiden zu unterscheiden

  • Ein Architekturstil ist eine konzeptionelle Art und Weise, wie das System erstellt wird/wird
  • Ein Architekturmuster beschreibt eine Lösung zum Implementieren eines Stils auf der Ebene Von Subsystemen oder Modulen und deren Beziehungen.

Wie sich ein architektonisches Muster von einem Entwurfsmuster unterscheidet, d. H. Der Adapter, ist der Beobachter grundsätzlich durch den Grad der Granularität bestimmt, auf den sie angewendet werden (ich weiß, dass dies nicht Teil der Frage ist, aber die damit verbundene, denke ich).

10
Jagmag

In ganz einfachen Worten:

  • Ein Baustil

    Ist ein Konzept, eine Theorie (und wie es umgesetzt wird, liegt an Ihnen). Es kann auch außerhalb der Softwarewelt gelten.

    Im Beispiel: REST ( Representational State Transfer ) ist ein Architekturstil , der auf bestimmten Prinzipien basiert und die aktuellen "Web" -Fundamentaldaten verwendet.

  • Ein architektonisches Muster

    Beschreibt eine Lösung auf Softwaresystemebene (oder Modulebene). Mit anderen Worten, wie es miteinander interagiert, z.B. Ansicht mit Modell und Modell mit Controller.

  • A Designmuster

    Ist eine Lösung auf der Kernebene, es spricht über Klassen, Funktionen und wie die Logik tatsächlich fließt.

7
kenorb

Architekturstil ist abstrakt, d. H. Begrifflich. 

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

Ein Architekturmuster ist konkret, d. H. Die Implementierung eines Architekturstils. 

  • Zum Beispiel: 3-Tier, N-Tier, MVC, REST

Ein Entwurfsmuster ist eine allgemein wiederverwendbare Lösung für ein häufig auftretendes Problem beim Softwareentwurf auf Architekturebene. 

  • Zum Beispiel: Factory, Singleton, Prototype. 

Analogie: Tempelarchitekturstil für verschiedene Religionen: 

 enter image description here

5
Premraj

Meines Erachtens sind Muster und Architekturstile komplementäre Mechanismen, um Design-Know-how zu verkapseln. Ein Architekturstil bietet eine Sammlung von Bausteinentwurfselementen, Regeln und Einschränkungen zum Erstellen der Bausteine ​​sowie Werkzeuge zum Analysieren und Bearbeiten von im Stil erstellten Entwürfen. Stile bieten im Allgemeinen eine Anleitung und Analyse zum Erstellen einer breiten Klasse von Architekturen in einem bestimmten Bereich, während sich Muster auf das Lösen kleinerer und spezifischerer Probleme innerhalb eines bestimmten Stils (oder möglicherweise mehrerer Stile) konzentrieren. 

3
F. Farjaminejad

Denken Sie bei Architekturmustern nach bestimmten Methoden, um Ihren Code wie in GoF wie beschrieben zu gestalten. Adapter, Strategie, Generator, Vermittler usw

Für Architectural Style denke das Gesamtsystem; I.E. mit MVC für Präsentationen, DDD zur Modellierung der Business-Schicht, WCF (wenn Sie .NET nutzen) für Interop, SOA für die Integration usw.

2
Kane

Architekturentwurfsmuster sind domänenspezifisch, wobei Architekturstile generischer sind und in einer Vielzahl von Anwendungen verwendet werden können. Aus diesem Grund erfordern Architekturmuster mehr Domänenwissen.

2
Malinga

Baustile

Architekturstile sind Namen, die die breiteren Organisationen Ihrer Anwendungssubsysteme repräsentieren und die Idee des allgemeinen Umrisses des Systems darstellen. Beispiele sind SOA, Client/Server, Message Bus usw.

Architekturmuster

Architekturmuster sind Namen der wiederverwendbaren Lösungen für die allgemeinen Architekturprobleme, die eine Vorstellung davon geben, wie die inneren Teile implementiert werden, um sie zu lösen. Beispiele sind 2-Tier, 3-Tier, N-Tier, MVC, REST usw.

Ein Stil kann mehrere Muster verwenden, um mehrere Probleme zu lösen. Zum Beispiel kann ein Client/Server-Stil ein N-Tier-Muster oder (und) ein MVC-Muster zum Trennen seines Geschäftslogik , Präsentationslogik und Datenlogik für die Einführung von Modularität, die die Probleme modifiability und maintainability löst.

0

Architekturmuster - Definieren Sie eine allgemeine Menge von Elementtypen und deren Interaktionen. Beispiele für Architekturmuster sind Pipes und Filter, Modell-Ansicht-Controller und Reflexion.

Architectural Style - der Begriff wurde von Garlan und Shaw geprägt, es ist ein Idiomatisches Muster der Systemorganisation. Ein Client-Server-System Ist beispielsweise ein Architekturstil. 

ps: Viele der ursprünglichen Architekturstile wurden als Muster umformuliert.

0
user3109062

Der Architekturstil beschreibt ein System aus vielen Komponenten. Es gibt nur eine Anwendungsarchitektur, und Sie müssen den einen Architekturstil wie Microservices, SOA und ereignisgesteuerte Architektur überall anwenden.

Architekturmuster beschreiben etwas in einer einzelnen Komponente und versuchen nicht, überall dieselben Architekturmuster wie CQRS oder DDD anzuwenden.

0
Ali Bayat

Architekturmuster: context + problem -> lösung

Architekturstil: Lösungsteil des Architekturmusters

Der Architekturstil ist also analog zum Lösungsteil des Architekturmusters. Es wird häufig in Büchern verwendet, die sich mit Architekturdokumentation befassen, wobei der Fokus auf der Lösung liegt und nicht wie der Kontext und das Problem entstanden sind. 

0
Balazs Sipos

Die Architekturstile zeigen uns in sehr weiten Zügen, wie wir unseren Code organisieren. Dies ist die höchste Granularitätsstufe und legt Ebenen, übergeordnete Module der Anwendung und die Wechselwirkungen zwischen diesen Modulen und Ebenen sowie die Beziehungen zwischen ihnen fest. Beispiele für Architekturstile: Komponentenbasiert, SOA

Architekturmuster haben einen großen Einfluss auf die Codebasis und wirken sich am häufigsten auf die gesamte Anwendung aus, entweder horizontal (dh wie der Code innerhalb einer Ebene strukturiert wird) oder vertikal (dh wie eine Anforderung von den äußeren Ebenen in die inneren Ebenen und verarbeitet wird) zurück). Beispiele für Architekturmuster: Model-View-Controller, Model-View-ViewModel

0
Isuru vindula