In ".NET Framework Basics: The Common Language Runtime" (http://www.winnetmag.com/articles/index.cfm?articleid=37657) and ".NET Framework Basics: The Relationship Between the CLS and CLR" (http://www.winnetmag.com/articles/index.cfm?articleid=37907), I looked at how the Common Language Runtime (CLR) and Common Language Specification (CLS) function in the .NET Framework gives developers a consistent base on which to develop applications. Now I'll introduce the layer above the CLR--the Base Framework--and show you its role in the .NET architecture.

The Base Framework provides the fundamental classes that every .NET application uses, including the Object class, the String class, and the Type class. (These aren't the only classes, but they are the core ones.) Almost every aspect of developing applications with Visual Basic .NET involves objects, including some entities you might not think of as objects, such as strings and integers. All objects in Visual Basic .NET are derived from a base Object class called System.Object and inherit its methods. In the .NET Framework, even objects written in different languages can inherit from one another.

The String class represents Unicode data that applications written in different programming languages or for different cultures can share, thus avoiding the need to convert data between different string types. (In this case, "culture" refers to the format of data such as dates. For example, in the United States, today's date is formatted as February 6, 2003. In other cultures, the same date is 6 February 2003. Same information, different format.) Data in the String class can't be changed after a string is created--changing it creates a new string object.

The Type class represents type declarations--class types, interface types, array types, value types, and enumeration types. An object's Type class exposes metadata, or information about the object, during runtime to let the just-in-time (JIT) compiler generate machine code from the source code. (.NET applications are compiled twice. The first time, the language compiler converts the source code to an assembly made of executable code and metadata. During the second compiling--which is done when you install an application or the first time you call a method--the JIT compiler reads the metadata and converts the assembly to machine code.)

The Base Framework supports the next level of the .NET architecture that describes how data is organized and made accessible to the upper layers. I'll look at how data is stored in the .NET architecture next time.