Showing posts with label ClickOnce. Show all posts
Showing posts with label ClickOnce. Show all posts

Tuesday, February 19, 2008

Building The "Right" Solution

ASP.NET vs. SmartClient

About a year ago I was 100% positive that SmartClient* architecture was the way to go for a system I was tasked with building. The requirements called me to build it using ASP.NET but I knew it would be the wrong approach and not provide the interface and performance enhancements the users were looking for.

Making the case for such a drastic change was not easy, people were comfortable with ASP.NET and deploying Windows Applications brought back to many bad memories of installation and maintenance nightmares. Most of the bad memories were simply “legacy ghosts” and not real issues with the approach I was suggesting, a SmartClient.

Being fairly focused on delivering the best solution and experience for my users I decided to peruse getting approval for my architectural approach. After some consideration the best strategy I found was to build a series of prototypes supported by presentations that made my case.

Enter the Prototype

The first series of prototype’s and demos focused on User Interface enhancements and easy deployment/Maintenance using ClickOnce technology (hence the SmartClient references). During my demos of these prototypes it was clear the a Windows Application with in-memory caching, powerful and responsive grids, combined with the “feel” of a Windows App served the interface requirements very well.

Deployment was also an impressive “one click” implementation as long as the machine had sufficient rights to install an App and the .NET Framework. One concern we had to overcome is that many machines did not have the .NET Framework 2.0 preloaded. To solve this we merely had our field technicians deploy the Framework to all computers that needed it, while others simply self-installed it using an FAQ we provided.

(Admittingly the desktops Framework deployment and maintenance was not a huge issues since we controlled all the users desktops involved, there were not that many of them and Citrix was our backup.)

Another major concern we had to overcome was connectivity. The application had to be responsive on the various users desktops/Physical locations while querying web services located in our server farm out of NYC. To test this I created a simple application that would check the rate at which data was transferring between the client and the web services back-end. This test application was executed from all the key locations around the country and we found no significant latency issues to be concerned with.

Its Deployed and it Works

Today the users of this application enjoy a powerful interface of a locally installed full fledged windows application and they are happy with its usability and performance

On the IT side the SmartClient ClickOnce upgrade model is working without issue keeping the pressure off our technicians.

This is exactly the kind of success story that makes .NET a powerful platform with hundreds of solutions and options to meet the requirements of the business while at the same time making the end users and IT pros happy.

Special Thanks: My Development Team

This application would NOT have been successful if it was not for the hard-work and good coding put into it by my local development team and our our-sourced resources. While I pushed for this approach they are the ones who made it possible in the end. Thank you guys, you know who you are.

(* The concept behind SmartClients if anyone is unfamiliar is a Winform Application that is deployed to user’s desktops using ClickOnce technology. ClickOnce then maintains the application at the latest published version automatically either on start-up or shutdown of the application, depending on configuration. This of course is a simplified explanation and you can get all the details here: SmartClient FAQ)