We can define Service-Oriented Architecture as an architectural style for building systems based on interacting coarse grained autonomous components called services. Each service expose functionality and behavior through contracts. Contracts are composed of messages at discoverable addresses called Interfaces.

Service. A Service should provide a high cohesion and distinct function. Services should be coarse grained pieces of logic. A Service should implement at least all the functionality promised by the contracts it exposes. One of the characteristics of services is service autonomy. Autonomy means the services should be self-sufficient, at least to some extent, and manifest self healing properties.
Contract. The collection of all the messages supported by the Service is collectively known as the service's contract.
Interface. The Interface is a URI, a specific place where the service can be found and consumed.
Messages. The communication mechanism in SOA is the message. Messages can for instance be
- http GET messages
- SOAP messages
- JMS messages
- and even SMTP messages
Messages must have both a header and a body. The header is usually more generic and can be understood by infrastructure and framework components without understanding, and consequently coupling to, every message type.
Service Consumer. This is the user of the Service. A service consumer is any software that interacts with a service by exchanging messages with the service. Consumers can be either client applications or other "neighboring" services their only requirement is that they bind to an SOA contract.