Вопрос

Я хочу знать, в чем именно разница между CLR и CLI?Судя по всему, что я прочитал до сих пор, это указывает на то, что CLI является подмножеством CLR.Но разве все в CLR не является обязательным?Что именно можно исключить из CLR для создания CLI?

Это было полезно?

Решение

Другие советы

CLR — это среда выполнения, в которой приложение .NET безопасно размещается и запускается.

Вы можете рассматривать ее как частную операционную систему .NET, которая запускается и загружается непосредственно перед запуском приложения .NET.

CLR заботится о некоторых важных требованиях любого .NET-приложения, реализация которых в противном случае потребовала бы написания большого количества тщательно продуманного кода;требования, которые носят целостный характер и необходимы для хорошей, эффективной и безопасной работы любого приложения [например.Управляйте распределением памяти и освобождайте ее, когда она не требуется, избегайте висячих указателей, избегайте ошибок приведения типов и т. д.]

CLI, с другой стороны, представляет собой спецификацию/набор руководств, которые объясняют, как реализовать среду выполнения приложений и природу сгенерированного кода приложения, что позволяет использовать несколько языков высокого уровня на разных компьютерных платформах без переписывания для конкретных архитектур.

CLI разработан Microsoft и стандартизирован ISO и ECMA.

CLR представляет собой практическую реализацию раздела VES [Virtual Execution System] CLI и образует один из основных компонентов платформы MS.NET.

Говоря простым языком, CLI — это рецепт, а CLR — это кухня :-)

CLR (Common Language Runtime) — это реализация Microsoft VES (Virtual Execution System).VES вместе с CTS (Common Type System), CLS (Common Language Spectrum) и спецификацией метаданных являются частью спецификации CLI (Common Language Infrastructure).

VES — это стандартизированная спецификация виртуальной машины, которая должна быть реализована для загрузки и выполнения модулей CIL (Common Intermediate Language) (dll и exe).Реализация VES также предоставляет такие службы времени выполнения, как сбор мусора и безопасность.

ECMA C# и стандарты общеязыковой инфраструктуры

CLR — это среда выполнения .net, в которой запускаются все виды приложений .net. Например, когда вы пишете свой код на C# или другом языке из стека dot NET, компилятор компилирует и преобразует его в управляемый модуль.Управляемый модуль — это IL (промежуточный язык) и метаданные. Прежде всего, важно помнить, что всякий раз, когда вы компилируете исходный код, компилятор переводит его в управляемый модуль.Уточним: это не машинный код, который будет выполнять ваш процессор. Фактически, IL — это промежуточный язык, близкий к ассемблеру. Точно так же он также известен как объектно-ориентированный машинный язык.

Проверьте эту статью для более подробного объяснения:

http://alevryustemov.com/programming/common-language-runtime/

CLR — это полная среда, в которой CLI, CTS, CLS работают в рамках интеграции, а также включают сбор мусора, управление памятью, безопасность, промежуточный язык для собственного кода...интерфейс командной строки является спецификацией для формата исполняемого кода и среды выполнения, которая может выполнить этот код.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top