Should I Build a Windows or a Web Application?

The choice of which to build—a Windows or a Web application—can be a difficult one if you don't understand the key factors that go into such a decision. With Microsoft .NET, understanding your client options is the key.

Contents:

Developing an Application for Internal Use
Developing an Application for Business Customers
Developing an Application for the Masses
Conclusion

Developing an Application for Internal Use

When developing applications for internal use in your company, you often have far different requirements than you do for external applications. Most companies have some form of desktop standardization to lower their Total Cost of Ownership (TCO). This means that they can control what software is running on the client. Windows-based applications, sometimes called Thick Client applications, often make more sense in an Intranet setting because they can offer a more robust Graphical User Interface (GUI) and better features that increase your employees' productivity. Simple things like keyboard shortcuts, client side caching, multi-threading, and advanced user interface controls can make all the difference in the usability of an application.

Until Microsoft .NET, deployment and updates of a client-side application has traditionally been more difficult, but several features in Microsoft .NET have taken some of the hassle out of managing Thick Client applications. Side by Side execution allows two versions of the same application to run at the same time in separate isolated spaces which makes self-updating applications easier to create. Meta-data has been moved into the application itself, eliminating the need to use the registry, and making installs easier. Microsoft .NET applications can be self-contained so that deployment can be done by merely copying a folder and running the application.

If your application can run with a more limited set of privileges on the client's desktop system, you may be able to take advantage of enhancements in IE 5.01 and above that allow an application to be hosted at a web server virtual directory and run right from a URL. As the application needs additional components, it will return to the same URL to try to download those components as well. Microsoft .NET's tight integration with the Microsoft Windows operating system gives it speed advantages over other client technologies, and allows it to access more features provided by the operating system to help jump start development of client applications that will run on the Microsoft Windows operating system.

The largest hurdles to creating Thick Client applications on the Microsoft .NET platform is the distribution of the Microsoft .NET Framework. This must be installed on client computers that will run your application, but on Microsoft Windows based networks, this setup can be easy to deploy through the use of Active Directory Group Policy. Be aware that developing thick client applications is very different from developing web based applications, and that users have different expectations of them. It is often harder to develop quality user interfaces for a Windowed client versus a Web client, but the results can be much more satisfying for the users and can increase their productivity as well.

Developing an Application for Business Customers

When developing applications for business customers, you may or may not have control over what is run as the client, so this will contribute largely to your decision over whether to develop a Thick Client or a Web application. To develop a Thick Client application using Microsoft .NET, you will have to able to dictate that your customer's run some flavor of the Windows operating system, and they will have to install Microsoft .NET as well. For most companies this will not be a huge requirement, but others might not want to add the Microsoft .NET framework to their infrastructure support.

In the past, Firewall issues would have been a problem for client side applications, but Microsoft's strong support of XML Web Services gives client applications the ability to access data in a manner similar to a user browsing the Internet, so that Firewalls are no longer the problem for client applications that they once were.

If these client side restrictions are not realistic for your customers, you may be able to develop a Web application with enhanced client side features if you can dictate that they must be running one of the more modern web browsers, such as Microsoft Internet Explorer 5.01 and above, Netscape 6 and above, or Mozilla. Web applications that ensure a better client browser can offer better features using client side Javascript, but they can still fall short of the features that you can offer in a Thick Client application. If you cannot even dictate the client side browser selection, you will have to code your application for plain HTML to be most universally compliant. This can get the job done, but it means more traffic to the web server and a less than ideal user experience.

Developing an Application for the Masses

If you are targeting your application to the general public, a web application is really the best choice. The proliferation of the web browser has ensured that nearly all of your potential users will have access to a web browser and can run your application. Now you have to decide what level of features you would like in your application and what limits you want to put on your clients.

You can create web applications with more advanced features if you target your application to one of the more advanced web browser like Internet Explorer, Netscape, or Mozilla, but you then must ensure that your clients have one of these. You could target a broader audience by making your web application use more compliant HTML, or you could choose to support multiple versions to give some customers enhanced features and others broader access.

Supporting multiple versions can ensure the best user experience for the most people, but it will increase your development and maintenance costs as well.

Conclusion

There is no single right answer when choosing Windows versus Web, but many contributing factors might lead you to one solution or another. Windows applications have the best user interface and features, but they are available to the smallest audience, while Web applications have the most limited user interface features, but they are available to the broadest audience.

Use some of these determining factors to help select the right platform for you application, but keep in mind that a small application has a tendency to grow into a large application as more people discover its usefulness so keep growth factors in mind as well.