Background​

Generally making a service more reliable does not mean to ensure the service works 24/7. This is an old school no more working approach from times where software solutions have been simple, working in defined environments and under full control. But today, even simple software become enormous complex, networks are not that reliable as we think and the internet, well. Consequently todays reliability is defined by availability of the service. This is even more true if we think in client/server or better client/service terms.

What to do​

The most important thing about a service is that your service is implemented stateless. If this is not the case, you will never have a chance to make the service truly fail-safe, no matter what tool you use. But here are the most important principles:

1. Always terminate the process in case of IDSC runtime errors
2. For prevention, recycle the service automatically every 24/12/6 hours. To do this terminate the process using QUIT and let the OS restart it.
3. Configure the service on the Windows side, so the service is automatically restarted if it fails.
4. If the service depends on another service, the command "sc config <servicename> depend=<servicename>" can be used to reflect this dependency. Windows will not start your service until all services that it depends on are running, and automatically attempts to start them, if needed. Also, your service will be stopped automatically if the other service terminates.

With the aforementioned steps, you should actually be able to increase availability of your service.