В данной статье я постараюсь дать общие понятия платформы .NET. Что представляет из себя .NET, зачем она существует и как она работает – эти вопросы зачастую совсем не понятны обычному новичку. Часто, при первом знакомстве с процессом разработки на платформе .NET начинающий программист опускает изучение тем, касающихся устройства самой .NET, а переходит непосредственно к изучению синтаксиса самого .NET-совместимого языка, в нашем случае C#.
Собственно, подход достаточно верный для абсолютного новичка в программировании. Однако, тем не менее рано, или поздно, все равно придется знакомиться с основными понятиями самой среды .NET.
Итак. Когда Вы слышите фразу «Платформа .NET», то знайте, что за этим понятием стоит совокупность множества служб и компонентов, которые в конечном итоге позволяют разработанному на языке c# (а также любом другом .NET-поддерживаемом) приложению работать в среде Windows. Пока мы будем говорить лишь об операционной системе Windows.
Двумя базовыми составляющими платформы .NET являются общеязыковая среда выполнения (CLR) и библиотека общих классов.
Библиотека классов представляет собой огромный набор всевозможных классов, которые в процессе их использования вами, как разработчика, в конечном итоге предоставляют необходимую функциональность для вашего разрабатываемого приложения.
Соответственно, все классы строго структурированы и разбиты по группам, ведь каждый из них инкапсулирует в себе некоторую уникальную функциональность. В отдельные группы попадают те классы, функциональность которых схожа, либо относится к одной теме, либо по еще каким-либо признакам.
Что касается сердца платформы .NET, я имею в виду CLR, то CLR представляет собой некоторую программную оболочку, которая управляет выполнением вашего кода. Это управление проявляется в памяти, в потоках приложения, в удаленном взаиможействии, а также в строгом контроле соответствия исполняемого окда множеству требований. Одним словом, CLR – это набор некоторых служб, которые и выполняют ваш код. От сюда следует один важный вывод: не каждый код сможет быть выполнен под управлением CLR. Естественно, существует великое множество языков программирования и каждый из них так, или иначе связан с некоторой платформой. В виду этого говорят, что тот код, который разрабатывался для выполнения CLR (то бишь платформой .NET) называется управляемым. А тот, который не был рассчитан на выполнение под .NET, называется неуправляемым. Но эти понятия касаются только самой .NET.
Взгляните на схематическое представление .NET на следующем рисунке (пока мы рассматриваем вариант управляемого кода)

Рисунок 1. Взаимодействие .NET
В итоге, у CLR имеется взаимодействие с операционной системой. Также CLR имеет доступ к библиотеке базовых классов .NET framework и пользовательским классам. Заметьте, что пользовательские классы могут базироваться на базовых классах.
Теперь, когда мы познакомились со структурой платформы .NET, можем оговорить главные причины её существования и основные преимущества в её использовании:
- Для разработки приложения под .NET возможно пользоваться одним из многих .NET-поддерживаемых языков. Код, написанный на разных языках, будет работать одинаково. Это ещё дает то преимущество, что код, написанный на одном языке, может использоваться кодом, написанном на другом;
- Наличие общей библиотеки базовых классов, использовать которую могут все .NET-совместимые языки;
- Общий механизм CLR для любого .NET –совместимого языка;
- Управление и минимизация всевозможных конфликтов версий при развертывании приложения на целевой машине. Кроме того нет необходимости в регистрации компонентов в системном реестре;
- Процесс разработки любого типа приложений подобен и во многом идентичен, как WindowsForms-приложений, так и веб-приложений;
- Полная поддержка и контроль соответствия структуры исполняемого кода стандартам объектно-ориентированного программирования.
Подытожить все выше изложенное можно так. Концепция .NET направлена на четкий и максимальный контроль качества исполняемого кода, на кардинальное облегчение процесса разработки (когда за редким исключением вам не придется думать об очистке памяти в процессе работы приложения, разрешать конфликты версий, …), а также предоставление механизмов для создания и выполнения кода в четких принципах ООП.
На этом первое общее знакомство с .NET framework можно завершать. Подробнее о CLR, CTS, CLS и библиотекой базовых классов мы поговорим в следующих статьях.