Tuesday, April 15, 2008

Services and Applications

Sometimes in my travels I hear a service described as being a type of application, and sometimes I hear an application described as being a service (in the case where we have an application that exposes service endpoints). In reality however, a service never directly aligns with an application.

Consider a risk assessment application where risk assessors review risk profiles and make a series of rulings resulting in a risk assessment. In this case, the application is the tool leveraged by the risk assessor. The service actually encompasses this tool as well as the risk assessors performing the assessments. This is explained in more detail here.

An application is a piece of software leveraged by a user (via a user interface) to perform a task of value to the user, whereas a service is a coarse grained unit of logic that performs a specific function and communicates with external parties by way of exchanging messages that conform to the service contract.

A service may contain zero or more applications - zero if the service is fully automated. An application may span many services (in the case of a composite application).

As such, in any given architecture services and applications are orthogonal concerns.

No comments: