Chapter 1:The .NET Foundation 9   This current set of .NET Enterprise Servers is considered part of the .N ET platform mainly because they are tightly coupled with XML, a language the .NET platform  understands very well, thus allowing them to communicate and work together with ease. .NET s Foundation The foundation of the .NET platform is the .NET Framework, which we have  already introduced. The .NET Framework sits on top of the operating system and i s made up of two parts, the Common Language Runtime and the Base Class Libraries. Each on e of these parts plays an important role in the development of .NET applications and serv ices. The Common Language Runtime Many different languages and platforms provide a runtime, and the .NET F ramework is no exception. You will find, however, that this runtime is quite different  from most. The Common Language Runtime (CLR) in the .NET Framework manages the ex ecution of the code and provides access to a variety of services that will make the dev elopment process easier. The CLR has been developed to be far superior to previous runtimes, such  as the VB runtime, by attaining the following:  Cross-language integration  Code access security  Object lifetime management  Debugging and profiling support Code that is compiled and targeted to the CLR is known as managed code. Managed code provides metadata that is needed for the CLR to provide the services of multilanguage sup port, code security, object lifetime management, and memory management. NOTE: Metadata is basically "data  about data"  or a description of the contents of a .NET component. This metadata is stored within the assembly manifest. In the past, it was difficult for components written in competing languages to interact with one another. The .NET Framework uses metadata so that .NET components are self-describing, making them easy to interoperate with other components. Compilation to managed code The .NET Framework requires that you use a language compiler that is tar geted at the CLR, such as the Visual Basic .NET, C#, C++ .NET, or JScript .NET compilers p rovided by Microsoft. Note that there are a lot of third-party compilers on the mar ket (such as COBOL and Perl), and the number will continue to grow. So how does the code that you typed into Visual Studio .NET become the c ode that the user receives when he is using your application? It is fairly simple and stra ightforward. Figure 1-4 shows a diagram of the compilation process.