I admit it. I'm guilty. When a client starts talking about the new application that they need, I automatically start thinking about it as a web application. When I visualize pages, I automatically visualize them as web pages. It's what I've been conditioned to think. Everything I have heard for the last five to seven years has been how the web is going to change everything.
However, as I listen to my clients, I start to think of other interfaces that may serve their needs better than a web-based solution. I have to put away my preconceived notions of web-based solutions and give some real thought to the best possible solution. It's a fight that I don't always win, but it's one that I know all of us face on some level.
When FedEx first launched their package tracking application (which instantly informs you of your package whereabouts), the world became a different place. The idea that you could hook a barcode scanner to something mounted in the truck and radio that transmitted data into central headquarters was revolutionary. More importantly, the idea of creating a level of comfort for your customers simply by letting them know their package location, is a focused business solution that required new thinking. The Internet was still in diapers, and it wasn't all that popular.
However, by evaluating what they needed to provide to be competitive, and being innovative in the way that they provided that information, they were able to come up with a great platform for their success. Similarly, we need to evaluate what is the right option for each application - and not get hung up on the traditional thinking about how to solve the problem.
The Internet and web-based technologies have given us great freedom. We've seen the problem of deploying software to every machine nearly vanish. Problems with DLL conflicts have gone "Poof." Rolling out updates can happen at the speed of the compiler.
However, with all of these advantages, we've given up a great many things that made the PC popular in the first place. Gone are the rich displays that search the database as you type. Gone are the fancy drag and drop interfaces or the real-time animations of what is happening. No longer can you be reasonably assured that your code hasn't been altered. Add to that the necessity of some communications tether, or ball and chain, whenever you're using the application and it becomes apparent that we've lost a lot in the transition to a web-centric way of thinking.
Still, not many people are willing to go back to the old days of client/server applications, where initial deployment is a real issue and modifications might require a bank heist to finance work on the applications. Most old client/server applications were downright unfriendly to the enterprise.
However, a hybrid application has evolved out of the web technologies and the traditional "fat client" approach taken by client/server applications. These applications, dubbed "smart clients," separate them from the client/server applications of the past. They utilize web technologies to communicate, replicate, and persist information, but at the same time, support rich interfaces and the ability to work disconnected.
Smart clients are clients that know how to work while connected to the network and while disconnected. They contain pools of information replicated from a master database, controlled by an application that receives updates to it from a central web-based server. Changes made to the application's local pool of data are merged with the master database the next time the device is connected to the master server.
Smart clients appear the same, whether connected or disconnected, and manage the replication of data to and from the central server automatically without disrupting the user's connection.
The most common way of thinking of a smart client is in a PC. The client runs on top of the Microsoft MSDE engine, which can natively replicate to and from MS SQL Server. It checks a web server when it starts up to determine if it needs to update itself. Of course, their application has to decide if it can continue without the update, or if it has to wait for the update to be downloaded. If it finds the server, it may start the process of replicating data to the server and retrieving data updates.
An uncommon way of thinking of smart clients is to look at mobile devices such as phones and PDAs as platforms for enterprise applications. With Microsoft's release of Pocket PC Phone Edition in 2002, new options were available to the corporate developer to support field force and sales staff. Smart clients on PDAs may store less data than PC's because of their decreased storage capacity, but may be more in sync with the corporate office by "trickle syncing" with the office when a cellular connection is available or when they drop into a cradle.
PDA based smart clients can be a great asset; however, they come with their own set of problems. With a screen size of just one quarter the size of the original Windows 3.1, getting space to see what you're doing for data entry is not an easy task. Couple that with the lack of a keyboard on most devices and it's easy to see that they are largely data retrieval devices and probably won't work well as data entry tools, except for specialized cases. Still, their size means they are very portable and are convenient for traveling staff that need to stay connected.
There's more to the world of applications and solutions than can be quantified by just talking about the web. Options other than web-based solutions may be more appropriate for specific problems. Fight the natural urges to frame new problems in the same way you framed the old ones - consider exploring various client platform options first.