Many people I talk to, believe "pure" SaaS applications are always delivered through a web user interface. I believe this is a limiting definition and a dangerous constraint too. SaaS and Web are related but not dependent concepts and our guidance is that you choose the right UI technology to better serve your customers. I mentioned this some time ago here.

There's proven record on this. Even Microsoft competitors are offering richer client alternatives for scenarios that make sense: Google Gears, Adobe, etc. 

In order to illustrate this, we've been working for the last month on creating a richer client experience for LitwareHR. We are not quite done yet, but we are close.

The scenario we used for inspiration is that of an advanced HR manager using LitwareHR. A "power user" dealing with many open positions, being able to open new positions and evaluate candidates regardless of his connectivity to the network.

The value proposition of LitwareSC is:

  • Rich visualization of data
  • Network connectivity resilience

Not all functions are available on the Smart Client though. Site customization, configuration and extensibility are only available through the (private) web site. The assumption is that the HR Manager will very infrequently perform these tasks. On the other hand, managing positions and evaluating candidates make up 20% of the possible operations that an advanced user will do 80% of their time, and the smart client allows him to do it very efficiently.

LITWARESC-SCENARIO

Figure 1: Litware Smart Client scenario - Contoso as an example

 

From an architecture point of view, here are some things to highlight:

  • LitwareSC design is based on the Composite UI Application Block and the Smart Client Software Factory. These provided us with a robust and extensible architecture and with lot's of reusable pieces we needed for this scenario (like the offline and WPF support). It also allows re-hosting the solution in different shells, besides the standard one (e.g. embedding LitwareSC in Outlook or other applications).
  • All views are based on WPF for better and richer visualizations. Most of the views are simple anyway, but in a couple we used some really cool visuals (check Figure 3)
  • We have not added or changed anything on the current LitwareHR Web Services.
  • The local database, used for offline storage, is based on SQL Compact Edition.
  • Communication with the Web Services is done through "Disconnected Service Agents", that handles all requests queuing and asynchronous notifications.

LitwareHR-SC high level architecture is illustrated in Figure 2 below. 

LITWARESC-ARCH

Figure 2 - LitwareHR Smart Client Architecture

After the first login (which requires connectivity of course), the application customization options are downloaded. This includes the company logo, any entity definitions (like extensions to the Positions), etc. All this information together with the entities instances are retrieved and stored locally.

The "Browse Positions" option uses a very cool WPF control which is based on one originally written by Kevin Moore (PM in the WPF Team). The original one can be found in Kevin's bag-o-tricks: FlipTile3D.

Which renders this view in our preliminary prototypes:

LitwareHR-SC-SCREEN

Figure 3 - Early LitwareSC screenshot

 

I want to thank my friends at patterns & practices, Blaine, Glenn and Matias for their support; and the fearless Bluestar Infotech dev team led by Pankaj for cranking this sample in record time.

I'll post an update (and the code) when we complete the development.