Что такое «управляемый» код? - PullRequest
52 голосов
/ 12 сентября 2008

Я пишу код на C / C ++ почти двадцать лет, и я знаю Perl, Python, PHP и немного Java, и я учу себя JavaScript. Но я никогда не делал ничего .NET, VB или C #. Что именно означает управляемый код?

Википедия описывает это просто как

Код, который выполняется под управлением виртуальной машины

и в нем конкретно говорится, что Java - это (обычно) управляемый код, поэтому

  • почему этот термин относится только к C # / .NET?
  • Можете ли вы скомпилировать C # в .exe-файл, который также содержит виртуальную машину, или вам нужно упаковать его и передать другому .exe-файлу (по-Java)?

В том же духе,

  • является .NET языком или framework , и что именно здесь означает "framework"?

Хорошо, так что это больше, чем один вопрос, но для тех, кто работает в отрасли так долго, как я, я сейчас чувствую скорее N00B-иш ...

Ответы [ 15 ]

1 голос
/ 12 сентября 2008

.NET - это фреймворк. Среда CLR выполняет код Microsoft Intermediate Language (MSIL), который генерируется при компиляции решения (т. Е. Не компилируется в машинный код). Вы не можете содержать API в exe, и вы не захотите, так как он довольно большой. Основным преимуществом здесь является управление памятью (среди других преимуществ безопасности и, возможно, других, о которых я не знаю.)

0 голосов
/ 21 мая 2016

Управляемый код - MSIL, IL и Управляемый код одинаковы. Когда мы создаем наше приложение, в папке Bin создаются файлы .dll или .exe. Эти файлы называются управляемым кодом. Позже эти файлы передаются в CLR. генерировать нативный код, который будет понятен ОС.

0 голосов
/ 08 октября 2008

Лично я думаю, что слово "рамки" немного неправильное.

.NET - это «платформа», состоящая из среды выполнения (виртуальная машина CLR) и набора библиотек. Он полностью аналогичен Java или Perl или Python (ни один из которых никогда не упоминается как «фреймворки»).

В большинстве случаев слово «framework» используется для таких проектов, как Spring, Struts или QT, которые располагаются поверх платформы (т. Е. Не предоставляют своей собственной среды выполнения), например, библиотеки.

Но, в отличие от «библиотеки», фреймворк стремится переопределить основные операции базовой платформы. (Внедрение зависимостей Spring игнорирует логику вызова конструктора обычного Java-кода. Реализация сигналов и слотов QT не поддается обычному C ++-коду.)

Я знаю, что я просто педантичный ублюдок, но для меня .NET - это не фреймворк. Это платформа.

0 голосов
/ 12 сентября 2008

Может относиться к любому коду, выполняемому виртуальной машиной, а не напрямую процессором.

Я думаю, что это позволяет такие вещи, как сборка мусора и проверка границ массивов.

0 голосов
/ 12 сентября 2008

.NET - это фреймворк. Его можно использовать на многих языках (VB.NET, C #, IronPython, boo и т. Д.)

.NET всегда выполняется так, как интерпретируется, и вы не можете включить «VM» в .exe. Любой пользователь, желающий запустить ваше приложение .NET, должен иметь установленную платформу.

...