A Quick Look at Architectural Styles and Patterns
Posted by
Abel Avram
on
Feb 11, 2009
- Architecture
- Topics
-
Messaging
,
-
Methodologies
- Tags
-
Patterns
,
-
Patterns and Practices
,
-
Event Stream Processing
App Arch Guide 2.0 (Microsoft patterns&practices), Chapter 6, talks about architectural styles like Message-Bus, Layered Architecture, SOA. Beside those styles there are numerous architectural patterns like Plug-in, Peer-to-Peer, Publish-Subscribe. Some authors make a difference between architectural styles, patterns and metaphors.
What is an architectural style? According to App Arch Guide, an architectural style is:
A set of principles. You can think of it as a coarse-grained pattern that provides an abstract framework for a family of systems. An architectural style improves partitioning and promotes design reuse by providing solutions to frequently recurring problems.
The authors of the guide list a number of architectural styles:
| Architecture style |
Description |
| Client-Server |
Segregates the system into two applications, where the client makes a service request to the server. |
| Component-Based Architecture |
Decomposes application design into reusable functional or logical components that are location-transparent and expose well-defined communication interfaces. |
| Layered Architecture |
Partitions the concerns of the application into stacked groups (layers). |
| Message-Bus |
A software system that can receive and send messages that are based on a set of known formats, so that systems can communicate with each other without needing to know the actual recipient. |
| N-tier / 3-tier |
Segregates functionality into separate segments in much the same way as the layered style, but with each segment being a tier located on a physically separate computer. |
| Object-Oriented |
An architectural style based on division of tasks for an application or system into individual reusable and self-sufficient objects, each containing the data and the behavior relevant to the object. |
| Separated Presentation |
Separates the logic for managing user interaction from the user interface (UI) view and from the data with which the user works. |
| Service-Oriented Architecture (SOA) |
Refers to Applications that expose and consume functionality as a service using contracts and messages. |
Each of those architectural styles are applied to specific areas of interest:
| Category |
Architecture styles |
| Communication |
Service-Oriented Architecture (SOA), Message Bus, Pipes and Filters |
| Deployment |
Client/server, 3-Tier, N-Tier |
| Domain |
Domain Model, Gateway |
| Interaction |
Separated Presentation |
| Structure |
Component-Based, Object-Oriented, Layered Architecture |
J.D. Meier, summarizing a few key points from the book A Practical Guide to Enterprise Architecture by James McGovern, Scott W. Ambler, Michael E. Stevens, James Linn, Vikas Sharan, and Elias K. Jo, noted a subtle difference between architectural styles and patterns:
- An architectural style is a central, organizing concept for a system.
- An architectural pattern describes a coarse-grained solution at the level of subsystems or modules and their relationships.
- A system metaphor is more conceptual and it relates more to a real-world concept over a software engineering concept.
David Calvert made in 1996 a partial list of architectural styles/patterns:
- Dataflow Systems -- Batch sequential, Pipes and filters.
- Call-and-return systems -- Main program and subroutines, OO systems, Hierarchical layers.
- Independent components -- Communicating processes, Event Systems.
- Virtual Machines -- Interpreters, Rule-based systems.
- Data-centered systems (repositories) -- Databases, Hypertext system, Blackboards.
Other more modern styles/patterns are: Plugin, Peer-to-Peer, Shared Nothing Architecture, Representational State Transfer (REST), Front-end and back-end. There is a more complete list on Wikipedia.
suggestion
by
ganesh ghag
Posted
Feb 12, 2009 2:58 AM
2 comments
Watch Thread Reply