When should you build a web application vs. a thick client?
I would like to hear other people's advice on when one should build a web application versus building a thick client.
Over the last few years, I have participated in several discussions about whether an application should be built (or an old application upgraded) with a web browser interface. Usually these were internal systems used within an organization, not mass-market shrink-wrap products, and they were not actually on the public Internet. I do not want to limit the discussion to these types of applications solely though.
Does the fact that an internal application has a limited and captive audience more or less override any concerns over improved usability that a thick client can provide?
I go Web app when I don't want to:
- be supporting a thousand environments each with their own quirks. Specifically, viruses, trojans, software interfering, and making it work the same everywhere.
- worry about applying upgrades and taking lots of calls
- dealing with clients who lose their data
I pick a thick client when the computation is intensive per transaction, or there is significant data transfer per transaction.
I like fixing everyone's problems with one upgrade. It might not be for everyone, but it's where the quality of my life and those I work for goes up. Making a web app work on a few different browsers may be easier than a ton of different operating systems in different conditions.
With the advent of Flex/Air you can provide an entire application experience in the browser. The browser is becoming the universal interface, whether it's installed locally or in the cloud.
Web apps have their cons too. I just am more motivated to build web apps as the pro's seem to outweigh the cons for the projects I am choosing.
I believe we are still at the point where unless there is a reason for it to be a Web app it should be a local application (thick). It is obvious when it should be a web app. A pet peeve of mine is the thought that it should be a web app unless it's obvious it should be local. I don't believe we are at the point where enterprises are willing to have their employees dependent on web applications outside of their control. When it comes to apps internal to a company I believe movement of data, security, and deployment/upgrades are the key factors in deciding.
A couple of key reasons for an app to be on the web.
- The application and data need to follow you around no matter what computer you are on.
- The data needs to be centralized and the amount of data that needs to be transferred to the client is reasonable.
A few reasons to use thick apps:
- Utilities that work on local resources.
- Apps that do lots of one time processing of data.
- Apps where data needs to be accessed when disconnected from the network.
Things I remember from the bad old days of deploying internal applications that weren't web-based: There was always a minimum of one computer that was set up so differntly that the upgrade wouldn't work. Sometimes more and the problem was different for each machine that wouldn't work. There was always a user who refused to install the upgrade until forced to by management (usually several weeks or months later). This ended up causing problems in the data at times becasue new businesss rules were not enforced.