2013-05-05 3 views
3

При чтении книги Troelsen «Pro C# 5.0 и .NET 4.5 Framework», я натолкнулся на эти 2 термина. Я понимаю более или менее то, что является обычным языком Runtime (CLR), но является ли «среда выполнения .NET» тем же, что и CLR?Является ли «CLR» тем же, что и «.NET runtime»?

Предполагаю, что это так.

ответ

7

Обычный язык Runtime - это конкретная реализация среды выполнения .NET, но есть и другие, а именно: the Mono runtime.

+0

Я вижу, другие, как Mono выполнения, как Portable.NET выполнения. Спасибо, я понял. – Aremyst

6

CLR часть поддержки, которую требуется программе .NET. Скорее большая часть, но это не единственный. Вы всегда получаете набор родных DLL, загруженных в .NET-процесс. Вы можете увидеть их, включив неуправляемую отладку, вкладку «Проект + Свойства», «Отладка», отметьте «Включить неуправляемую отладку кода». После запуска вы увидите эти DLL-файлы с окном Debug + Windows + Modules.

Я Задокументировать версии .NET 4.5 названия:

  • Mscoree.dll, то "загрузчик заглушек". Это тот, который загружает вашу программу .NET. Windows обладает специальными знаниями об этой DLL, загрузчик автоматически передает управление ей, когда обнаруживает исполняемый файл .NET. Очень нетривиальная вещь, которую он делает, - трансформировать процесс .NET в 64-разрядный процесс, хотя сам EXE-заголовок указывает на 32-разрядный процесс.
  • mscoreei.dll, хост CLR по умолчанию. Для CLR требуется хост, код, который адаптирует CLR к требуемым характеристикам исполнения. Примерами пользовательских хостов CLR являются SQL Server и ASP.NET. И процесс хостинга Visual Studio, vshost.exe, активен при отладке .NET-программы. Эта DLL также отвечает за параллельную поддержку версий, встроенную в .NET 4+, позволяющую процессу иметь несколько версий CLR.
  • clr.dll, это CLR
  • clrjit.dll, это просто по времени компилятор
  • msvcr110_clr0400.dll, библиотека времени выполнения. Другие DLL написаны на C++, эта DLL содержит основной код поддержки во время выполнения. Вы также используете некоторые из них сами, Math.Pow() в конечном итоге вызывает функцию pow() в этой DLL, например.

Вы также увидите группу DLL, загружаемых с помощью:: windows \ system32, DLL Windows. Важными являются ntdll.dll, kernel32.dll и user32.dll. Больше в типичном .NET-процессе. Вы не можете считать их компонентами среды .NET, так как каждый процесс в Windows будет их использовать.

7

Common Language Infrastructure (CLI), определенный в standard ECMA-335, описывает среди прочего:

  • Common Type System (CTS);
  • Общая спецификация языка (CLS);
  • Система виртуального исполнения (VES);
  • Обычный промежуточный язык (CIL).

веси выделяется в этом списке (это не Common), и это описание гипотетической системы исполнения. Реальная реализация выполнения часто называется Common Language Runtime (CLR), но этот термин не отображается в ECMA-335.

Существует несколько вариантов реализации CLI: .NET Framework, .NET Micro Framework, платформы XNA, Silverlight, платформы Mono и т. Д. Каждая платформа или инфраструктура реализует одну или несколько версий CLR.

Существует Microsoft CLR (также известный как .NET CLR), часто называемый .NET runtime. Существует также Mono CLR, часто называемая Mono runtime. Есть также Silverlight CLR и .NET Compact CLR.

Поскольку Microsoft CLR является первым и самым известным CLR, безоговорочное использование термина CLR обычно относится к какой-либо конкретной версии среды выполнения .NET. Но CLR не конкретная реализация .NET runtime ... это наоборот.

+0

Благодарим вас за ответ. но я потерялся в самом начале: что такое система времени выполнения? – BKSpurgeon

Смежные вопросы