Wednesday, November 04, 2009
« Prioritizing CSLA .NET work items | Main | CSLA .NET 3.8.0 released and available! »

Of course I’m referring to Windows Forms, which is about 8 years old. Even in dog years that’s not old. But in software years it is pretty old I’m afraid…

I’m writing this post because here and in other venues I’ve recently referred to Windows Forms as “legacy”, along with asmx and even possibly Web Forms. This has caused a certain amount of alarm, but I’m not here to apologize or mollify.

Technologies come and go. That’s just life in our industry. I was a DEC VAX guy for many years (I hear Ted Neward laughing now, he loves these stories), but I could see the end coming years before it faded away, so I switched to the woefully immature Windows platform (Windows 3.0 – what a step backward from the VAX!). I know many FoxPro people who transitioned, albeit painfully, to VB or other tools/languages. The same with Clipper/dBase/etc. Most PowerBuilder people transitioned to Java or .NET (though much to my surprise I recently learned that PowerBuilder still actually exists – like you can still buy it!!).

All through my career I’ve been lucky or observant enough to jump ship before any technology came down on my head. I switched to Windows before the VAX collapsed, and switched to .NET before VB6 collapsed, etc. And honestly I can’t think of a case where I didn’t feel like I was stepping back in time to use the “new technology” because it was so immature compared to the old stuff. But every single time it was worth the effort, because I avoided being trapped on a slowly fading platform/technology with my skills becoming less relevant every day.

But what is “legacy”? I once heard a consultant say “legacy is anything you’ve put in production”. Which might be good for a laugh, but isn’t terribly useful in any practical sense.

I think “legacy” refers to a technology or platform that is no longer an area of focus or investment by the creator/maintainer. In our world that mostly means Microsoft, and so the question is where is Microsoft focused, where are they spending their money and what are they enhancing?

The answers are pretty clear:

  • Azure
  • Silverlight
  • ASP.NET MVC
  • WPF (to a lesser degree)
  • ADO.NET EF
  • WCF

These are the areas where the research, development, marketing and general energy are all focused. Ask a Microsoft guy what’s cool or hot and you’ll hear about Azure or Silverlight, maybe ADO.NET EF or ASP.NET MVC and possibly WPF or WCF. But you won’t hear Windows Forms, Web Forms, asmx web services, Enterprise Services, Remoting, LINQ to SQL, DataSet/TableAdapter/DataTable or numerous other technologies.

Some of those other technologies aren’t legacy – they aren’t going away, they just aren’t sexy. Raw ADO.NET, for example. Nobody talks about that, but ADO.NET EF can’t exist without it, so it is safe. But in theory ADO.NET EF competes with the DataSet (poorly, but still) and so the DataSet is a strong candidate for the “legacy” label.

Silverlight and WPF both compete with Windows Forms. Poor Windows Forms is getting no love, no meaningful enhancements or new features. It is just there. At the same time, Silverlight gets a new release in less than 12 month cycles, and WPF gets all sorts of amazingly cool new features for Windows 7. You tell me whether Windows Forms is legacy. But whatever you decide, I’m surely spending zero cycles of my time on it.

asmx is obvious legacy too. Has been ever since WCF showed up, though WCF’s configuration issues have been a plague on its existence. I rather suspect .NET 4.0 will address those shortcomings though, making WCF as easy to use as asmx and driving the final nail in the asmx coffin.

Web Forms isn’t so clear to me. All the buzz is on ASP.NET MVC. That’s the technology all the cool kids are using, and it really is some nice technology – I like it as much as I’ll probably ever like a web technology. But if you look at .NET 4.0, Microsoft has done some really nice things in Web Forms. So while it isn’t getting the hype of MVC, it is still getting some very real love from the Microsoft development group that owns the technology. So I don’t think Web Forms is legacy now or in .NET 4.0, but beyond that it is hard to say. I strongly suspect the fate of Web Forms lies mostly in its user base and whether they fight for it, whether they make Microsoft believe it continues to be worth serious investment and improvement into the .NET 5.0 timeframe.

For my part, I can tell you that it is amazingly (impossibly?) time-consuming to be an expert on 7-9 different interface technologies (UI, service, workflow, etc). Sure CSLA .NET supports all of them, but there are increasing tensions between the stagnant technologies (most notably Windows Forms) and the vibrant technologies like Silverlight and WPF. It is no longer possible, for example, to create a collection object that works with all the interface technologies – you just can’t do it. And the time needed to deeply understand the different binding models and subtle differences grows with each release of .NET.

CSLA .NET 4.0 will absolutely still support all the interface technologies. But it would be foolish to cut off the future to protect the past – that way lies doom. So in CSLA .NET 4.0 you should expect to see support for Windows Forms still there, but probably moved into another namespace (Csla.Windows or something), while the main Csla namespace provides support for modern interface technologies like WPF, ASP.NET MVC, Silverlight, etc.

I am absolutely committed to providing a window of time where Windows Forms users can migrate their apps to WPF or Silverlight while still enjoying the value of CSLA .NET. And I really hope to make that reasonably smooth – ideally you’ll just have to change your base class types for your business objects when you switch the UI for the object from Windows Forms to XAML – though I suspect other minor tweaks may be necessary as well in some edge cases.

But let’s face it, at some point CSLA .NET does have to drop legacy technologies. I’m just one guy, and even with Magenic being such a great patron it isn’t realistic to support every technology ever invented for .NET :)  I don’t think the time to drop Windows Forms is in 4.0, because there are way too many people who need to migrate to WPF over the next 2-3 years.

On the other hand, if you and your organization aren’t developing a strategy to move off Windows Forms in the next few years I suspect you’ll eventually wake up one day and realize you are in a bad spot. One of those spots where you can’t hire anyone because no one else has done your technology for years, and nobody really remembers how it works (or at least won’t admit they do unless you offer them huge sums of money).

I don’t see this as bad. People who want stability shouldn’t be in computing. They should be in something like accounts receivable or accounts payable – parts of business that haven’t changed substantially for decades, or perhaps centuries.

Thursday, November 05, 2009 12:51:00 AM (Central Standard Time, UTC-06:00)
Care to elaborate on two points.

- "WPF (to a lesser degree)". Why "lesser degree"?
- "[...]ADO.NET EF competes with the DataSet (poorly, but still)". Why poorly?

The reason I'm asking is precisely what you write about. You say you've been fortunate in the past to have jumped ship at the right time, that's not enough. You have to choose the next ship as well. I'm presently in a position where I have to choose between technologies. The problem is that difficulties often surface only after you've invested substantial effort on some technology. Estimating the risk beforehand is extremely difficult.

-- Rubio

PS. Noticed you're not in TechEd EMEA. How come? (I gave you top marks the last time, honest.)
Rubio
Thursday, November 05, 2009 7:54:48 AM (Central Standard Time, UTC-06:00)
The primary systems at my company are still Vax DIBOL. I support apps that access Vax files yet are written in VB6, .Net WinForms, ASP Classic, ASP.Net 1.1 mixed with 2.0 inside frames. It's mostly VB, but the programmer that just left did C# and AJAX. Another programmer who left didn't use collections or datasets, everything is stored in massive 2 dimensional arrays. Programmers here are very smart but they've barely heard of the technology that is current (what's EF?). I try to stay current up but my learning is so scattered, LINQ yesterday, XAML today, RIA Services tomorrow.

What's a poor programmer to do?
DeveloperDan
Thursday, November 05, 2009 8:33:43 AM (Central Standard Time, UTC-06:00)
Dan, you know technologies never really die right? :)

My first VAX job was porting software from a PDP-11 to the VAX for an ISV. But over a decade later that ISV still had customers using PDP's - scavanging parts and hardware off used marketplaces to keep their machines limping along, because they didn't want to pay to move to a platform that was still being manufactured. Amazing!
Thursday, November 05, 2009 8:39:57 AM (Central Standard Time, UTC-06:00)
Rubio,

I say "WPF to a lesser degree" because, at least from my perspective, it seems that a lot more time and effort is going into Silverlight than into WPF. Yes, WPF is getting investments, but it is moving at maybe half the speed of Silverlight. Then again, Silverlight is playing catchup, and Silverlight isn't limited by .NET releases so it _can_ move faster. Maybe Silverlight will slow down at some point, but it shows no sign of doing so...

I say ADO.NET EF competes poorly with the DataSet because it doesn't generate entity objects that support data binding interfaces. The data binding model, especially in Windows Forms, but also in Silverlight and (with third party controls) in WPF utilizes a rich set of interfaces, and EF entities only implement the one most basic interface possible. The DataTable, on the other hand, implements _all_ the interfaces.

Take an entity collection and bind it to a datagrid (non-web). Then take a DataTable and bind it to a datagrid. The DataTable grid will work like the end user expects. The entity grid will be lame in comparison.

ADO.NET EF 4.0 focuses on POCO support, which is fine - Microsoft had to make the Alt .NET people happy, or they'd surely sign yet another petition. But I really, really hope that ADO.NET EF 5.0 (so another couple years from now I suppose) will provide DataTable parity for people who actually want to get real work done without having to write a ton of manual code.
Thursday, November 05, 2009 9:03:33 AM (Central Standard Time, UTC-06:00)
Re: EF DataBinding...

Is this of interest?
http://blogs.msdn.com/swiss_dpe_team/archive/2009/11/05/entity-framework-feature-ctp-preview-2-released-built-on-top-of-ef-4-beta-2.aspx
Martin
Thursday, November 05, 2009 10:12:49 AM (Central Standard Time, UTC-06:00)
Rocky, I've done some linq with collections, but haven't got round to doing Linq to SQL. Now are you saying that's legacy? I thought it was the next big thing! Please clarify.

Thanks
Rich
Rich
Thursday, November 05, 2009 10:37:41 AM (Central Standard Time, UTC-06:00)
Rich, I think Microsoft has been pretty clear over the past few months that LINQ to SQL is not their strategic direction. They are putting their energies into ADO.NET EF.
Thursday, November 05, 2009 10:42:08 AM (Central Standard Time, UTC-06:00)
Thanks Rocky. I read several tech blogs like yours but not much if anything coming directly out of Microsoft. Good thing I didn't waste time learning Linq to SQL!
Rich
Thursday, November 05, 2009 4:47:53 PM (Central Standard Time, UTC-06:00)
I would say that open source is what is hot and will continue to. I think watching where java is at will be the future of .net assuming .net actually detaches itself from the machine.

The flaky 1.0 products will fall away, the more mature proven technologies will continue ie. NHibernate will be a choice before EF - you can't trick me and go from v1 to v4 in naming only - lol - we all know it's v2 at best - they are still trying to figure out that an ORM needs to use poco objects...sigh... I used Biztalk 1.0 and it was horrid, Sharepoint as well, these are taking years and years to grow.

asp.net mvc
nhibernate
service bus - message based systems
javascript libraries - ie. jquery is very hot
grails

More updates to ajax, more ajax enabled servers, frameworks like Grails will continue to grow in popularity as they push convention over configuration. We'll probably see a NGroovy/NGrails.

Languages that attempt to abstract will not be the future. The level of abstraction becomes a hindrance (ie. webforms is a great example, you can't abstract away response/request/html and be successful imo). Javascript libraries will continue to be popular and web developers will grow. Flex/Flash/Silverlight will have a niche market but won't have the same continued impact as web applications. Browsers like Chrome (4.0) and their javascript optimizations make web pages fly and their approach is just to continue to execute ajax/javascript lightning quick. The abstracted sandbox apps will not keep up. They will be 'easier' to develop but 'slower' and that won't last because web apps are going to be expected to be 'faster'. Dynamic languages will continue to be the first choice - the entire language evolution in C# 4.0 is an example of that.

Google (android, wave, etc... using java) and Apple (objective-c is on a serious rise - iphone, mac development will increase because sales are just growing and growing) are innovative, the open source communities are innovated. Microsoft appears to be playing catch up. Their Window phones, zune, etc... just fall down on themselves.

So, I think objective-c, groovy, etc... will continue to rise in popularity.

Silverlight unfortunately feels very raw, and it took quite awhile just to have a datagrid in wpf. They are playing catch-up to me, and still haven't hit the mobile devices. Very 1.0 ish to me.

Back to open source - did you see Udi's post on the cost of running a site like Facebook and such ? No way can companies spend that amount of money on MS licensing and stay in business. The 'super powers' aren't are they ?

.NET development needs to be at a point of 'development and run anywhere' or it will start to decline in usage and popularity.

The web application and mobile phone market is on the rise, and I feel MS is behind on this (hence you don't see as much in wpf as you'd expect).

Whew, gotta go eat dinner :)
Thursday, November 05, 2009 8:53:38 PM (Central Standard Time, UTC-06:00)
It's interesting, but really, the war is lost.

Silverlight/Azure won't provide anything better than any other web-platforms.

WPF - it's just a very thin UI layer. Cool, but thin.

Unless MS provides something substantially useful, that requires full desktop power (AI? natural language recognition?), the development will be web-based. And there Silverlight+Azure+ASP+whatever will never win.

MS just cannot compete in the world that does not belong to them.
John
Thursday, November 05, 2009 11:08:57 PM (Central Standard Time, UTC-06:00)
Rocky, if you really want to ditch VAX these days, ditch Microsoft technology stack. Don't improve CSLA and write something cool for Google:) Or, just accept that you will retire from VAX. Which, in a way, not so bad too.
Steve
Friday, November 06, 2009 12:02:14 AM (Central Standard Time, UTC-06:00)
I still have a very fond spot in my heart for the VAX, and for my Amiga too :)
Comments are closed.