The Most Important Feature of .NET 4.0
OK, I'm ready to stick my head out here. We just have a CTP and know only a little bit about .NET 4.0, but I'll make a prediction about it's most important feature.
First, let's look at the big picture. .NET 4.0 is not going to have any blockbuster changes at its core like the anonymous method support and generics of .NET 2.0. Nor is it going to be the odd bolt on of half finished products that was .NET 3.0. Nor will it be the language frenzy of .NET 3.5.
.NET 4.0 is going to include some core changes, particularly in the area of parallel processing that is going to be very important to some people, and will eventually make it into all of our consciousness.
.NET 4.0 will also include another chance for Entity Framework, and I hope they can finish what they've set out to do there. I think there's a measurable change they'll create something with broader reach than EF 1.0, but I think it will remain needlessly complex for most projects, and Microsoft has further proven that the data arena is not a place they can be trusted when they announced limited evolution of LINQ to SQL. I hope one day I will say I was needlessly cynical about Microsoft's data strategy, and I hope that day comes soon. I remain cynical.
.NET 4.0 will bring Azure and cloud computing to the forefront. That's cool. For niche applications it's very powerful stuff. People I respect like David Chappell think this is going to be the main development approach of the future. Maybe. But not right now beyond short term scale out requirements and applications looking for a new delivery mechanism.
All three of these areas are reasons that I'll be on my toes as .NET 4.0 unveils itself because it will probably have the largest impact on how I design and code since LINQ. I anticipate that patterns will arise that are important in building applications that will evolve to take advantage of these major Microsoft initiatives (and others).
Before I go on, I don't want you to overlook what I just said... I've got gray hair and I've been in the business a long time...
.NET 4.0 is likely to offer patterns that will be the most important change in my coding since the huge changes brought on by LINQ (and supporting techniques like extensions and lambdas) of .NET 3.5. That was the most important change to my coding since generics in .NET 2.0. That was the most important change to my coding style since strongly typed full OO programming came on in .NET 1.0. That was the most important change to my coding style since the visual coding style of Visual Basic (pre .NET). That was the most important change to my coding style since Clipper and FoxPro. Get the trend? Eight years, eight years, three years, two years, 18 months... I do a talk for INETA called "Rethinking Object Orientation" that tries to get a grip on these changes... .NET 4.0 is going to bring a lot and inspire a lot of rethinking.
And so, to stick my neck out and say "this is the most important feature" requires clarification. If we look beyond the long term implications of .NET 4.0 and ask about what it changes in your world the day it ships, beyond incremental improvements, I think there's only one answer.
The most important feature of .NET 4.0 is Windows Workflow 4.0.
Windows Workflow 3.5 gave you a tool for free that previously cost tens of thousands of dollars to get your foot in the door. It was a great opportunity. And there was almost no uptake. I think there were a few reasons - it was too darn hard to use and Microsoft didn't push it very hard. They probably didn't push it because it became evident that they screwed it up and it was way too hard to use.
Windows Workflow 4.0 is a complete rewrite of workflow. It's a brand new product. More than just rewriting, it represents a rethinking of the problem. It's not the old giant workflow behemoths pared down to fit into Visual Studio. It give normal developers what they need to incorporate workflow into their applications. If we look beyond forms over data and extend the reach of our applications into helping the organization accomplish its goals, we find workflow. Workflows are a fundamentally better way to think about business problems - and it can often be interleaved with existing applications. Assuming the release is stable as a 1.0 product, and I'm optimistic on that, it's going to be the thing in .NET 4.0 that lets you add real business value to your applications.
And real business value is what its all about.