One of the considerations of whether to choose .NET 3.5 for your non-server applications might be distribution size. If you're building a vertical application that you're distributing over the Internet you are probably concerned about the size of your installation if you want people to download it.
Recent versions of the .NET runtime have a made decidedly nasty turn for the worse when it comes to download sizes. Christopher Painter listed the framework sizes of various versions of the .NET Framework and the numbers really tell the story:
- .NET Framework 1.0: 19.7MB
- .NET Framework 1.1: 23.1MB
- .NET Framework 2.0: 22.4MB
- .NET Framework 3.0: 50.3MB ( x86 )
- .NET Framework 3.0: 90.1MB ( x64 )
- .NET Framework 3.5: 197.0MB
Holy shit! That's quite a jump over a version 2.0 install. Heck version 2.0 managed to cram a shitload of new features into the framework and still REDUCE the footprint. Granted though, the 3.5 install includes .NET 2.0, 3.0 and 3.5 and it looks like the single installer handles 32 and 64 bit installs.
Nevertheless, if you are planning to distribute a .NET 3.5 application on a CD almost half the disk space is going to be eaten up just by the framework install. And lets not even talk about the download aspect of an application if it doesn't have it and you have a fully self contained install.
What really sucks about this is that the actual runtime files account for only a small fraction of this install. If you were to install the required files manually you'd probably end up with less than a 50 meg install.
To be fair, for downloads I tend to link to the runtime install as a separate link and if you're using one of the expensive installer tools they'll let you directly link the runtime downloads from your own installer.
You certainly wouldn't want to force people to download the runtime install if they already have it installed. Microsoft also has an online installer that pulls down only the components that are needed which can significantly reduce the installation download size, but it's a separate step that can't be handled through an integrated install.
The other part to this which I don't understand is why Microsoft is not pushing the .NET runtime a bit harder and force it down onto machines with Windows Update. While that won't cover everybody at the least developers can put a label on the box that says requires SP2 or SP3 (of whatever) that includes the runtimes. This was basically done with Vista and .NET 3.0, so it seems really strange that .NET 3.5 shouldn't have made it into Vista SP1 and XP SP3 that were finally released to Windows update last week.
This is certainly an issue that's making me think twice - at least right now - of using .NET 3.5 for vertical/desktop applications. Distribution sizes do matter and people are weary of downloading a 200 meg runtime in order to run an application that has a 2 meg footprint on its own.