
Figure 1: An SOA Architecture Pattern That Maintains the MVC Pattern
Service orientation is an architectural pattern, and a service is an abstraction within that pattern for developing loosely coupled distributed systems. There should be some basic characteristics of any well-designed service:
1. Service boundaries should be explicit: The exposed surface area of services should be well-understood and defined by explicit contracts (interfaces) that clearly identify the communications that flow across the boundary of a service. The Service as a provider can selectively expose the behavior of its members to consumers systems via endpoints.
2. Services should be autonomous: A service should be deployed and managed independently of any other services in the service layer of an SOA.
3. Services should minimize coupling between themselves and their consumers: The only knowledge that a service provider and a consumer share is the schema of the message passed between them. Consumers should not have or need any knowledge of the implementation or processing of the message in the layered classes that make up a service provider.
4. Services should be implemented by standards and best practices for SOA.