In the scope of this note, Service-Oriented Architecture defines patterns to build large scale solutions around elementary units called Services. Services are functions represented as abstract, reusable, agnostic (in terms of protocol and transport) and decoupled components.

Preferably Services should be also stateless, and when stateless services are used in conjunction with Event-Driven patterns and their activation is based on events and rules, these stateless services are called Actions.

As the name implies, Service Providers perform functions on behalf of Service Consumers. Any given entity functioning as a provider can also function as a consumer.

Another derived pattern, a Service Bus, is a middleware infrastructure based on standards that serves a central conduit for business functions, or services. Inside a Service Bus, events travel through a abstract channel called a Normalized Message Bus.

A Normalized Message Bus is an abstract transport where content format is independent from the way providers and consumers understand them. An ESB should support multiple formats based on performance, reliability and other SLAs.