A Subject Close To My Heart
James Robertson posted the following on his website: This is when you want a client application.
I've always believed that too many people are trying to make the web paradigm fit for all cases. I don't think it does. It boggles my mind when people want applications internal to a company to have a web interface, but have a complex UI. I only ever get 2 reasons for this. The first is that it lowers maintenance costs because you don't have to deploy to multiple clients and the second is that it's the cool thing to do. On the first issue, you gain in not having to worry about multiple deploys, but, you lose a flexible/rich GUI and having to test on a lot of different platforms. Now, in an internal application, this can be helped by requiring everyone to have the same web browser, but I think you still have the same kinds of cross platform issues that you have with web browsers (even between versions of the SAME web browser!) that you do with a rich client (OS issues). So, now, you have the same cross platform problem, your client is thinner, but less flexible. I don't think everyone weighs these options before deciding to go down one path or the other. Besides, if you do your job right as developer and seperate your GUI from your domain, then you should be able to reuse your domain for a web front-end if the need truly ever arises (they want to make a part of that internal app and make it external to the world, for instance).
Now, you might think I'm totally against web front-ends....I'm not, I just think you should weigh your options and what you're are trying to do before picking a path. There are problems with rich GUIs that are equally frustrating. But, I think each application should make the decision and know why. I think a lot of people just pick a path because it's cool or it's what everyone else is doing. We need to, as an industry, get out of that mindset. Just remember: a clean seperation between GUI and domain is more important now than ever. The GUI application you are building today could possible be a web application for tomorrow and vice versa.
Anyway, excellent article and you need to go read it now!