Home > REST Constraints > Client-Server

Client-Server

Short Definition

Solution logic is separated into consumer and service logic that share a technical contract.

Long Definition

Business automation logic is organized into a solution comprised of units of consumer and service logic. Service consumers actively invoke service capabilities by sending messages that comply with a published technical service contract. Services passively wait to process request messages and respond to their receipt in compliance with the technical contract.

Application
  • Solution logic must undergo a process whereby it is subjected to the separation of concerns. This partitions the logic into units that address defined concerns. These units of logic are composed to form the solution at runtime.
  • The consumer's required knowledge about a service and the service's required knowledge of its consumers are limited to the contents of the shared technical contract.
Impacts
  • Service logic can become more scalable and reusable because it is freed from having to implement consumer-specific logic.
  • Service and consumer logic are simplified due to respective information hiding.
  • Service and consumer implementations can be evolved independently in ways that do not require alterations to the shared contract.
  • Interactions between services and consumers that circumvent the shared technical contract are prohibited, potentially resulting in lost opportunities to optimize the solution architecture.
Relationship to REST

This is a foundational constraint that defines the separation between service, consumer, and the technical contract they share. All of the other constraints reference these artifacts and so build upon this constraint.

Related REST Goals

Modifiability, Scalability