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.
Telerik, a development company focused on delivering user interface components, has a terrific, free .NET ORM library called OpenAccess. ORM is an acronym for “object relational mapping.” The ORM library takes over the connection strings and queries in an application’s data layer. The main benefit is that you are free write LINQ queries to concrete (POCO) classes, instead of concatenating SQL queries inside of C# code.
I’ve been using the fluent API and I love it. The fluent API lets me map databases to classes using only a few lines of code. All I have to do to instantiate a database context, declare a mapping to the metadata, and then I can query my database using LINQ.
I have to admit that I really enjoy using Telerik’s libraries. I have also developed enterprise websites, reports and portals using their ASP.NET MVC AJAX control library and am impressed with the level of details they put into their components. If you’ve never used a Telerik component before, I highly recommend their free decompiler, JustDecompile.
No need to pay hundreds of dollars for DNN forms and modules when you get enterprise ready controls right out of DotNetNuke (as of v. 6.2.2). Yes, that’s correct, DNN comes with all the Telerik web controls for free!
Based on hearsay, developers hate documentation…until they come across a project with no documentation!
As you leave your company, how do you want to be remembered? Let me put it this way, if the next programmer is a serial killer that has to review legacy code that you wrote, would you want him to know where you live? Once I thought following a zero comment policy as good because classes, methods, variables should be human readable and obvious, however, there will always be someone who complains about the lack of comments and that your documentation is overwhelming. So, comment sparingly, but when you comment, complement the existing code and comment specifically business reasons behind your code. It’s also useful to use tools in your IDE that automatically apply comments to properties and classes. This is important, but if you comment every object, please don’t leave the default auto-generated comments in there, as they are just as useless as no comments. Finally, you should always reference your code classes to the user-friendly documentation in some other system (such as Confluence). If you comment your code where appropriate and also provide documentation for all your code, then you will be appreciated long past your stay.