CLR и CLI - в чем разница? - PullRequest
       30

CLR и CLI - в чем разница?

48 голосов
/ 26 января 2009

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

Ответы [ 4 ]

72 голосов
/ 26 января 2009

CLR является реализацией Microsoft стандарта CLI .

46 голосов
/ 24 июня 2012

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

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

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

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

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

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

На языке неспециалистов CLI - это рецепт, а CLR - кухня: -)

15 голосов
/ 27 марта 2013

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

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

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

0 голосов
/ 17 июня 2013

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

...