Хорошо организованный интерфейс программирования
Тот, кто часто сталкивается с необходимостью использования Win32 API, знает, насколько противоречиво, запутанно и несистематично организован этот программный интерфейс. В Win32 API программист может обнаружить вызовы функций с одинаковыми именами (старая версия, оставленная для обратной совместимости, новая версия и улучшенная совсем новая версия), громоздкие структуры, передаваемые в качестве аргументов, в которых множество членов зарезервировано для будущего использования, отсутствие объектно-ориентированного подхода и явное присутствие хаоса. Кроме этого, при разработке в Win32 одним из «вечно живых» вопросов была проблема утечек памяти, вызванная обязанностью в явной форме захватывать и освобождать память, возложенной на программиста. Конечно, это не столько вина, сколько беда разработчиков Microsoft, которые все время существования и развития Windows заботились об обратной совместимости программ и средств программирования. В.NET был сделан большой шаг вперед. Интерфейс программирования. NET является полностью объектно-ориентированный интерфейсом, с хорошо организованной иерархией имен и классов, легкий для изучения и интуитивно понятный для программиста.
Common Intermediate Language
Когда разработчик пишет программы для Microsoft Windows на C/C++, в результате он получает файл с расширением. exe, то есть файл в формате PE (portable executаble). Файлы в таком формате всегда содержат код, специфичный для процессора, на котором они выполняются. Файлы, созданные в технологии. NET, также имеют расширение. exe и внешне подобны файлам в формате PE. Однако на самом деле внутри они содержат не машинные инструкции процессора, а инструкции некоторого промежуточного языка, который известен под несколькими названиями (аббревиатурами) –
Common language runtime
Этот общий промежуточный язык, независимый от платформы и являющийся результатом работы разных программных средств, позволяет обеспечивать взаимодействие между программным кодом, написанным на разных языках. Модуль, написанный на одном языке, может быть с легкостью использован программой, написанной на другом языке. К межъязыковой среде выполнения относится и сборщик мусора (garbage collector), который должен следить не только за памятью каждой программы, но и за уборкой памяти. Естественно, автоматическое распределение памяти также относится к области ответственности межъязыковой среды выполнения.
Common Language Specification
Общеязыковая спецификация – это набор стандартов, определяющих основные требования к архитектуре языка, соблюдение которых делают программы, написанные на разных языках «прозрачными» друг для друга. На самом деле, если промежуточный язык один и тот же, среда выполнения одна и та же, то нужна только небольшая синхронизация общих правил, чтобы программа, написанная на одном языке, ничем не отличалась от программы, написанной на другом языке после компиляции обеих программ в IL. А если на уровне IL отличий нет, то значит программы, написанные на одном языке, могут с легкостью использовать модули, написанные на другом языке. Мало того, извечный спор и противостояние языков C и VB в. NET теряет смысл, посколько на уровне IL разница в коде между ними стирается.
Common type system
Общая система типов является основой построения общеязыковой спецификации и определяет типы, которые в обязательном порядке должен поддерживать любой компилятор, совместимый с. NET.
Common Language Infrastructure
Этот набор правил, процедур и низкоуровневых деталей реализации. NET зарегистрирован как открытый стандарт в ECMA. Он предназначен для создания компиляторов, средств разработки программ и отладки любыми разработчиками, желающими создавать подобные инструменты для. NET.
Compact Framework