Size isnt everything, despite what I read in all the spam e-mail I receive. When the .NET framework was first released, it was apparent to me that there was two parts to the library. On the one hand, there are classes that follow a new paradigm and a more object-oriented fashion, for example the various streams APIs. However, there are other parts of the framework that are merely thin wrappers over Win32. You could argue that this implies that the Win32 API was well designed, but equally so, you could also argue that that the time was not spent on designing a more object-oriented API. I have always felt that the framework library was released too early, and I think something can be done about this.
The framework library is huge. If you scan through the list of framework classes, youll find that just about (but not completely) everything in Win32 is covered. Look at this list: WMI, Active Directory, OLEDB, XML, XSL, XPath, COM+, MSMQ, Sockets, cryptography, Windows Forms, and GDI+. I have included GDI+ because it is a Win32 feature, and the .NET framework merely provides wrapper classes. In a similar way, Windows Forms is really just a managed version of Visual Basic Forms. Now ask yourself, if you are writing an application, how many of these libraries will you use? In addition, there are some parts of the framework that are completely new: assembly probing, binding and versioning, metadata, configuration, instrumentation, isolated storage, CodeDOM, contexts, .NET Remoting, object serialization, code access security, role-based security, and ASP.NET. I include ASP.NET in this list of new features because it bears little resemblance to ASP, and web controls were a totally new feature. Again, you are unlikely to use all of these features in your application.
However, when you download the .NET redistributable, you get all of these libraries in one large, 24-MB download. If you have a dial up connection, 24 MB is not trivial: If you pay by the minute for that connection, 24 MB can get expensive. I propose that the framework should be split up into smaller redistributables. The basic framework can be found in the mscorlib and system assemblies, with some support DLLs such as fusion.dll, mscorwks.dll, and mscorjit.dll. In general, the optional parts of the framework are in separate assemblies like System.EnterpriseSetrvices and Syste.Windows.Forms.
I have listed all the files in the redistributable for v1.1 of the framework in the download for this newsletter and I have tried to categorize the files according to the type of application that will use them. My results are:
|Core and Language Support||17,250,793|
In the next newsletter, I will investigate this further by looking at the DLLs that are loaded when your application starts. In the meantime, take a look at the Weblog of my friend and Socket guru, Zane Thomas (http://abderaware.typepad.com/) for more opinions about the size of the .NET framework.
Richard Grimes speaks at conferences and writes extensively on .NET, COM, and
COM+. He is the author of Developing Applications with Visual Studio .NET
(Addison-Wesley, 2002). If you have comments about this topic, Richard can be
reached at email@example.com.