Click here to Skip to main content
12,079,391 members (34,056 online)
Click here to Skip to main content
Add your own
alternative version

Stats

306.5K views
10.3K downloads
155 bookmarked
Posted

Building Smart Client using .NET

, 13 Jun 2004
Rate this:
Please Sign up or sign in to vote.
A Smart Client is an application that uses local processing, consumes XML Web Services and can be deployed and updated from a centralized server

What is a Smart Client?

A Smart Client is an application that uses local processing, consumes XML Web Services and can be deployed and updated from a centralized server. While the .NET Framework (Windows Forms) and the .NET Compact Framework provide the ability to develop Smart Clients with ease, other technologies can provide smart client applications by utilizing the same architecture. Smart Client is the concept of architecting your application solution into a smart, flexible and convenient platform that utilizes web services for communication.

Why do we need a Smart Client?

To understand the need lets see the pros and cons of both the existing architectures the Thin Client (Web) and the Thick Client (Desktop)

The Thin Client

The Thin clients or the Web application provided features like –

  1. Easy to Update – Single location update
  2. Easy to deploy – Single location Update
  3. Easy to manage.

If it had the above features then it also had the following issues –

  1. Network dependency – are usually Network based
  2. Poor user experience – mainly emit HTML
  3. Complex to develop.

The Thick Client

The Thick clients or the Rich client or Desktop Applications or Client/Server application provided features like –

  1. Rich User experience – by means of better user interface
  2. Offline capabilities – Need not be connected on a Network
  3. High Developer Productivity
  4. Responsive & Flexible

The Thick did provide the above feature but on the other hand they also had the following issues –

  1. Tough to Update – Each location needs modifications
  2. Tough to Deploy – Deployment had to be done at multiple location
  3. “DLL Hell”

A Smart Client

The above two architectures provide one feature while they lack the other. But a Smart Client combines the best features found in both the architectures.

Smart Client Features

A smart client would have the following characteristics:

  • Local Resource Utilization - A smart client application always has code artifacts on the client that enable local resources to be utilized. What do we mean by local resources? We mean everything from hardware to software resources. A smart client may take advantage of the local CPU, local memory or disk, or any local devices connected to the client, such as a telephone, bar-code/RFID reader, and so on. But it may also take advantage of local software, such as Microsoft Office applications, or any installed line-of-business (LOB) applications that interact with it.
  • Connected - Smart client applications are never standalone and always form part of a larger distributed solution. This could mean that the application interacts with a number of Web services that provide access to data or an LOB application. Very often, the application has access to specific services that help maintain the application and provide deployment and update services.
  • Offline Capable - Because they are running on the local machine, one of the key benefits that smart client applications offer is that they can be made to work even when the user is not connected. For applications running in occasional or intermittent connectivity situations, such as those used by traveling workers or even those running on laptops, tablets, PDA's, and so on, where connectivity cannot be guaranteed at all times, being able to work while disconnected is essential. Even when the client is connected, the smart client application can improve performance and usability by caching data and managing the connection in an intelligent way.
  • Intelligent Install and Update - Smart client applications manage their deployment and update in a much more intelligent way than traditional rich client applications. The .NET framework enables application artifacts to be deployed using a variety of techniques, including simple file copy or download over HTTP. Applications can be updated while running and can be deployed on demand by clicking on a URL. The Microsoft(r) .NET Framework provides a powerful security mechanism that guarantees the integrity of the application and its related assemblies. Assemblies can be given limited permissions in order to restrict their functionality in semi-trusted scenarios.
  • Client Device Flexibility - The .NET Framework together with the .NET Compact Framework provides a common platform upon which smart client applications can be built. Often, there will be multiple versions of the smart client application, each targeting a specific device type and taking advantage of the devices unique features and providing functionality appropriate to its usage.

Let us look at one of the very important features of Smart clients – Intelligent Install and Update.

Intelligent Install and Update (Easy Deployment)

Smart client applications manage their deployment and update in a much more intelligent way than traditional rich client applications.

Components

A Smart client application will have two components

  1. A very thin client application to be installed locally
  2. The actual application hosted on a Web Server build using Strong named assemblies

Process involved

When the user opens a Smart client Application –

  1. The User opens the Application.
  2. The application references a assembly hosted on a Web Server
  3. The .NET Framework checks if the previously downloaded assembly is the latest one.
  4. If not downloads the latest version from the server, loads the assembly locally and launches the application.

Advantages

Any updates to the application, a single change and the changes will be reflected to all the clients when they are launched the next time. This is called a smart client.

Lets see the Client Application Code –

using System;
using System.Reflection;
using System.Windows.Forms;
namespace MySmartClient
{
  class SmartClient
  {
    [STAThread]
    static void Main(string[] args)
    {
      SmartClient objSmartClient = new SmartClient();
      
      //display splash screen
       Splash  splash = new Splash();
      splash.Show();
      Application.DoEvents();

      // Set the URL to load the Assembly from
      string strURL = "http://Server/Smart/Bin/Release/Smart.exe";

      // Set the class to call
      string sClassName = "MySmartClient.SmartForm";

      Assembly assemblyContent = null;

      try
      {
        // Load the assembly
        assemblyContent = Assembly.LoadFrom(strURL);
      }
      catch(Exception e)
      {
      }
      splash.Close();
      // Create a object for the Class
      Type typeContent = assemblyContent.GetType(sClassName);
      // Invoke the method. Here we are invoking the Main method.
      try
      {
        typeContent.InvokeMember ("Main", BindingFlags.Public | 
          BindingFlags.InvokeMethod | BindingFlags.Static, null, null, null);
      }
      catch(Exception e)
      {
      }
    }
  }
}

This is all that would be installed on the client. The actual application will be available on the Server. First time the client application is launched, the .NET Framework will download the required assemblies locally. Henceforth every time the application is launched, the .NET Framework will check for the version of the assemblies, if the server has a latest version, it will downloaded or else the locally available assemblies will used to launch the application. This way, any updates to the application can be handled easily at one location, thereby making the deployment of application easy.

Download the client side application and the Server application from the link above.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

Share

About the Author

Diws
Web Developer
United States United States
No Biography provided

You may also be interested in...

Comments and Discussions

 
QuestionSmart Client definition Pin
Member 1042122111-Sep-14 6:42
memberMember 1042122111-Sep-14 6:42 
Questionoffline smart client application in c# Windows Application Example Pin
sambhajipwr25-Sep-13 22:12
membersambhajipwr25-Sep-13 22:12 
GeneralHello Everyone!!!!! Demo Solution is not working for me!!! Pin
vaibhav.s.jain23-Jun-10 21:23
membervaibhav.s.jain23-Jun-10 21:23 
GeneralSmart Client SCSF application takes time to load Pin
sakshismriti23-Jul-09 2:58
membersakshismriti23-Jul-09 2:58 
QuestionIs the assembly loaded every time? Pin
Member 23161828-Apr-08 1:26
memberMember 23161828-Apr-08 1:26 
Question.Net Smart client application Pin
prabhu_sap17-Oct-07 18:44
memberprabhu_sap17-Oct-07 18:44 
QuestionHow to deploy Smart Client Apps? Pin
Venkatesh Mookkan2-Aug-07 2:30
memberVenkatesh Mookkan2-Aug-07 2:30 
GeneralSmart Client security settings Pin
tarunbounthiyal15-Jul-07 22:00
membertarunbounthiyal15-Jul-07 22:00 
QuestionSmart client Pin
srinivas_gummadilli10-Nov-06 0:03
membersrinivas_gummadilli10-Nov-06 0:03 
GeneralUsing Web Services Through Smart Client Pin
g_sandipan9-Nov-06 22:57
memberg_sandipan9-Nov-06 22:57 
GeneralHelp me developing Smart client application Pin
VijayaRam10-Oct-06 22:03
memberVijayaRam10-Oct-06 22:03 
GeneralRe: Help me developing Smart client application Pin
Pete O'Hanlon10-Nov-06 0:38
memberPete O'Hanlon10-Nov-06 0:38 
GeneralRe: Help me developing Smart client application Pin
Prem Alva24-Jan-07 23:00
memberPrem Alva24-Jan-07 23:00 
QuestionCreating asp.net controls dynamic Pin
Mady_hamdy21-Jun-06 6:34
memberMady_hamdy21-Jun-06 6:34 
Generaldependent assembly Pin
eeraymond10-May-06 21:45
membereeraymond10-May-06 21:45 
GeneralRe: dependent assembly Pin
Dave Bacher6-Jun-06 8:40
memberDave Bacher6-Jun-06 8:40 
Questionabout demo code given by you... Pin
Its_Amol7-Apr-06 22:32
memberIts_Amol7-Apr-06 22:32 
GeneralSmart client app that functions similar to Outlook 2003 Pin
darule3-Feb-06 11:52
memberdarule3-Feb-06 11:52 
QuestionAbout the Building Smart Client article Pin
sushmakatneni16-Sep-05 20:14
membersushmakatneni16-Sep-05 20:14 
Questionhow database query will be handlled thru smart client Pin
gotoneelesh8-Sep-05 4:17
membergotoneelesh8-Sep-05 4:17 
QuestionException when network connection unavailable! Pin
Webdiyer29-Aug-05 17:44
memberWebdiyer29-Aug-05 17:44 
AnswerRe: Exception when network connection unavailable! Pin
Greg Osborne12-Sep-05 8:34
memberGreg Osborne12-Sep-05 8:34 
GeneralRe: Exception when network connection unavailable! Pin
SimesA18-Mar-09 5:23
memberSimesA18-Mar-09 5:23 
GeneralDetail smart client articles Pin
Omar Al Zabir31-Jul-05 9:01
memberOmar Al Zabir31-Jul-05 9:01 
GeneralExcellent explanation what a Smart Client is about Pin
Anonymous11-Jul-05 13:09
sussAnonymous11-Jul-05 13:09 
GeneralIIS Setup Pin
BearsChoice24-Mar-05 6:41
memberBearsChoice24-Mar-05 6:41 
GeneralRe: IIS Setup Pin
robert heaney28-Mar-05 22:57
memberrobert heaney28-Mar-05 22:57 
GeneralRe: IIS Setup Pin
MSwati17-Oct-07 4:01
memberMSwati17-Oct-07 4:01 
Generalvb.net version Pin
robert heaney24-Mar-05 3:43
memberrobert heaney24-Mar-05 3:43 
GeneralRe: vb.net version Pin
Matt J5-Apr-05 9:51
memberMatt J5-Apr-05 9:51 
GeneralRe: vb.net version Pin
robert heaney7-Apr-05 4:34
memberrobert heaney7-Apr-05 4:34 
Generalproblem when we have DLL's involved Pin
A. Samar3-Mar-05 4:27
memberA. Samar3-Mar-05 4:27 
GeneralHelp needed Pin
raghavendra .K27-Feb-05 19:09
memberraghavendra .K27-Feb-05 19:09 
GeneralCode access security Pin
Senthil Kumar Selvaraj23-Nov-04 3:14
memberSenthil Kumar Selvaraj23-Nov-04 3:14 
Generalsmart client limitation Pin
uttam_8026-Aug-04 5:56
memberuttam_8026-Aug-04 5:56 
Generalcache does not refresh Pin
SamJost22-Jun-04 23:23
sussSamJost22-Jun-04 23:23 
GeneralRe: cache does not refresh Pin
Sumeet Zade23-Jul-06 23:35
memberSumeet Zade23-Jul-06 23:35 
GeneralShow version Pin
Gerhard Kreuzer21-Jun-04 22:10
memberGerhard Kreuzer21-Jun-04 22:10 
GeneralMaintenance and deployment Issue Pin
Anonymous21-Jun-04 16:34
sussAnonymous21-Jun-04 16:34 
GeneralRunning the Application Pin
Anonymous16-Jun-04 23:07
sussAnonymous16-Jun-04 23:07 
GeneralRe: Running the Application Pin
Gerhard Kreuzer21-Jun-04 22:15
memberGerhard Kreuzer21-Jun-04 22:15 
GeneralJava Web Start Pin
mjericho16-Jun-04 16:02
membermjericho16-Jun-04 16:02 
QuestionDependent assemblies? Pin
DaveKolb16-Jun-04 3:48
memberDaveKolb16-Jun-04 3:48 
Generalnice, but have some question Pin
big_onion15-Jun-04 20:51
memberbig_onion15-Jun-04 20:51 
GeneralGood article Pin
Nishant S14-Jun-04 18:48
staffNishant S14-Jun-04 18:48 
GeneralRe: Good article Pin
Paul Selormey14-Jun-04 19:48
memberPaul Selormey14-Jun-04 19:48 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Terms of Use | Mobile
Web03 | 2.8.160212.1 | Last Updated 14 Jun 2004
Article Copyright 2004 by Diws
Everything else Copyright © CodeProject, 1999-2016
Layout: fixed | fluid