Monday, March 19, 2007

Smart Clients and Web Clients

I don't think there's an accepted strategy on the smart client / web client decision. Smart clients are desktop applications that get their data from the internet and have a reputation of being more powerful and easier to use while web clients don't need to be installed and are easier to update. With AJAX, great design and clever Javascript, the web can provide as much functionality as a smart client. Similarly, web services can let smart clients use the same real-time data as well as clients. So which is better?

Let's not ignore the possibility of both. Would it be good if we had a choice? We could use the smart client at our main computer and the web client on the road. Well, if we have a web client, why do we need a smart client? Is the UI so complex that there's a significant advantage to a smart client?If so, maybe the solution is to make the UI simpler. Also, would they work the same? There are toolkits like Visual WebGui or GWT that may let us use the same UI for both clients, but if the smart client isn't significantly better, we may as well not create it. They also don't work very well; the web and desktop aren't the same and aren't easily abstracted away. Throw in the extra work for creating two clients, regardless of whether they use the same UI toolkit, and this is a no-go.

Except for one situation, I'll go with the web client, especially in the long term. Web UIs are simpler and allow for more branding. They're easier to get working for different operating systems and it's the platform that is improving faster. There's Flash if you need a complex UI. The main problem that I see is that good UIs are difficult to create. AJAX is necessary but it isn't an easy concept for developers to grasp. This is slowly being alleviated through new libraries such as Prototype, ASP.NET Ajax and Flex; I believe it's worth putting the effort into the web client and it will be easier to benefit in the near future.

The situation that I'd go with a desktop client is if there's a compelling technology that's not available on the web. 3D is a good example of why games on the web are generally puzzle games or simple action games. WPF is possibly the only technology that makes a smart client desirable, and that's not insignificant because it's a very nice library. I'd say that audio (music) is another thing the desktop does a lot better than the web, but sites like Slacker and Pandora have web-based music players that are pretty good.

In short, I'd go with the web client unless it's prohibitively expensive.

No comments: