This is the 3rd episode in the series exploring service oriented architecture (SOA). One of the important aspects while learning SOA is to understand the concept of service and variations of service types.
A service is a self-contained unit of software that performs a specific task. It has three components: an interface, a contract, and implementation.
The interface defines how a service provider will perform requests from a service consumer. The contract defines how the service provider and the service consumer should interact. The implementation is the actual service code itself. Because the interface of a service is separate from its implementation, a service provider can execute a request without the service consumer knowing how it does so; the service consumer only worries about consuming services.
In a service oriented architecture, services can be combined with other available services in a network through service orchestration to create higher-level composite services and applications. A service is reusable, non-context specific, stateless, and can be dynamically discovered across the enterprise, in partner systems, or in the cloud. These characteristics enable services to be loosely coupled, resulting in new applications that are designed according to SOA principles.
There are two major types: Infrastructural services and Application services. Infrastructural services provide common facilities that would not be considered part of the application. Application services provide real meaningful functions from user perspective.
Infrastructural services (which are sometimes called BUS services referring to SOA implementation through ESB) are further divided into: Communication services and Utility Services.
Below diagram summarizes a breakdown of those service types.