Классы понадобились для представления сложных типов данных. Поскольку экземпляры класса размещаются в управляемой куче, их создание и уничтожение связано с определенными издержками. Однако некоторые типы являются «простыми», и лучше помещать их в стек, на который не распространяется действие сборщика мусора и который обеспечивает более высокую производительность.
Класс в .NET Framework аналогичен классу в C++: совокупность кода и данных, формирующая объект при создании экземпляра класса. В традиционных объектно-ориентированных языках, таких как C++, классы содержат члены-переменные и члены-функции.
Прежде чем углубиться в изучение библиотеки классов Microsoft .NET Framework (FCL) и разнообразных моделей программирования, которые она поддерживает, полезно разобраться в том, из чего образована эта библиотека.
Чтобы увидеть Hello.exe так, как видит его CLR, откройте Hello.exe в ILDASM, На экране появится окно (рис. 1-6). Дважды щелкнув первый красный треугольник-декларацию сборки, вы увидите список сборок, от которых зависит данная сборка («.assembly extern mscorlib*-) (рис. 1-7).
Часто CIL называют псевдоассемблером, так как он определяет набор команд некоего процессора. Однако в данном случае процессором является не кусок кремния, а CLR. При написания программ для .NET Framework знать CIL нужно не более, чем ассемблер х8б для программирования под Windows.
Основные метаданные модуля хранятся в виде набора таблиц. В одной из них — TypeDef — перечислены определенные в этом модуле типы. (Тип — это общий термин, обозначающий классы, структуры, перечисления и иные формы данных, поддерживаемые CLR). В другой таблице перечислены методы, реализованные этими типами, в третьей — поля, в четвертой — свойства и т. д.
.NET Framework — это платформа для построения и исполнения приложений. Ее основные компоненты — общеязыковая исполняющая среда (common language runtime, CLR) и библиотека классов .NET Framework (FCL).
Инициатива Microsoft .NET Microsoft NET — это грандиозная попытка Microsoft отойти от традиционных методов разработки и превратить — с помощью других компаний разработчиков —Интернет в сервисо-ориентированную программную платформу.
С-программисты, пишущие для Windows, обычно используют в своих программах вызовы API Windows и DLL других производителей: С++ программисты часто используют библиотеки классов, написанные ими самими или стандартные библиотеки типа MFC. Visual Basic-программисты используют API Visual Basic, представляющие абстракцию низкоуровневых API ОС.
Теперь вы знаете, что компиляторы .NET Framework генерируют управляемы е модули и что эти модули содержат CIL и метаданные. Однако вас может удивить, что CLR неспособен использовать управляемые модули напрямую. Дело в том, что базовой единицей защиты, управления версиями и развертывания в.NET Framework является не управляемый модуль, а сборка (assembly).