Smart Client Architecture
Published: 19 Feb 2007
A Smart Client is an application that uses local resources, utilizes XML Web Services and can be deployed and updated from a centralized server. It can work both in the connected and disconnected modes. This article discusses Smart Client Architecture in a lucid language.
by Joydip Kanjilal
Average Rating: 
Views (Total / Last 10 Days): 25998/ 58


In today's world of distributed computing and the emerging business requirements, the demand for smart client applications is growing rapidly. Smart Client Architecture is a technology that allows you to design and architect your application into a smart, flexible and convenient platform that utilizes web services for communication and leverages the benefits of Service Orientation to a large extent. Smart Client Architecture provides you the flexibility to design and develop applications with powerful, rich, and responsive user interfaces. It does so with little hassle of deployment and seamless update features. Typically we could have a Web Service holding everything and the Smart Clients consuming this service. The objective of this article is to introduce you to the intricacies of this architecture with discussion of the benefits and the related concepts and terminologies involved.

I would follow this article up with more and more articles that would discuss how we can design and develop applications in Microsoft .NET that can leverage the benefits of this awesome architecture. But, before we delve deeply into the intricacies of this architecture let us take a look at how this technology came into being, i.e., why this drift towards this technology emerged. Let us understand how the drift towards this architecture came into being from the time of the client applications that were designed and developed with the then popular developer tools like Visual Basic, Visual C++, and the like.

From thick clients to thin clients to Smart Clients

We are all accustomed to desktop applications of the past that were designed and developed for the Windows environments. These applications have had a rich user interface but had their limitations too. This section drills down at what these limitations were and how and why Smart Clients came into being.

As far as the client applications of the past are concerned, we have had an increased demand for client applications that can be executed in the Windows environments. We have an increased demand for rich client applications that could be developed with ease using some powerful tools like Microsoft's VB, VC++, etc. Using these developer tools, one could develop applications that could create executables that would run on any Windows environments, provided the necessary runtime libraries or DLLs were available. We could design and develop applications that had rich UIs too. These applications however suffered from a major drawback in their deployment (commonly known as the DLL Hell problem). They were quite difficult to deploy and maintain.

With these hindrances in mind, client browser applications which could be deployed and updated from a central location emerged. This reduced the cost involved in deploying and maintaining these applications. These applications had their drawbacks too. They were devoid of the rich UI that the rich client applications provided and had to be connected at all times for their operation. However, they were a good choice especially for their ease of deployment and management. Contrary to this, the rich client applications had their deployment and management drawbacks associated. Hence, the thin client applications continued to dominate the software development community for years.

The increasing demand by the global businesses worldwide for fast, flexible, efficient and responsive applications and the increasing demand for applications that support mobility, Smart Client Applications emerged. These applications provide a rich user experience, ease of deployment and ability to be updated from a centralized location. They can work in both online and offline modes and provide a fast and responsive UI.

Thick Client and Thin Client Applications

Let us now take a look at the basic features of thin client applications, thick client applications and Smart Clients. This section discusses the salient features of these applications in a nutshell. Thin client applications are easily updatable, deployable and manageable. However, they suffer from poor user experience, complexity involved to design and develop them and network dependence. Contrary to this, the Thick client applications provide a rich user experience, flexibility, responsiveness and offline capabilities. However they suffer from the complexity involved to update and deploy them.

Smart Clients -- combining the best of both worlds

Smart Clients provide a much rich user interface much like a traditional two tier application, with a seamless offline operation which was missing with these traditional applications. Smart Client Applications combine the best of both worlds. They combine the best of both fat and thin client applications. They use local resources, local processing, web services for communication and are flexible and can be deployed and updated from a centralized server seamlessly. Typically we could have a Web Service to hold all with the Smart Clients consuming this service. The Patterns and Practices group from Microsoft has come out with the Smart Client Architecture and Design Guide which "gives you prescriptive guidance on how to overcome architectural challenges and design issues when building smart client solutions. It also provides guidance on how to combine the benefits of traditional rich client applications with the manageability of thin client applications." You can take a look at this guide here.

The following are the basic characteristics of Smart Client.

·         Use of local resources and processing

·         Support for both online and offline operations

·         Ease of deployment and configuration

·         Use of Web services for communication purposes

·         Support for hot updates

Microsoft .NET provides ample support for designing and developing Smart Client applications in more ways then one. It solves the version conflicts (using assembly metadata, etc.) involved in storing multiple assemblies side - by - side. This allows the applications to be executed with the version of an assembly with which you had built and tested your applications. It also provides No-Touch deployment, hot updates features and high flexibility in securing assemblies (using cryptography, etc.) and providing specific permissions to an assembly; hence facilitating application stability. Further, you can leverage the rich UI of the .NET Windows applications to provide a powerful user experience, use SOAP based Web Services. Finally, you have Service Oriented architecture and with the introduction of .NET 2.0, you have more power, flexibility, management and deployment features than you can even think of.



Microsoft's white paper "Smart Clients in Business: Expanding the Edges of the Enterprise Network" rightly points out: "Smart clients exploit the power of today’s computing hardware, work online or offline, and access information in a standard way through the use of Web services, helping users and businesses respond to rapidly changing business needs. With smart clients, users don’t have to worry about where the data resides and how to get the data—they just have the data when they need it". This article has introduced the reader to the basic concepts of Smart Client Architecture, one that promises to be the technology of choice for the next generation of client applications. The forthcoming articles in this series of articles on Smart Client architecture would discuss how we can implement Smart Clients using Microsoft's Smart Client Application block or the Smart Client Software Factory and address the architectural challenges and the design issues involved for designing and implementing Smart Client Applications in Microsoft .NET.

User Comments

No comments posted yet.

Product Spotlight
Product Spotlight 

Community Advice: ASP | SQL | XML | Regular Expressions | Windows

©Copyright 1998-2022  |  Page Processed at 2022-01-20 5:32:38 AM  AspAlliance Recent Articles RSS Feed
About ASPAlliance | Newsgroups | Advertise | Authors | Email Lists | Feedback | Link To Us | Privacy | Search