1. Agnostic Services

principles: reuse, service composability

2. Agnostic Service Declaration

principles: reuse, service composability

3. Atomic Service Transaction

principles: service statelessness

4. Enterprise Service Bus (ESB)

principles: loose coupling, interoperability, endpoint abstraction

5. Service Façade

principles: loose coupling

6. Service Callback

principles: loose coupling

7. Multiple Service Contracts

principles: reuse, loose coupling

8. Authentication Broker

principles: service composability

9. Message Origin Authentication

principles: service composability

10. Message Screening

principles: standard service contract

These 10 SOA design patterns are so important and widely used that they almost seem a little obvious.Agnostic services implement logic that is common to multiple business problems. Separating agnostic logic into discrete services facilitates service reuse and composability.Agnostic services should explicitly declare that they are agnostic. This makes it clear to future designers and builders which services are designed to be reused.Services can be wrapped in atomic transactions with a rollback feature that reverses all actions and changes. Transaction management services can be implemented in the component layer and reused by multiple services.An ESB acts as a message broker between consumers and services. The ESB can perform message transformations, routing and connect to applications via a variety of communication protocols.A service façade sits between a service and a contract. It eliminates the tight coupling between the service and its contract. This is intended to minimize changes to the service if the contract changes. A service can have multiple service façades to support multiple contracts.A service requires its consumers to call it asynchronously. If the consumer needs a response it provides a callback address. When the service reaches some milestone in processing it messages the consumer with a response. This approach frees resources and is useful when services are expected to be long running.A service may support multiple contracts concurrently. This can be done to support backward compatibility (so that when a service changes all the consumers do not have to be updated). It is also done to provide different views to the service for different purposes (thus facilitating reuse).An authentication broker assumes responsibility for authenticating consumers. Consumers are issued a token they can use to access services.Digital certificates are used to authenticate clients.Messages are screened for harmful data before processing.