As developers, we usually don't get things exactly right the first time (gasp!). As we move from project to project, we are always learning. To help make those learnings stick, it's useful to go back to old projects for review. When we review an old project, we can take a new look at how we implemented certain functionality, what worked well, what could use some improvement, and what things we would never do again.
With that in mind, I'll be taking a look at an application that I built several years ago. This was a business application in Silverlight. The primary development work was done in Silverlight 2; Silverlight 3 came out right as I was in the final development stages. I've replicated the UI in the XAML Tips application that I used a few articles ago: XAML Tip - Gradient.
You can see the replica application in action here: XAML Tips Sample Application. The code will be made available as we look at some of the specifics.
This was the first Silverlight application that I put into production. As such, it came out as a hybrid between a web application and a WinForms application. The primary goal of the application was to check the feasibility of using Silverlight in our environment. The business logic of the application was well defined (and rather simple). This made it a good candidate to try some unfamiliar technologies: Silverlight and CSLA for Silverlight.
CSLA is a business object framework that I used for many years with great success. I won't be talking about CSLA here, but you can get tons of good information at http://www.lhotka.net (or just start a web search for CSLA). CSLA for Silverlight is a bit different from the full .NET version I had been working with -- things like asynchronous web service calls and no direct data access on the client (this was the world before RIA Services, too). CSLA for Silverlight worked out very well for this project, and I highly recommend it for the right types of projects.
The Good, the Bad, and the Ugly
Since this was my first real-world application with Silverlight, it wasn't perfect. There were some things that worked very well, and I have used again and again. There are some things that worked well for this particular application but need some improvement to make them work better with other applications. And there are some things that are nothing but kludges.
In looking at the different features of the UI (we won't be looking at the business layer for this review), we'll look at the pros and cons of the implementation of each UI feature. And hopefully, we'll see how we can improve on them.
- Form Manager - responsible for managing the different forms/pages of the application that get loaded into the client area.
- Close Query Interface - works with the Forms Manager to give the current form a chance to prevent itself from closing (for example, if there is unsaved data).
- Pop-up Message - gives the user status messages from the application in way that does not require a user action.
- Please Wait Screen - stops the user from interacting with the application while certain types of functions are running.
So, get ready to see some creative techniques to different problems. And if you have anything to add to my review, be sure to send them along in the comments.
Until then, feel free to take a look at the application: XAML Tips Sample Application.