In this article let's discuss about the various architecture pattern available 
in this programming world.
Before getting into the main picture, we need to know why we need patterns.
Why Patterns?
Each pattern describes a problem that occurs over and over again in our 
environment and then describes the core of the solution to that problem in such 
a way that you can use this solution a million times over without ever doing it 
the same way twice.
- Christopher Alexander
What is Architectural Patterns?
We can simply define it as a design technique at a larger context where it 
influences the organization or the structure of the sub systems. It establishes 
the relationships, defines the responsibilities, and provides the rules and the 
guidelines of the overall architecture.
Focus Areas of Architectural Pattern
The architectural pattern can be organized by their focus areas as below.
- Communication
 
 o Service Oriented Architecture
 o Message Bus
 
- Deployment
 
 o Client/Server, N-Tier, 3-Tier
 
- Domain
 
 o Domain Driven Design
 
- Structure
 
 o Component Based
 o Object Oriented
 o Layered Architecture
Let's discuss about the simple definition of 
each architecture pattern listed above.
Service Oriented Architecture
Service Oriented Architecture can be defined as a collection of services. These 
services communicate with each other. It generally refers to Applications that 
expose and consume functionality as a service using contracts and messages. 
SOA makes it possible for a business to add new features and services without 
having to create them from scratch. Instead, they can be added or modified as 
needed, making it simple and efficient to expand the business.
![Patterns.gif]()
Message Bus
Message Bus can be defined as 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.
Above diagram shows an integration solution that uses a message bus. An 
application that sends messages through the bus must prepare the messages so 
that the messages comply with the type of messages the bus expects. Similarly, 
an application that receives messages must be able to understand the message 
types. If all applications in the integration solution implement the bus 
interface, adding applications or removing applications from the bus incurs no 
changes. 
Let's discuss about the remaining architecture pattern in my next article. Hope 
this session helped you to understand about an overview of Architectural 
Pattern.