Service-oriented and component-oriented approaches

The differences between a service-oriented approach and a component-oriented approach to distributed systems architectures are:

  1. Services can be offered by any service provider inside or outside of an organisation. Assuming these conform to certain standards (discussed below), organisations can create applications by integrating services from a range of providers. For example, a manufacturing company can link directly to services provided by its suppliers.
  2. The service provider makes information about the service public so that any authorised user can use the service. The service provider and the service user do not need to negotiate about what the service does before it can be incorporated in an application program.
  3. Applications can delay the binding of services until they are deployed or until execution. Therefore, an application using a stock price service (say) could dynamically change service providers while the system was executing.
  4. Opportunistic construction of new services is possible. A service provider may recognise new services that can be created by linking existing services in innovative ways.
  5. Service users can pay for services according to their use rather than their provision. Therefore, instead of buying an expensive component that is rarely used, the application writer can use an external service that will be paid for only when required.
  6. Applications can be made smaller (which is important if they are to be embedded in other devices) because they can implement exception handling as external services.
  7. Applications can be reactive and adapt their operation according to their environment by binding to different services as their environment changes.

Why services are not components

(c) Ian Sommerville 2008