Updated On 12/21/2007
These are the thoughts of a very small company architect & developer trying to stay afloat in the ocean of changing and evolving technologies.
Anytime you write an article that defends a position or decision you make, you run the risk of coming off negative or one-sided. Sometimes a negative that one solution has can be taken as bashing of the solution just by bringing it up. Anyone who knows me, knows that is not my intention or the way I operate, not at all. I may step up on my soapbox once or twice, but have tried to limit this so the reader won’t get mad at me and the miss the underlying point of the article.
I love ASP.NET, WPF, WCF, Visual Studio and the other super technologies and products that Microsoft delivers and supports, period. I respect the fantastic and super bright folks at Microsoft.
So put down the spears, guns, atomic warheads, C# & VB.NET hatchets and walk a mile with me I my shoes. Try to understand the issues facing this front line architect and .NET developer.
Come and visit my world…
I’ve been developing commercial e-commerce web sites since the days of NT4 and ASP 3.0. Some of these sites are still in production today. I worked in New York City for an ISP and really enjoyed the work.
My current company, emGovPower has a full featured Citizen Web product that our customers use to expose a lot of their backend data to their citizens. The product allows their citizens to view detailed information about their utility billing, permits and property tax accounts and pay bills online.
We have one customer, Havelock, NC that has many Marines living there. So for them to pay their bills online is a great feature that borders on a necessity. I was stationed at Cherry Point MCAS for 6 of my 12 years in the Marine Corps. Love Havelock, NC and have great friends who live there.
I also wrote a full blown Tax Assessor application for Williamsburg, VA using ASP.NET and they rave about it.
I could go on, but at this point, you must be thinking, with a track record of successful ASP.NET applications and web sites, why the change and start a new project with WPF?
This is a good question. Be sure, I had to fully explain this request to the owners of my company and the final decision to customers who were expecting an ASP.NET Ajax product.
Maintainability Over Time – #1 Reason
The browser and all the baggage associated with it is the #1 reason I pushed for and we chose WPF over ASP.NET. ASP.NET was not the issue, the browser is.
The unbridled browser that for whatever reason, no vendor can seem to support the established WC3 standards. I have trouble with vendors not supporting WC3 standards. Worse, vendors change the browser rendering behavior between their own releases, causing no shortage of headaches for web developers.
Two years from now, no telling how the browser will be rendering content. Even for the demo ASP.NET AJAX application I did, I had to code for IE6, IE7 and had to provide special setup directions for IE7 on Vista so they could print reports. Remember the “peek-a-boo” bug? Better not go there.
What happens after we deploy an application with 500 forms? We will always have the ongoing headache of customers reporting that, “I just installed (new O/S, new browser, service pack, etc.) and the page does not render as before.” Can you imagine having to touch 500 forms or even 200, just so we can support 2-5 versions of IE?
WPF solutions, like WinForms are not affected by the hosting system. So two, three or four years from now, our WPF application will run just like it did the day the customer received it.
I want to spend our precious resources on application features and functionality, rather than another workaround for the new browser version compatibility issue.
The above section is about the browser, not ASP.NET.
The changes to Visual Studio from just 2003 to 2005 in the ASP.NET area, were DRAMATIC. New controls that had less functionality than the previous version. Example; Drop a Dataset on an ASP.NET page. Now try to set the Data Binding on a Textbox using the property grid in Visual Studio 2005. Can’t do this in VS2005. This was standard practice in VS2003. Have not checked VS2008 yet. Still can’t understand this.
I love AJAX, but it’s an emerging technology. The advances in the last two years are just plain awesome. For web sites that are 20 to 30 or less pages, who cares if the API changes every 6 months. Just fix it and move on, next. But changing 200 – 500 forms and sub forms is just too high a price to pay so the web page can post back without refreshing. Again, not bashing, just listing things that I face.
If we start down this path now, what about the development environment in two – four years? When I install VS how will that impact the maintaining of our application? I’m very concerned about this.
Currently, I have two machines. A VS2003 and VS2005-2008. I have to maintain a separate system for VS2003 due to the glitches and the environments (VS2003 & VS2005 & IIS) not playing well together. This way our developers don’t have to employ workarounds to get their work done.
A modern Microsoft developer simply does not have the time to be fooling around with tools that are not 100% rock solid, period. There are so many technologies today, compared to 5 – 10 years ago. Staying current is a full time job, not be mention actually delivering a product.
Developers and architects don’t have time for workarounds to get our work done.
I feel that WPF will not be subject to the emerging technology issues above. WinForms has not been affected by new releases of Visual Studio the way ASP.NET has. This was another factor in my decision.
Please keep in mind, my product is huge. For small projects none of this matters since you can simply revisit the UI and make required adjustments or take advantage of new platform enhancements. For large projects, this could be a major investment of time, better to spend the time on functionality and features, or heaven forbid, documentation.
WPF code is not affected by the WC3 or Microsoft’s implementation of a CSS standard. I’m not Microsoft bashing, just stating the reality we must deal with.
Developers of large scale applications need a stable platform and development toolset.
For many years before moving into the Microsoft world, I was a VAX-VMS, Alpha-VMS and SCO UNIX developer. Nothing is more stable or changes less than a VAX. Reboots measured in years. I really miss my VAX. All my VAX applications are still in production today and being used by a 7 billion dollar a year U.S. corporation.
Time To Market
We are a very small company and currently I’m the only one with skills outside of Access/SQL Server. I’ve been mentoring and teaching .NET, ASP.NET, VB.NET, HTML, AJAX & CSS so others can work on our Citizen Web product. Additionally, I’ve been working with a co-worker on WPF and Blend. These technologies are not learned over night. The transition from an Access VBA developer to an O/O .NET developer is a steep learning curve and will take a lot of hard work.
I have a program I wrote for ASP.NET to generate the web pages and data layer. We have done the same for WPF including the business entities and data layers. I’ve also introduced, “Declarative Programming” into the architecture of our business entities. The new code generator supports this cool feature. WPF, WinForms and ASP.NET user interfaces can take full advantage of the, “Declarative Programming” in the BLL.
With WPF, we only have one technology to work with, as opposed to HTML, ASP.NET, AJAX, CSS, which are also evolving. When I say WPF, I mean WPF from a business forms perspective. Clean, fast, user friendly, bullet proof UI is what our customers are looking for.
Without any doubt, WPF gives our company the ability to focus more on business functionality than coding technologies. This is very important to our small company with limited resources developing a feature rich application.
Do I need to say anything here? Rich interactivity, resolution independence, super fast UI.
WPF takes full advantage of the user’s hardware, especially the monitor. Didn’t think I would list the monitor first, eh? Think user!
With a web application, you really need to “target” a screen resolution. Most of our pages are business forms that users interact with. If we target 1024 x 768 and Mr. Smith gets a new computer with a 22″ wide screen monitor (less than $300 today), his web application will be displayed in the upper left of his screen. Bummer.
With WPF just ViewBox it and boom, the same information displayed utilizing his full screen and he can see the form much better AND without any hacks, or lots of code to make this happen. This is a major selling point for us, considering our target market.
WPF takes full advantage of the users CPU/GPU for processing. Today all our customers can afford an Intel 2 Core Duo system. As all readers of this know, these babies are super fast.
Browser vs. Windows – New Section
This is an area that one of my responses to a comment brought out and I should have included this in the original posting.
My customers are small city & county governments and water authorities around the country. Their average PC has a 17″ or 19″ monitor with resolution set at either 800×600 or 1024×768. If we delivered a browser application we would have to deal with the fact that the browser itself takes up a good bit of vertical screen space. Then add that, users customizing their browser with special toolbars, search gadgets, etc. and more vertical screen space is lost.
Trust me, I did a lot of research on this. Went and looked a customer desktop setup. Looked at the way other people I know have their browser configured. Many variations. Well, from a business forms perspective, I didn’t want any of my forms to scroll except for data grids or reports. So, with all the possible variations of browser configurations out there, now what is my target vertical measurement, 500, 575? Again, a mess. Running IE full screen gets rid of this problem, but also causes issues for the user. Then what is most users like full screen and others didn’t? I did look into creating browser applications so that the normal IE toolbar and menu bar is hidden. But there were other issues so we didn’t do this either.
With WPF or WinForm, you give up almost no vertical space, just the little title bar. I can live with that.
Web User Experience Side Note
For all you bloggers and web site developers out there, WHY, WHY do you still insist on using fixed fonts on your web sites? Users should be able to use the browser Text Size feature on all web pages. It should be illegal to have fixed fonts on web sites, period! Can’t tell you how many times I’ve had to copy your sites into Microsoft Word just so I could read them. Please stop doing this. OK, I’m off my high horse and/or soap box.
Less Technical Resources Required At Our Customer’s Site
With ASP.NET, our customers have to maintain an Intranet site.
With WPF this requirement is removed from the equation.
A good number of our customers use Small Business Server. That server is already handling SQL Server databases, Reporting Services, Exchange Server, Domain Controller functions and probably file and print services as well.
With a WPF product the workstation CPU’s offload some processing burdens from the SBS Server.
SliverLight 2.0 – New Section
The feedback I received from the initial posting was remarkable. Wow, never knew there was this much interest. On question I received over and over again, referred to SilverLight 2.0.
Our decision was make in June of 2007. At that point SilverLight (WPF/E) was still a very new and evolving product. As we know, large scale line of business applications typically stay with current and proven technologies so that they won’t have bleeding edge blues. This was the reason I didn’t mention SL 2.0.
Once SilverLight 2.0 ships sometime in Q1 2008, I will be building business forms ( so will many others ) with it and will post an in-depth review here and/or on Code Project. Even if it takes until SilverLight 3.0 for this to be mainstream, that will be OK. This will provide another delivery platform for our products. Looking forward to it.
With ClickOnce we have many options available for deployment. This can overcome some objections that a browser application is easier to deploy. We will be looking closer at this as time goes by.
My company thought long and hard about this decision. The future of our company depends on this product being successful.
Many of our competitors have gone the way of the web based application. Sometimes I think they are following that trend. I have been doing this a long time and like so many things in life, everything comes full circle.
Our product will be delivered using WPF and WCF. Our product will have a web front end for citizens of our customers to interact with their city or county government or their water authority.
So based on your company’s long term resources, your customers needs, your applications scope, choose the technology and platform that is a best fit and enjoy the process as you deliver your next awesome application!
Just a grain of sand on the worlds beaches.