One of the complaints I get from IT administrators is that when they run a background task such as a Windows Service, they have no user interface to show them what’s happening in real time. I have to admit that most of the utilities and applications I’ve seen that administrators use don’t do a good job of providing an easy to use interface to view service activity. You either get a clunky windows application where all the processing happens to be within that executable itself or a Windows service that doesn’t tell you what it’s doing. I’m not sure whose to blame for this kind of design.
My conviction is that applications should be structured such that all the heavy-lifting (serious processes) are made in a separate windows service. All other aspects of an application such as the user interface should be packaged into a separate executable. As the service is running, it can use WCF (windows communication foundation) or .NET remoting to update an activity log on the screen without causing delay in the interaction of the UI itself.
The benefits of separting process from user interface is huge. If the window closes, the process will still finish because another service is doing all the work. Therefore, I highly urge developers and architects to begin to make business user interfaces that make the IT admin feel good and separate out the business layer from the presentation layout by taking full advantage of .NET messaging platforms.
WPF (Windows Presentation Foundation), is a great framework for building interfaces that make you feel good, which is one of my core values when building user experiences. Keep everyone happy with a great presentation platform and use WCF or other messaging frameworks to ensure long running tasks are completed successfully.