I’m currently working on a new version of the Windows Services library that ships as part of the licensed I/O Completion Port Server Framework. The Services library allows you to turn your server into a Windows Service very easily and also allows you to run it as a normal executable inside the debugger, etc. It integrates nicely with our Performance Monitoring library for exposing perfmon counters and comes with several example servers that show you how to use it (see here and here).
The library hasn’t changed much for many years, it was originally put together back in around 1997 as part of our initial set of reusable code and although it was refactored a little back in 2007 when the rest of the framework underwent major reworking but since it wasn’t that broken it wasn’t changed a great deal.
The Windows Service API has changed considerably since those early days (see here for the latest changes) and we’ve had various clients asking for various new bits of functionality for a while and often these have been shoe-horned into a client specific version of the library. I’m now taking all of these changes and updating the mainline code to support all of the new service API features and redesigning it to include a few things that we didn’t support, or didn’t do as well as we could, the first time around. We now support multiple services within a single exe in a convenient manner (and can still run them under the debugger easily), for example.
The library still includes support for installing and running ‘multiple instances’ of a single service; where you might wish to run two identical services with slightly different configurations and this is a favourite feature with clients as it enables them an extra level of isolation when running their servers.
The code changes are well under way and will be included into the next release of The Server Framework. If you have any suggestions for things that you’d like included then please get in touch.