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.