Services, at their most basic, are simply programs that run in the background on a computer. They typically wait for input from somewhere, perform some actions based on that input, and return data that, at a minimum, indicates that the actions that were undertaken either succeeded or failed. At the most basic level, the input might not even be something that is visible to a user; services that wait for network activities, monitor filesystems, or even just run on some sort of timer-controlled basis, are very common in many operating systems today.
Services should always be available, running continuously, for as long as the host machine is running; this has some implications for how they are written and implemented, as follows:
- They have to be very fault-tolerant: a service that crashes and dies every time something unexpected happens, and has to be restarted...