views:

611

answers:

8

What are the advantages and disadvantages of one model and the other? Why and when would you choose one or the other? If you were going to build a business application, which is the best approach for you?

To make this a fair question, is better if you post only quantified non-subjective answers.

+1  A: 

desktop applications are:

  • slow turn-around (not patched as often)
  • work with files on local machine and in the cloud
  • normally manually patched

web applications are:

  • fast turnaround, SaaS-based
  • don't work with local files
  • essentially, available from anywhere
  • limited in functionality (graphics etc)
Luke Schafer
I agree on everything except the turnaround. I would argue that in certain languages it's far faster to do a desktop app than a web app.Also, in the functionality it's important to think about speed from keyboard shortcuts and those limitations. For data entry -- they lose a considerable amout of speed computer to a desktop application because they *have* to go to a server after every page whereas a desktop app can cache it in memory and wait to save.
Nazadus
in terms of initial deployment and usage, you're right. I was talking about 'patching' though. SaaS beats Shrink-wrap in patch speed :)
Luke Schafer
A: 

Desktop apps used to offer richer interaction, but this is getting less and less true with the development of more and more "rich internet application" frameworks. Web apps offer easier deployment, upgrading, etc -- and, these days, support offline operation, too -- so I'd tend to go for a web app by default unless special circumstances demand a desktop one.

Alex Martelli
A: 

You may want to listen to this podcast

Herding Code 47: Joe Brinkman on Webforms vs ASP.NET MVC

http://herdingcode.com/?p=183

I haven't listened to it yet but they often have thoughts worth considering.

Jiminy
It is Desktop vs. Web, no Web vs. Web
Eduardo Molteni
A: 

Desktop apps are definitely richer, but I say web apps are definitely a better choice when delivering business products: their availability is a very attractive advantage over normal desktop apps.

Plus, with modern web app frameworks, you can make web apps quite as rich as desktop apps, if not as responsive. GMail is a star example of that :)

Here Be Wolves
+8  A: 

Web applications solve SOME (not all) problems better and more easily than desktop applications.

In favour of Web Apps:

Deployment: As far as the client is concerned, web apps are zero click deployment. Nothing to download, nothing to install, just go to the web site.

We supplied a desktop app for calculating income compensation to our clients for free. Accurate calculation is required by law, so they had reason to use it, but only 30% did. Now it is a web application and 95% use it.

Updating: Web apps are always up to date. With desktop apps it is always a struggle to get users to upgrade to the latest, fixed, version.

Friction: I sell shareware apps on the side. In order to get someone to buy my software, I need them to download it, install it, try it, go to the web site and then pay for it. As a web app, they can find it, run it, and pay for it without leaving the browser. Whether this will give me more sales is open to questions, but I would like to know.

Connectivity Web apps are, by definition, online. It is trivial to share data between multiple users in different locations. Doing this for a desktop app is harder.

Cross platform Web apps run on nearly anything from a phone on up.

Subscriptions:) It is easier to sell a web app on a subscription. Users aren't so keen on this for desktop apps.

In favour of desktop apps:

Performance: In my experience, desktop apps perform better than web apps. E.g. my income compensation calculator is faster on the desktop than on the web. This can be mitigated by ajax and clever programming. In some cases, eg heavy server side calculations that can be farmed out to a server somewhere, a web app can be faster e.g. Searching your emails in gmail.

Functionality: Desktop apps still have the edge here. Web apps are gaining here, but still behind for now.

Offlineability: Still important for some. It is possible to get web apps working offline with gears etc but it adds a degree on complication to building it.

It depends on what you want to do, and who you want to sell it to. Photoshop won't be web based for a while yet, but Stack Overflow would be pointless as a desktop app..

Finally Balsamiq mockups is available as a RIA, and as a desktop version. In interviews, the own states that the bulk of sales are coming from the desktop version.

SeanX
Nice work, SeanX! I think that this is a very good summary of the different pros/cons.
Steve Harrison
By the way, Adobe is already trying "Photoshop Express" (https://www.photoshop.com/express/), which you could say was a web-based version of Photoshop (although it's still fairly basic and is in no way a 'replacement' for the full desktop version of Photoshop).
Steve Harrison
+1 for deployment, you can be up and running quickly after a serious incident for machine format, no need to look for installation files for your application.
gath
Web apps are not necessarily always up to date. For example, if you are serving financial software you will still struggle to get clients updated to the latest version. Institutions will want to test every update you make before it is live just like with a traditional desktop app.
TheJuice
A: 

Why does it have to be one versus the other? You could possibly develop a web app that is run on a desktop machine (via a local web server).

sybreon
+1  A: 

Desktop applications have historically been single-tier or two-tier (client/server) applications, although it is possible to write them three-tier. Most of the program logic resides in the presentation tier (the User Interface). Because of this, desktop applications can be more interactive, employing a richer user interface. It's fair to say that programmers can (and do) effectively write desktop applications in a single language. Desktop applications can be written more quickly than web applications.

There is no formalized testing framework generally available for desktop applications, since the program logic is tightly coupled to both the presentation layer and the data layer. Desktop applications generally require an installation program, which can make deployment costly and time-consuming, especially if there are thousands of clients.

Web applications use a thin software layer (typically a web browser) as a presentation layer. Because this interface is standards-based (in theory), it can be loaded on every client machine once, and used for any web application thereafter. In practice there are numerous differences between browsers of different manufacturers that make programming them far more difficult than it should be (although this is gradually getting better with improved browsers and the availability of cross-browser tools such as jQuery). Web application programmers must master many different programming languages to be effective.

Web applications typically employ three or more tiers. Web applications are more easily distributed, and scale better, because these tiers (presentation, business logic, data access) can be more easily separated and placed on different machines. Web applications (at least the Model-View-Controller type) tend to be more testable. Since web applications speak the language of the internet, connecting them together is more straightforward (the middle tiers, anyway).

Nowadays, the differences between web applications and desktop applications have become blurred, as it is now possible to swap out the presentation layer, and still maintain separate business logic and data layers. For example, if the middle tier is written properly (i.e. using web services or REST), and a web browser proves inadequate, a Silverlight client can be substituted. Similarly, WPF applications can work with the same middle tier.

Robert Harvey
A: 

I am not objective and I do not pretend to be. We are building a framework that targets exactly the subject of this discussion – desktop on web and vice versa. A framework that let you code VB6 like – design UI like Web 2.0, with desktop performance and one more thing that was not raised here – secured like desktop. Sounds autopsy, check it out in the most objective way and share your experience with users here. The framework is Visual WebGui. Cheers.

navot