Whether you’re building a software application for fun, designing them for your own small company, or architecting a major system in a corporate setting, it’s important to understand what type of application your next big project is going to be. Should it be a web application (thin client) or a client-server application (thick client)? The purpose of this post is to cover the major differences between each solution, discuss the resulting pros and cons for each, and then formulate a general rule of thumb for determining whether a particular software application should be built as a thin or thick client.
What exactly are thin and thick clients?
Web applications, sometimes called “thin clients”, perform business tasks through a web interface. This usually involves viewing and manipulating user data. These solutions are typically deployed on an intranet or extranet, with access restricted by user logins and passwords.
Client-Server applications, or “thick clients”, are desktop applications that reside on the client’s machine. The server side usually has a middle layer inbetween the client and the database which is called a “3-tier” solution.
Pros of Thin Clients
- Easy to distribute. If your users have a browser, they have access to your application.
- Can run in mobile devices.
Cons of Thin Clients
- Can vary wildly from browser to browser in terms of HTML rendering and JavaScript behavior. If you are developing an application intended for an audience without a standardized browser (like the general public) you will generally be developing an app that must be compatible with IE6, IE7, IE8, Firefox, Safari, and Google Chrome. This can add a lot of overhead to development time.
- Performs poorly when the app has extensive GUI logic and view manipulations.
Pros of Thick Clients
- Will run exactly the same from system to system.
- Will have access to system privileges.
- Performs very well when the app has extensive GUI logic and view manipulations.
Cons of Thick Clients
- Difficult to distribute and maintain software versions. Requires an overhead of version management and software updates.
Rules of thumb for choosing a software solution
If you are developing an application for the general public and the user interface is very light, you should definitely choose a web application solution.
If you are developing an app for a company that requires extensive GUI logic and view manipulations (like handling a large dynamic data cube or rendering complex 3D graphics) you should definitely choose a client-server solution.
*side note: you may also want to look into hybrid solutions called RIAs (rich internet applications) which are applications that are deployed like a thin client but don’t actually run in the browser (therefore making them browser independent). Adobe Flash 4 and Microsoft Silverlight are the two major competitors for this type of solution.