There’s a nifty piece of software I’ve run across called FireDaemon Pro – I’d love to share my experiences, as it’s a great tool to have in your tool pouch.
The basics of the software are simple: take just about any Windows application or script and turn it into a Service. To name a few, FireDaemon Pro handles 32- and 64-bit EXE and DLL applications, BAT, CMD, Perl and Java. Before I rattle off more of the bells and whistles, let me give you some context on what we were doing at the time, and how we ended up using this product.
A teammate and I were working in a small IT shop that provided services for a federally regulated industry. We were part of a team of four that supported and implemented solutions for day-to-day operations. Each of our roles were siloed by the business teams we supported. My teammate had been there longer than I and had developed quite a few .NET applications of various flavors, while my predecessors had come from more of an “anything but Microsoft” philosophy. I had just come off of my first .NET project and was anxious to continue to explore the world of .NET . At some point, we decided for any new development, we would implement solutions in .NET for ease of cross-training, skill portability for projects spanning our business teams, and subsequent ease of support for each of our respective roles.
Fast-forward several months and my teammate had implemented a prototype serial port application that received time-sensitive federally regulated data, and saves the data to a database for another process to pick up and push into a customer-facing system. Serial port implementation in a .NET application is fairly easy to accomplish, but had its challenges in a service-oriented implementation. With time and resource constraints, not to mention “money savings to be had” pressure, my teammate had created a forms application to get the proof-of-concept up and going. Unfortunately/fortunately our internal customers were so pleased with the process, they pushed for it to be implemented into production as-is. At the time it didn’t seem to be a big deal. We’ll run it as a forms application on the production server with the appropriate security. After all, there are only so many IT resources and projects were stacked high and tight, so better to implement as-is and move on…right?
Let’s just say many 3 AM phone calls later, it was starting to be a bit on the painful side.
While the above project was in-flight and a few months ahead, I was off and running on a new development project where I wanted to leverage the Microsoft Office PIA’s in a .NET application to process Excel files generated by third-party software (I know, I know … Apache POI … believe me, I know. .NET was just so shiny at the time). My teammate had not yet been bit by the “put it in production as-is” direction, so when I started to create my application, I followed suit and also developed a Forms application to do my testing with.
Long story short, I ended up finding out the hard way that Microsoft does not support a service implementation using their PIA’s. So, I was faced with implementing a Forms application in production.
It was about that time that one of our server guys (who had been involved with the various issues brought to light by running a Forms application on a production server – i.e. not being able to do a server bounce without manually starting an application) introduced us to FireDaemon Pro. It was the cure for what ailed us. With a small change to the forms application and about 15 minutes worth of install and configuration time on the server, Forms application turned service worked flawlessly.
No more manual starts, no more 3 AM calls.
Fire Daemon Overview
Something great about FireDaemon Pro is that it has all sorts of configuration choices: automatic re-start, email upon failure or re-start, and automatic pop-up handling, to name a few.
Here’s a more complete feature list, from the FireDaemon Pro website:
- Monitor and restart your app if it crashes, hangs or shuts down
- Schedule your app to start/restart at specific times and dates – before you log in
- Ability to start and run your application in the background without user intervention.
- Ability to run your application continually across multiple user sessions.
- Run your application either interactively or non-interactively.
- Restarts your application in the event of failure, unintentional or malicious shutdown or at scheduled predetermined intervals.
- Ability to modify your application’s priority and bind to specific processors or cores.
- Execute additional transient programs during the service lifecycle.
- Control, log and close popups that your application might display.
- Assists in meeting various government regulations, Acts and standards pertaining to computing systems robustness, security, management, access and control (eg. Sarbanes-Oxley (SOX), ITIL).
Aside from having to find this product in the situation we did, I’m glad to have had the experience. This is an excellent tool to have in your tool pouch, so make sure to check it out more in detail here. For more how-tos, check out its features page.
— Keith LaPee, [email protected]