WPF: My Rollercoaster ride
May be the title does not match with my topic, but I do not found more appropriate title than this. I know, it is too late to share my first experience about WPF, but I like to share it with you. In here I am going to talk about few point, first one is why we try WPF, second what are the challenge we have faced and last but not the least what lesson we have learned.
Why we try WPF?
Before get into main point, please allow me to highlight the background. I have heard about the WPF in mid of 2008. Microsoft brings lot of “W” (WPF, WCF, WF) in .NET 3. So that time we were just identifying those frameworks. Before a project we had prepared a report about WPF for select the technology. In that time, we had noticed a feature in WPF: WPF standalone application and WPF Browser hosted application. We keep that in our mind but reject the WPF that time for that project for insufficient resource, skill and framework maturity.
After six months later we took that report, review it again and persuade our supervisor to do that project version 2 in WPF.
Now why we had select WPF for version 2 for that project is the main point. First version was built in ASP.NET. Let’s make a note what we are needed to learn if you want to make RIA application in ASP.NET: HTML, JavaScipt, C# (or any CLR language) and CSS. Did I miss anything else? Please put it. Now you have a small (3-4) development team. They’re skill is upper than beginner but not in expert level. I never believe that one person can become expert more than one language at a time. You don’t have more than six-eight months for that project. Now what is in your mind? Fire all of your exiting developer and get new staffs!! By the way, I had forgotten to tell that you have to build a desktop version of the application in same time.
Now let’s make a note what we need to learn if we chose WPF: XAML, C# (or any CLR language) ….. … … I think nothing left. Help me to remember if I miss anything. In the same development time you can get a desktop application and browser hosted application. You just need to learn XAML from scratch.
I think now you can understand why we try WPF. We had chose WPF browser application, but after the deployment, we understand the difference between the browser hosted application and standalone application more clearly. We made a mistake but it does not cost us too much.
What are the challenges we have faced?
The first challenge was to convince supervisor to assign us a test bed project for WPF. But we had done that very easily because our supervisor also likes to walk through inside new technology. I hope that you will not face it now because lots of sample LOB applications are currently available in this day.
The second challenge was learn the XAML. If you are not very familiar with ASP.NET UI design the XAML will look very disgusting, but later we will understand it power.
Its data binding technique is one of the new concepts for us. When we had taught that it controls can bind any to any we gone crazy.
The third was to identify the right navigation technique. By using “Navigation”, I want to mean that how user will navigation in your application not WPF navigation service.
The fourth was inherits problem, XAML does not support inherits. There is no container like inherit form. We can do it but it is costly in sense of code.
The fifth challenge was build responsiveness UI. When you are running long process WPF UI become hang up until that process has finished.
The sixth was finding a web server near to you for deployment. We have build WPF Browser hosted application so need to deploy it in a web server. So we were looking for a local company to host our application. I had email 25 ISP with our requirement, but unfortunately only 3 ISP was reply back and said they do not have that facility currently available. So we had hosted our application in USA server.
Lot of other challenges we had faced, but above are significant challenge we have passed.
What lesson we have learned?
New technologies always give you a thrill. But it can take you to inside black hole. Never use a new technology in your product line. Take a calculated risk; do not depend on technology provider. They can move from their position with out thinking of you, because you are no body to them.
Take a look the online resources currently available, if you think its enough for you then go for it, unless wait and learn. Resources are very important because you can not do the research for the every part of thing. Look how many communities are grown for that technology and monitor its activity. It gives you lot of knowledge and allow to take support when you needed that.
Sitting on a third world country, it is very difficult to utilize new technology feature and get benefit from it because of infrastructure problem. But if we do it in right time we are the best among all, nothing can hold us behind.
Below is a screen shot of that application.

*This image is a screenshot from iProject Master, and the copyright for it is most likely owned by Business Object Solutions Ltd.