A service can be defined as any discrete function that can be offered to an external or internal consumer. This service can be an individual business function or a collection of functions that together form a process. It can be compared to a module that is packaged into a service program. The difference is that a service is callable from anywhere.
The services are functions or operations that are available across a network. Some examples are Login Service, Calculate TRM, Impression Service, and so on.
The services are accessed independently of implementation or transport and are integrated across the network or enterprise, as shown
The properties of 'SERVICES'
A service must have with the characteristics that are defined in this section.
Services are defined by explicit, implementation-independent interfaces. Consumers of the service only depend on such an interface for service invocation; they are not concerned with the service implementation or even where it runs. Loose coupling promotes flexibility in changing the service implementation without impacting the service consumers.
It is important to design services with reuse in mind and anticipate the different reuse scenarios. That is, each service has been designed for reuse, not duplication.
To design for reuse, complete the following steps:
The result is a composite application at run time representing a business process.
Services should not physically expose any implementation details or deployment details within their interface design.
The concept of encapsulation by using interfaces should be familiar from the disciplines of Object-Oriented Analysis and Design (OOAD). Interfaces are used to separate publicly available behavior from the implementation of that behavior. Consumers of that behavior depend only on the interface that describes the behavior; the consumers are then not impacted if the implementation of that behavior changes in any way. A service-based architecture provide a set of coarse-grained interfaces that encapsulate access to finer-grained components and are accessible over the network.
The service implementations should not hold a conversational state across multiple requests. Services should communicate complete information at each request and each operation should be functionally isolated (separate and independent)
The services interfaces should be concise, related, and complete sets of operations. Concise and complete implies every operation that is needed and no more.