What is Your Top Feature in .NET 3.5 SP1?

I was just reading an article in Application Development Trends, titled Microsoft Ships Visual Studio 2008 and .NET SP1. It has a nice walk-through of some of the new capabilities in .NET 3.5 SP1, and they are grouped into logical categories.

They start out with WCF, and mention that that "SP1 adds scalability increases of five to 10 times in Internet Information Services (IIS) 7". And how about partial trust and event-log access?  Nice.

Then they go into WPF enhancements, and how WPF is gaining mind share with developers. Then there is a section on the Entity Framework, next on ADO.NET Data Services, and then to one of the most notable under-promoted items, Client Profile. Here the author, John K. Waters says:

One of those barriers in the .NET world, as Ellison-Taylor points out, has been client deployment. "In some ways we're victims of our own success with the .NET Framework," he said. "Since the first release in 2001 we've added more features and more value, and I think it's come a long way, but it's gotten a little heavy as well."

The .NET Framework 3.5 weighs in at around 197 MB. Microsoft trims that mass with a new Client Profile, which hits the scale at a lean 26 MB to 27 MB, he said. The profile contains a subset of features found in the full installation of the .NET Framework, including the CLR, ClickOnce -- a deployment technology for creating self-updating Windows-based applications, Windows Forms, WPF and WCF.

"We think it gives us 80 percent to 90 percent of the features that client developers would want, but in a much smaller package," Ellison-Taylor said. "That makes it much easier to deploy."

What is Client Profile

One definition is on the BCL Team Blog in the post, .NET Framework Client Profile. Justin Van Patten says that the Client Profile is  "a smaller .NET Framework redist optimized for .NET client applications. The new redist weighs in at around 26.5 MB, enabling a smaller, faster, more reliable installation experience for .NET client applications on machines that do not already have the .NET Framework installed."

Justin then goes onto list the assemblies included in the Client Profile redist. The list will handle most situations, but there are some scenarios that might be affected (see the comments on this post for a few of those). The next section shows how to turn on this features, and it's quite simple. In Visual Studio 2008 on the Application properties, click the "Client-only Framework subset" checkbox. Afterwards, VS will provide compiler warnings if you reference assemblies not in the Client Profile redist.

Additional Features of the Client Profile

For a deeper look and additional considerations, take a look at Troy Martez's post on Introducing the .NET Framework Client Profile. In this piece, Troy talks about how deployment works, how it can be customized, how to add other products (like SQL CE, a  great choice for Smart Clients now), and customizing the UI of the install. Good background in this post.

More Information

MSDN has a section of pages on the topic, .NET Framework Client Profile. This includes an overview, how to configure, and two walkthrough's of how to build Client Profile application installs on ClickOnce and Windows Installer.

Summary

So, you can see why I think this is an important feature. It not only addresses an issue that infrastructure folks like to take on about the size of the .NET, we also help in deployment styles and customization. Yes, there are many good features in .NET 3.5 SP1, but I recommend not ignoring this one.