Service-oriented architecture (SOA) is a software design and software architecture design pattern. Service-orientation is a design paradigm to build computer software in the form of services.
The service-orientation design principles may be broadly categorized as follows
SOA Standardized service contract
One of SOA’s goals is to reduce the need for data transformations as two services interact with each other, this can be achieved if service contracts use standardized data models e.g. XML schemas if the services are web services.It helps in making services more interoperable. Another important goal of this design pattern is to use a standardized way of expressing service capabilities so that their purpose and ability can be easily understood at design time.
SOA Service loose coupling
SOA objective is to reduce coupling between classes in order to foster an environment where both the classes, although somehow related to each other, can be changed in a manner that such a change does not break the existing relationship, which is necessary for the working of a software program.
SOA Service abstraction
Service abstraction says information published in a service contract is limited to what is required to effectively utilize the service.
SOA Service reusability
The service reusability says, services should have potential to be reused across the enterprise. These reusable services are designed in a manner so that their solution logic is independent of any particular business process or technology.
SOA Service autonomy
services can carry out their capabilities consistently and reliably only if, their implementation logic have significant degree of control over its environment and resources.this principle is called Service autonomy.
SOA Service statelessness
Service statelessness says, in order to design scalable services by separating them from their state data whenever possible.By seperating it means state should be maintained via some other external component. This results in reduction of the resources consumed by a service By reducing resource consumption, the service can handle more requests.
SOA Service discoverability
Services should be discoverable, SOA focus on re-usability of services can only be fulfilled,if deployed services are known to its consumers. To make services discoverable, Document the information about the service, Store the documented information in a searchable repository, and Enable others to search for the documented information in an efficient manner.
SOA Service composability
In SOA, end product is composed of several interlinked objects that have the ability to become part of multiple software solutions, no matter how complex the solution is.