Introduction
An Architecture style is a set of principles which you can use to build a system Typically Architecture styles depends on their focusing areas. Implementing the software architecture styles depends on the capacity of your organization for implementing it and infrastructure constraints. This post explains which architecture style is to use based on demands.
Architecture Styles
We typically combine multiple styles to define a complete architecture. For example layered architecture can be used with component-based, object-oriented or SOA styles.
The following are the list of commonly used software architecture styles
Client\Server
Consider this style if
- The application is Server based and supports multiple clients.
- You are creating Web based applications exposed through browser.
- You want to centralize data storage, backup and management functions.
Component-Based
Consider the component-Based Architecture style if
- Your application has specific requirements that do not include a UI or business processes.
- Your application executes procedure style functions with little or no data input.
- You want create a pluggable architecture that allows you to replace and update individual components.
Layered
Consider the layered architecture style if
- Your application is complex
- You want to improve the maintainability and extensibility of the application
- Your application to support different client types and different devices
Message Bus
Consider this style if
- Your existing applications to interoperate with each other to perform some tasks.
- You are implementing a task that requires interaction with external applications.
- You are implementing a publisher\subscriber application.
Model-View-Controller (MVC) Architecture style
Consider MVC style if
- You Want improved testability and simpler maintenance of UI
- You want to separate UI elements and UI processing code.
- Your UI processing code does not implement any business logic.
SOA
Consider the Service-Oriented Architecture style if
- You want to consume the services exposed by the third party.
- You want to build application that compose a variety of services into a single UI.
- You are creating SaaS(Software as Service) applications.
- You want to expose services through discoverable directories.