Whats new in the .NET Framework 3.0
Given the interest generated from my last technical blog entry on the .NET Framework's definition and purpose, I thought I would follow up with a post that talks about the new features in the .NET Framework 3.0.
At the risk of sounding self-obsequious, I will say that you can learn more and try out the new features of the .NET Framework 3.0 at .NET University, a web site set up to educate people on .NET-oriented technologies. But let's cover the basics here.
About 8 years ago, Microsoft (and many other technology companies) began to build on their vision of connecting computers in a highly-adaptable fashion. Early terms included *programmable internet* and similar mantras.
As the vision and technology evolved, there were two identifiable needs that emerged. One was a standardized way to pass content around and describe contracts, policies, and data. Microsoft's efforts were intertwined nicely with other industry visionaries, and ultimately grew into standards such as WS-* and Basic Profile.
The second identifiable need was a way to build managed endpoints. The .NET Framework 1.0 signaled the approach of this solution. The .NET Framework 3.0 signals its arrival. Version 3.0 is more than just another release. It is actually the completion of an 8 year vision. You can see the significance of this release in that it is subsumed into Vista, as a programmatic foundation, and ultimately will replace Win32 (not just wrap it) as the core API for Windows.
There are 4 major libraries in the .NET Framework 3.0, which are added to the existing 2.0 Framework libraries. These 4 libraries are Windows Presentation Foundation (WPF), Windows Communication Foundation (WCF), Windows Workflow Foundation (WF - had to drop one of the W's for legal reasons), and Windows CardSpace. I'll briefly touch on each of these.
WPF gives you a way to differentiate your user experiences. We say UX rather than just UI, as we are talking about more than just a snappy interface. It's about a better user interaction with the application. WPF is also a better experience for developers that want cutting edge UI. Things like having a unified API mean you don't have to learn several APIs to blend media with documents and text, for example. Also, XAML provides a clean, declarative language to describe UI, and to offer designers and developers bridge to share content.
WCF offers a way to do secure, reliable, transacted services using a variety of protocols and bindings. If all you ever wanted to do with your heterogenious communication was add 2 numbers, or find out the temperature in a zip code, the technology has been there for a while. But if you wanted to add 2 numbers, take the answer, pass it somewhere else, and then if it failed, roll back the whole scenario, you didn't have an easy heterogenious solution. WCF makes this as simple as configuration, provided both sides play by the WS-* standards.
WF offers a way to declaratively describe business process. In a sense, it's a visual representation of the flow of your program, including both human and machine interaction. I try to tell people that with workflow, there is an A-HA! moment... kind of like the first time you realized how an interface declaratively represents a class that implements it. Similarly, a workflow is like a declaration of the scenario it represents. Maybe it's just me, but that resonates well with my thinking. If you never had the A-HA moment with interfaces, just disregard that part. Think of it as a way to explicitly state what an application is doing. That's a little coarse, but it will suffice as a first data point.
CardSpace is a solution that lets you pass authentication information around via encrypted tokens rather than typing UID and PWD all over the place. By using visual cueing for recognition, and explicitly differentiating between the relying party and the identity provider, it offers a quick way to effectively authenticate using the WS-* standards. It has a simple, easy to use UI as well. It virtually eliminates phishing problems, and keeps you from having to memorize more and more passwords.
These 4 new technologies are the primary new features in .NET 3.0. Again, you can drill into each of them with the slides and labs available for download at www.dotnet-u.com. The slides have notes in case you want to use them to present to someone else. the labs have an *after* folder with the completed lab enclosed.
Again, if you think I've missed anything, feel free to chime in.