Wiki Home

Smart Clients

Namespace: B2B

Smart Client Definition

Smart client (n) Definition: Smart clients are easily deployed and managed client applications that provide an adaptive, responsive and rich interactive experience by leveraging local resources and intelligently connecting to distributed data sources.

Smart client applications come in many shapes and sizes with varying degrees of functionality. One trait that all smart client applications share is an ability to exploit local resources such as hardware for storage, processing or data capture such as compact flash memory, CPUs and scanners for example. Smart client solutions offer hi-fidelity end-user experiences by taking full advantage of all that the Microsoft® Windows® platform has to offer. Examples of well known smart client applications are Word, Excel, MS Money, and even PC games such as Half-Life 2. Unlike "browser-based" applications such as Amazon.Com or, smart client applications live on your PC, laptop, Tablet PC, or smart device.

Smart client applications can be used whether you are online or offline. When they are online, smart client applications can provide an even richer experience. However, one of the key aspects of a smart client is they work exceptionally well, connected or not.


Smart Client Application Model and the .NET Framework 1.1


For the past five years, software developers targeting the corporate environment have faced a difficult tradeoff when deciding between the browser-based, thin client application model and its rich client counterpart.

The browser-based application is easy to install and maintain, can target many desktops, and has no impact on the state of the client computer. Yet in spite of these advantages, the browser-based model is far from perfect. Rich client applications provide a richer user interface (UI) along with access to the local disk and local application programming interfaces (APIs), further empowering the developer and resulting in a more productive user experience. Because they run locally on the client computer, rich client applications also make for more efficient use of available resources, eliminate the issue of network latency, and enable the user to work offline.

Overall, relative to the rich client, the browser-based model is wonderful for information technology (IT) administrators, but leaves much to be desired for both developers and end users. The Microsoft .NET Framework programming model serves the interests of all three parties. Its smart client application model combines all the power and flexibility of the rich client model with the ease of deployment and stability of the browser-based model.

This paper provides an overview of the .NET Framework smart client application model, explaining how it works from a high-level perspective, and elaborating on how this architecture compares with the browser-based model.

No More DLL Versioning Conflicts

Dynamic-link libraries (DLLs) built using the .NET Framework are not subject to versioning conflicts. In the past, these common problems were the bane of the systems administrator's existence. They occurred during installation when a new application replaced a shared DLL in the system registry with a different version that was incompatible with some of the other local applications referencing it, effectively breaking them.

By default, applications built using the .NET Framework are self-contained and isolated, resolving assemblies (the .NET version of components) from the local application directory rather than from a global or shared location. With this approach, multiple versions of the same assembly can coexist on the same system without conflict. Furthermore, there is no need to "register" any of the assemblies used in an application. This process is referred to as XCOPY deployment. With XCOPY deployment, to install an application on a computer, simply copy the application directory to the appropriate location on the target machine’s local disk, and it's ready to go. To uninstall, simply delete the application directory.

It remains possible to share assemblies, using a central repository known as the global assembly cache. Each assembly registered here is assigned a strong internal name, derived from its file name, version, culture (such as English, German, and Japanese), digital signature, and public key. Thus, each shared assembly is uniquely identifiable. This allows multiple versions of a given assembly to coexist in the global assembly cache and even run concurrently without conflict, a scenario known as side-by-side execution.

By default, applications bind to the strong name of the shared component that they were built against. Of course, if an administrator ever wishes to change this policy, perhaps in the case of a hot fix, he or she may do so by writing a simple publisher policy configuration file or by using the .NET Framework Configuration Tool, which ships with the .NET Framework.


Smart Client FAQ

The Smart Client FAQ puts you in touch with know-how and resources to answer your smart client questions, including relevant application blocks and Visual Studio Tools for Office (VSTO). If you’re building smart clients using Windows Forms or on the .NET Compact Framework, you’ll want to check out those new FAQs, too.


The Revenge of the Thick Client

If you have been involved in a new software development project during the last five years - and if you read this article, chances are you have - then you have probably been faced with the question "Web application or Windows® UI?" And in the vast majority of cases, the answer to this question was probably "Web application." For modern, enterprise-wide systems there were simply many reasons and issues that made it hard to implement the desired feature set in a conventional Windows application and deploy it in a reasonable manner. At this point, the advantages and disadvantages of each application type are well understood, and decisions are easy to make. Or are they?... (Read the whole article)


Well, it seems that there is also life outside the world of web based applications...

Contributor: Fernando Alvares (february 10, 2005)
( Topic last updated: 2005.02.10 02:44:04 PM )