This article looks at how to turn an existing software that is not service oriented into a service that can be used in a service oriented architecture. We need to know exactly- what is a service? We are assuming the resulting service will provide identical functionality. So the only difference between a software service and other software components is at the interfaces. The interfaces define how the service can be used individually or as part of a larger system. In summary a service needs to achieve the following properties :-
- is self contained, highly modular, and can be independently deployed. A service can do something useful in its own right.
- is distributed component, accessible over the network or locator other than the absolute network address.
- has a published interface, so users only need to see the interface and need not to know the internal details of the implementation.
- is discoverable, meaning users can look it up in a special directory service where all the services are registered. Services designed for public use require to be discoverable, otherwise potential users may never learn about the service.
- stresses inter-operability such that users and providers use different implementation languages and platforms. That is any software can be turned on a service for use with other services regardless of the languages in which they are implemented.
- is dynamically bound, which signifies that the service is located and bound at runtime. Therefore service users do not need to have the service implementation at build time.
Therefore, turning a software system into a service consists of encapsulating the software such that it is exposed to the web via well defined and flexible network accessible application programming interface (API). This can only happen using a set of inter-related technologies. Currently web services provide a technology suite that can provide the above listed characteristics.
Our next article will relate the technologies in web service to the properties of a service.