Открытая спецификация, используемая для определения платформы .NET, устаревшей версии .NET Framework и других сред выполнения.
Common Language Infrastructure ( CLI ) — это открытая спецификация и технический стандарт , первоначально разработанный Microsoft и стандартизированный ISO / IEC ( ISO/IEC 23271 ) и Ecma International ( ECMA 335 ) [1] [2] , который описывает исполняемый код и среду выполнения. среда, которая позволяет использовать несколько языков высокого уровня на разных компьютерных платформах без переписывания для конкретных архитектур. Это означает, что он не зависит от платформы. .NET Framework , .NET и Mono являются реализациями CLI. Формат метаданных также используется для указания определений API , предоставляемых средой выполнения Windows . [3] [4]
Обзор
Визуальный обзор инфраструктуры общего языка (CLI)
Помимо прочего, спецификация CLI описывает следующие пять аспектов:
Информация о структуре программы не зависит от языка , поэтому на нее можно ссылаться между языками и инструментами, что упрощает работу с кодом, написанным на языке, который разработчик не использует.
Спецификация общего языка (CLS)
CLS, подмножество CTS, представляет собой правила, которым должны соответствовать компоненты, разработанные с использованием/для поддерживаемых языков.
Они применяются к потребителям (разработчикам, которые программно обращаются к компоненту, совместимому с CLS), платформам (разработчикам, которые используют компилятор языка для создания CLS-совместимых библиотек) и расширителям (разработчикам, которые создают такой инструмент, как компилятор языка). или анализатор кода, создающий CLS-совместимые компоненты).
VES загружает и выполняет CLI-совместимые программы, используя метаданные для объединения отдельно сгенерированных фрагментов кода во время выполнения.
Все совместимые языки компилируются в Common Intermediate Language (CIL), который является промежуточным языком , абстрагированным от аппаратного обеспечения платформы. Когда код будет выполнен, VES для конкретной платформы скомпилирует CIL на машинный язык в соответствии с конкретным оборудованием и операционной системой.
В стандарте CLI, первоначально разработанном Microsoft, VES реализуется с помощью Common Language Runtime (CLR).
Набор библиотек, обеспечивающих множество общих функций, таких как чтение и запись файлов. Их ядром является библиотека базовых классов (BCL).
Стандартизация и лицензирование
В августе 2000 года Microsoft , Hewlett-Packard , Intel и другие работали над стандартизацией CLI. К декабрю 2001 года он был ратифицирован Ecma , а в апреле 2003 года последовала стандартизация ISO / IEC .
Microsoft и ее партнеры владеют патентами на CLI. Ecma и ISO/IEC требуют, чтобы все патенты, необходимые для реализации, были доступны на « разумных и недискриминационных условиях (RAND) ». Лицензирование RAND обычно требует выплаты роялти, что может стать причиной для беспокойства в отношении Mono . По состоянию на январь 2013 года ни Microsoft, ни ее партнеры не выявили каких-либо патентов, необходимых для реализации CLI, подпадающих под условия RAND.
По состоянию на июль 2009 года [5] Microsoft добавила C# и CLI в список спецификаций, к которым применяется «Обещание сообщества Microsoft» , [6] так что каждый может безопасно внедрять определенные версии стандартов, не опасаясь патентного иска со стороны Microsoft. Для реализации стандарта CLI требуется соответствие одному из поддерживаемых и определенных профилей стандарта, минимальным из которых является профиль ядра. Профиль ядра на самом деле представляет собой очень небольшой набор поддерживаемых типов по сравнению с хорошо известной базовой библиотекой установок .NET по умолчанию. Однако пункт о соответствии CLI позволяет расширять поддерживаемый профиль путем добавления к классам новых методов и типов, а также их производных от новых пространств имен. Но он не позволяет добавлять новых членов в интерфейсы. Это означает, что функции CLI можно использовать и расширять до тех пор, пока реализация соответствующего профиля не меняет поведение программы, предназначенной для запуска в этом профиле, допуская при этом неопределенное поведение программ, написанных специально для этой реализации.
В 2012 году Ecma и ISO/IEC опубликовали новую редакцию стандарта CLI. [1] [2]
Реализации
.NET Framework — это оригинальная коммерческая реализация CLI от Microsoft. Он поддерживает только Windows. В ноябре 2020 года он был заменен .NET.
.NET , ранее известный как .NET Core, — это бесплатный многоплатформенный преемник .NET Framework с открытым исходным кодом, выпущенный по лицензии MIT.
.NET Micro Framework — это реализация CLI с открытым исходным кодом для устройств с ограниченными ресурсами.
Mono — это альтернативная реализация CLI и сопутствующих технологий с открытым исходным кодом, в основном используемая для разработки мобильных устройств и игр.
^ ab «ISO/IEC 23271:2012. Информационные технологии. Общеязыковая инфраструктура (CLI)». ИСО . Архивировано из оригинала 2 июля 2023 года.
^ аб "ECMA-335". ЭКМА Интернешнл . Июнь 2012 г. Архивировано из оригинала 16 октября 2023 г.
^ «Введение в расширенную разработку приложений для Магазина Windows с использованием HTML5 и JavaScript» . Пресс-магазин Microsoft . 15 октября 2013 г. Архивировано из оригинала 30 марта 2023 г.
↑ де Икаса, Мигель (15 сентября 2011 г.). «WinRT демистифицируется». Архивировано из оригинала 30 ноября 2023 года.
↑ Галли, Питер (6 июля 2009 г.). «Стандарты Ecma C# и CLI». Порт 25 . Архивировано из оригинала 9 июля 2009 года . Проверено 26 сентября 2009 г.
^ в-алье (16 марта 2023 г.). «[MS-DEVCENTLP]: Обещание сообщества Microsoft». Microsoft Learn . Проверено 1 мая 2023 г.
Рекомендации
«Стандарт ECMA-335, инфраструктура общего языка (CLI)». Экма Интернешнл . Проверено 1 ноября 2023 г.
«ISO/IEC 23271, Общеязыковая инфраструктура». ИСО/МЭК . Проверено 27 сентября 2006 г.
«Ecma C# и стандарты общеязыковой инфраструктуры». Корпорация Майкрософт . Проверено 13 октября 2009 г.
«Языковая независимость и языконезависимые компоненты». Microsoft Learn . 21 декабря 2022 г. . Проверено 19 мая 2023 г.