-
I reckon web is harder, you have to worry about state, network, and pay more attention to things like loading, security the list goes on. How about the nightmare which is browser compatibilty, AJax, CSS arrghhh.
OTOH Because the desktop has less boundaries maybe design wise it is slightly harder as you have more capabilities - I don't agree with that though.
-
I think that each has their own massive complications that make them unique challenges and you will get a different answer based upon who you ask. Web programmers may think that desktop applications are harder than web projects simply due to unfamiliarity with the medium.
Desktop people may find that web apps are much harder to code for because they have to take into account a lot more design issues with CSS and communication using AJAX protocols.
-
I highly doubt web programmers need to know the winapi.I say GUI programming takes more time to be learnt.
-
Web development is harder in my experience, you don't have the luxury of maintaining state easily; plus you have to deal with the formatting issues (css is great but it is hard to master).
-
IMHO Web Develoment is more stressfull...you must fight with Internet Explorer non compliance to the standard, slow connection, strange css behavior, browser exploit.
-
With desktop applications you do not have to deal with issues such as application state in the same way you do on the web. HTTP is a stateless protocol, so it's the developer's job to identify how to maintain the current state of the application for the user's session. A desktop can can use TCP/IP and maintain a connection to a server.
With the web, it is very easy to create a compelling user interface, as you can add animations with Javascript, Flash, etc. It is more work for the developer when the application is data centric, and application state is an issue.
-
I get to work on both in my day job and can honestly say the only valid reason to develop a desktop app is because the user is not going to be connected at all times.
Distributing/maintaining a desktop app has problems that are always dependent on the user while a web app can be debugged without any involvement from the user. This should never be minimized as it can take an inordinate amount of time to debug a defect that one user in Idaho has that no other user has.
Development on the two takes a different mentality. Web is stateless by nature and desktop is statefull. When switching between the two I often get frustrated because I get use to one then try the same pattern/technique in the other and it fails.
Ultimately it depends on the problem you are trying to solve. If you can't stand up a web server then your options are limited. If you want users to use it in the wiles of West Virginia then you have few choices.
More information in the question would help as this question is almost too broad to cover.
-
Wow, I am surprised at the answers so far. I've done both, desktop in the past and almost all web now. I find web development much easier to develop, much easier to support and much much easier to rollout and deploy.
I would never choose to develop something on the desktop if there was any possibility of doing it on the web instead.
-
Most of the time developing web apps is a lot easier and makes one of the big problems - deployment and roll out of new versions, disappear.
You don't have to deal with different operation system versions, installed libraries, registry, COM, etc. You have different browsers to deal with, but it a lot less of a deal.
I can't imagine deploying desktop application to 2-3 Millions of clients every month - something that is working fine with web sites.
As far as development goes with web development you have :
- shorter execution paths
- less state to manage
- you hardly have to deal with parallelism yourself
- a lot less or none resources to manage - no OS handles
The only disadvantage is that it usually takes more to setup development machine and debugging of web apps was harder. With the current state of tools the debugging isn't that much of a problem any more.
So always prefer web app if it possible.
-
Desktop apps are the way to go. The current web technology (HTML, Javascript, HTTP, ...) was never designed with applications in mind. It was designed for documents. And you feel that with every line of code you write.
-
Both kind of apps have advantages and disadvantages. for instance, web apps might need to take different browsers into consideration and getting a usable UI is harder in web than in windows forms. However, web apps do have some advantages too. the first one that pops to mind is deployment and no need to worry about different platforms (just different browsers - yes, it's harder to develop for different platforms than for different browsers).
-
Most of the answers (so far, anyway) seem to focus on how easy or hard the choice will be to implement. The whole goal of an application, desktop or web based alike, is to serve the end user. That must be the starting point of the discussion.
Web apps simply cannot provide as rich and interactive experience as a desktop app in most cases. There are just too many limitations due to available widgets, network latency, the fact your app window must (typically) live within another application and so on.
That being said, many times interfaces don't need a large set of widgets, network latency isn't much of an issue, and running from within a browser window is an advantage. gmail and stack overflow are prime examples of web based apps that don't need a particularly rich interface.
So, when trying to decide which technology to use first consider the user. Do they need a high performance, rich UI? Do they need to be able to effortlessly share their data with others across the net? Is this an app they'll use eight hours a day or on just a casual basis? Will they use it mostly to edit local files or to collaborate with people across a network?
For those who say "web apps are always better", let me ask you this question: think about the tools you use every day. Your text editor, programming IDE, your browser, your email client. Which of those are web apps? Probably none, except for maybe your email client. There's a reason why you wouldn't want a web-based IDE for writing software (or writing a book, or doing serious image manipulation).
It all boils down to the user and what their goals are. Sometimes their needs are best met with a web based UI, sometimes with a desktop UI. Sometimes either will do. Of course you also need to weigh options such as distribution and update, cross platform availability, etc. but it all starts with the user and their goals. If you are focused on satisfying your end user the answer will likely become fairly obvious.
-
There are quite a few differences between the two which create challenges or benefits. For web applications:
- State - HTTP requests have no state and needs to be managed by passing session variables across all requests or cookies. This is an overhead in web applications and ASP.NET has often comes under fire for huge blobs of session data.
- Centralized - Pushing a change to a web application is as easy as updating the bits on the server versus desktop applications where patches have to be rolled out to all users. The centralized nature also makes it easier to do analytics and such. This is a big convenience. I recall GMail at one point fixed a security holes in under 4 hours. In contrast, there are still plenty of vulnerable unpatched windows machines out there.
- Architectural - fat server, thin clients make web apps platform agnostic. It also helps in managing balance... for example table sorting, error checking, mathematical computations or graphics (in the case of flash for example) can be done on either client or server depending on allocation of resources. Because of the thin client, it means that it is possible to completely overhaul the server without affecting impacting the client at all. This level of flexibility is really convenient.
- Security - Desktop applications run in a trusted environment where they are free to do anything where as web applications run in a sand-boxed environment which make them inherently more secure for the client. However, web applications require some amount of configuration as it pertains to certificates, activex controls and so on.
- Versioning - The cost of versioning is much higher for desktop applications. This goes back to the more tedious process of pushing out changes. And then again, jumping major version numbers means increased revenue by way of user upgrades. In web applications, the versioning is mostly for the developers themselves and it's much easier to do small iterative enhancements. That's the reason why desktop applications still adhere to waterfall development cycle because pushing out changes is costly and you must get it the first time. Desktop applications also have the cost of backward compatibility such as supporting Windows 98, XP and Vista or supporting older processors, drivers and so on.
- Environment - Web applications run in a predictable environment which again is very convenient. There are cross-browser development issues between IE/FF/Opera etc but it's much easier to test and debug than say running a complex application on a desktop system with varying graphics processors, anti-virus software or builds.
- Responsiveness - Web applications have slower responsiveness because of post-backs but AJAX has made this a whole lot easier and more fun.
I am sure there are many other points I am missing but that's my biased answer for web application development.
-
It all depends:
- What is your developer experience?
- What type of application you need to do?
And also - what you're calling web apps? Silverlight or Flash apps both can be done such way that you can use it from desktop or from browser. Ajax applications today not very different from desktop applications, but it's much harder to develop something not too simple with DHTML (even if you're taking frameworks like jQuery or even GWT).
Assuming HTML or DHTML as a web applications:
I've spent many years in web/ajax and desktop development and my experience is equal - I've done bunch of complex web application and desktop ones. Having good toolkit and tools for C# and enough experience I can create better desktop application than web one within same or shorter timeframe. But some type of applications CAN'T be done as desktop because it's a requirement to do them as a web apps.
Reasons why desktop development is simplier:
- Language type safety, code hints
- Performance of code x10-1000 + performance profilers
- No need to check everything in all browsers
- Informative exceptions with stack-trace, edit and continue
- Ability to use multi-threading (if you know how to use it)
- Overall predictability and stability of code
- RAD tools
For the very long time several advantages of web apps were:
- GUI Framework - HTML+CSS
- It's easier for users to start using it
- Content of applications can be found by search engines
Now we all have strong GUI Frameworks like XAML for WPF/Silverlight apps. Second point can be covered by Silverlight/Flash applications (which I'm treating as desktop ones). Third one can be done for RIA, but requires some effort (same applies to ajax apps).
If you're targeting something simple and don't know modern desktop/ria development tools and techniques that might be another good reason for developing web application. But as I've said - I hope it would be something simple.