📜 ⬆️ ⬇️

Architecture and architectural styles of web applications - 1

Comparison of architectural styles Provides background information on the basic architectural styles of web applications with basic terms based on the thesis of Roy T. Fielding (author of REST). The first part offers a list of architectural styles and a table of their comparison. In the second, a description of the styles themselves is planned.


Introduction


Why do you need it?
In order to successfully design applications that interact through a network, you need to know the basic architectural styles that can give your architecture the required properties.

What web applications are we talking about?
Network-based hypermedia systems.
')

Style comparison


Definitions

An architecture (software system) is a model of the elements of a software system during a specific phase of its operation.

A software system can be viewed at various levels of detail, and many phases of its operation (start, initialization, execution process, reinitialization, completion) can also be considered. Each level of detail and each phase of work has its own architecture.

An architectural style is an ordered set of architectural constraints that define the roles and characteristics of architectural elements and the permitted types of relationships between these elements for any architecture that fits this style.

Table Architectural Styles (Styles) / Architectural Properties (Properties)

The first column is the names of the styles, the second is the names of the parent styles (for those that have one).

The value in the table shows the relative influence of the architectural style on the corresponding architectural property. Minus (-) means negative impact, plus (+) positive, and (±) means that the effect depends on additional conditions.

The list of considered styles and properties comes after the table.
image

Styles


Considered 21 architectural style.
  1. Data flow styles
    1. PF (Pipe and Filter)
    2. UPF (Uniform Pipe and Filter)

  2. Replication styles
    1. RR (Replicated Repository)
    2. $ (Cache)

  3. Hierarchical styles
    1. CS (Client-Server)
    2. LS (Layered System)
    3. LCS (Layered-Client-Server)
    4. CSS (Client-Stateless-Server)
    5. C $ SS (Client-Cache-Stateless-Server)
    6. LC $ SS (Layered-Client-Cache-Stateless-Server)
    7. RS (Remote Session)
    8. RDA (Remote Data Access)

  4. Mobile Code Styles
    1. VM (Virtual Machine)
    2. REV (Remote Evaluation)
    3. COD (Code on Demand)
    4. LCODC $ SS (Layered-Code-on-Demand-Client-Cache-Stateless-Server)
    5. MA (Mobile Agent)

  5. Peer-to-Peer Styles
    1. EBI (Event-based Integration)
    2. C2 (Component- and message-based)
    3. DO (Distributed Objects)
    4. BDO (Brokered Distributed Objects)


Properties


Considered 13 architectural properties.
  1. Performance
    1. Net (work) Performance - performance, depending on the amount of data transmitted over the network
    2. UP (User-perceived) Performance - user -perceived performance

  2. Network Efficiency - network utilization efficiency (intensity of interaction with the network and data transfer volumes)
  3. Scalability - scalability (the ability of the architecture to support a large number of elements and their interactions)
  4. Simplicity - simplicity (the degree of separation of the system into simple elements)
  5. Modifiability
    1. Evolvability - the extent to which changes in one component do not affect others.
    2. Extensibility - the ability to add new functionality to the system
    3. Customizability - the ability to temporarily change the behavior of components to implement a new feature
    4. Configurabiity - the ability to modify the behavior of system components after its launch
    5. Reusability - the ability to reuse system elements

  6. Visibility - the ability to monitor the component interactions of other components
  7. Portability - the ability to run in different environments
  8. Reliability - reliability (probability of failure of the entire system when part of its components fail)


Summary

The presented table is interesting for two main reasons - all architectural styles of web applications are aggregated and in some way classified, and also compared to each other by a large number of parameters.

Source: https://habr.com/ru/post/81159/


All Articles