Choose the Right Hammer
Before you start developing your next ASP.NET app, be sure you know your options.
By Jonathan Goodyear
You've probably heard the adage, "When all you have is a hammer, everything looks like a nail." Last year, most of us were still using classic ASP as our hammer. If we whacked hard and often enough, it got the job done. The arrival of the .NET Framework brought with it a much more powerful Web-development hammer: ASP.NET. It might seem easy to go on pounding away at business problems with our new-found toy, but take a step back and assess your situation for a minute. ASP.NET might not be the best answer to all your business problems.
Before you commit to building an ASP.NET Web application, you should take a long, hard look at the option of building a smart-client Windows Forms application instead. With .NET, DLL hell is but a memory and you can handle installations with a simple XCOPY. Add to that the rich user-interface options of Windows Forms as well as the performance improvement of a stateful client tier, and you have the makings of a strong contender for many apps you originally had planned to develop using ASP.NET.
So, when should you choose a smart-client Windows Forms application over an ASP.NET Web application? That question has no absolute answer, but here are a couple of questions to ask yourself when considering your client-tier options.
What are the application's feature requirements? You simply can't duplicate some interfaces in a Web application, no matter how hard you try. For example, one client of mine actually considered reproducing the functionality of an Excel spreadsheet in a Web application. There are some commercial .NET server controls out there that can get you a few spreadsheet functions, but it's just not the same. The bottom line is if your application is going to have a complex user interface with features such as drag-and-drop or multithreading, a Windows Forms application is your best bet.
Who controls the client? If your application is going to be deployed in an intranet environment and you can mandate the installation of the .NET Framework redistributable, that favors the development of a Windows Forms application. It can even be done automatically over the wire. Installing the .NET Framework should not be feared by your IT department; it should be viewed as a Windows infrastructure upgrade. If you are building an application that will need to be accessed by computers with non-Windows operating systems, an ASP.NET solution is your only choice (for now). Be careful, though - many ASP.NET features (such as client-side validation) that work well with Internet Explorer on Windows do not work so hot when browsed by Macintosh or Linux browsers. You still must test each client environment you plan to support.
In the world of .NET, Web applications and Windows applications are no longer polar opposites on the plane of software development. They have been brought much closer together by Microsoft's efforts to create a common development paradigm. Most limitations of Windows applications that made "thin-client" Web application development a requirement no longer exist, so the decision of which platform to use for the client tier of your next application is no longer cut and dry.
I'm one of the most outspoken advocates for ASP.NET development, but I do recognize that each application is unique in its requirements. Become familiar with all your options so your decisions are based on careful assessment rather than an attachment to a technology.
Jonathan Goodyear is president of ASPSoft (http://www.aspsoft.com), an Internet consulting firm based in Orlando, Fla. He's a Microsoft Certified Solution Developer (MCSD) and author of Debugging ASP.NET (New Riders). Jonathan also is a contributing editor for asp.netPRO. E-mail him at mailto:[email protected] or through his angryCoder eZine at http://www.angryCoder.com.
Tell us what you think! Please send any comments about this article to [email protected]. Please include the article title and author.