В основе технологии .NET лежит идея использования некоторого промежуточного машинно-независимого языка. В обычном программировании (с использованием любых существующих вне технологии .NET языков - от Ассемблера до ранних версий Delphi) программа, написанная в понятной для программиста нотации, компилировалась в последовательность машинных инструкций, "понятных" процессору. В новой технологии программа компилируется в термины машинно-независимого языка CIL (Common Intermediate Language - общий промежуточный язык) и сопровождается метаданными - подробными инструкциями как о самой программы, так и о всем необходимом для ее успешного выполнения. В момент, когда коды промежуточной программы (они называются управляемыми кодами) ставятся на исполнение, в дело вступает среда CLR (Common Language Runtime - общеязыковая среда исполнения), которая с помощью встроенного JIT-компилятора (JIT - just-in-time - вовремя, по мере надобности) переводит управляемые коды в набор исполняемых машинных инструкций и обеспечивает разнообразные вспомогательные действия для исполняемой программы.
Идея использования машинно-независимого промежуточного языка не нова. Впервые она была высказана еще в 1958 г. американским программистом Мелвином Е. Конвеем (Conway) в журнальной статье "Proposal For An UNCOL" ("Предложение по универсальному компьютерно-ориентированному языку"). Двухфазное кодирование имеет два существенных преимущества. Во-первых, предельно упрощается распространение программ. Переведенная в СIL программа может выполняться на любом компьютере, имеющем соответствующую среду исполнения. Причем в управляемый код включается вся системная информация, необходимая для нормального функционирования программы, так что отпадает необходимость в регистрации отдельных частей программы (объектов, модулей, динамических библиотек) в системном реестре.
Замечание:
В настоящее время технология .NET реализована для ОС семейства Windows. Существуют проекты переноса технологии в ОС FreeBSD, Mac OC X 10.2 и Linux. Однако распространение .NET на другие платформы затруднено, в основном, проблемами воспроизведения пользовательского интерфейса: экраны настольного компьютера, наладонного компьютера или мобильного телефона совершенно отличны.
Во-вторых, повышается защищенность программ и файлов: в управляемых кодах нет информации о файловой системе компьютера, на котором исполняется программа, или способах запуска программ, а среда исполнения сконструирована так, чтобы всемерно уберечь программно-аппаратные средства компьютера от атак вирусов, других злонамеренных программ, а также от программных ошибок.