Общая языковая инфраструктура
ИСО/МЭК 23271:2012(Е) | |
Аббревиатура | интерфейс командной строки |
---|---|
Статус | Опубликовано |
Год начался | 2000 |
Впервые опубликовано | 2001 год | (Экма) и 2003 год (ISO/IEC)
Последняя версия | Шестое издание июнь 2012 г |
Организация | Разработчики: Microsoft , Hewlett-Packard , Intel и другие. Стандартизировано: Ecma , ISO / IEC. |
комитет | ИСО/МЭК ОТК 1/ПК 22 |
Домен | Общий язык ( кроссплатформенный ) |
Лицензия | РЭНД |
Веб-сайт | ЭКМА-335 , ИСО/МЭК 23271 |
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 описывает следующие пять аспектов:
- Система общего типа (CTS)
- Набор типов данных и операций, общих для всех CTS-совместимых языков программирования .
- Метаданные
- Информация о структуре программы не зависит от языка , поэтому на нее можно ссылаться между языками и инструментами, что упрощает работу с кодом, написанным на языке, который разработчик не использует.
- Спецификация общего языка (CLS)
- CLS, подмножество CTS, представляет собой правила, которым должны соответствовать компоненты, разработанные с использованием/для поддерживаемых языков.
- Они применяются к потребителям (разработчикам, которые программно обращаются к компоненту, совместимому с CLS), платформам (разработчикам, которые используют компилятор языка для создания CLS-совместимых библиотек) и расширителям (разработчикам, которые создают такой инструмент, как компилятор языка). или анализатор кода, создающий CLS-совместимые компоненты).
- Система виртуального исполнения (VES)
- 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 Compact Framework — это коммерческая реализация Microsoft CLI для портативных устройств и Xbox 360 .
- .NET Micro Framework — это реализация CLI с открытым исходным кодом для устройств с ограниченными ресурсами.
- Mono — это альтернативная реализация CLI и сопутствующих технологий с открытым исходным кодом, в основном используемая для разработки мобильных устройств и игр.
См. также [ править ]
Примечания [ править ]
- ^ Jump up to: Перейти обратно: а б «ISO/IEC 23271:2012 – Информационные технологии. Общеязыковая инфраструктура (CLI)» . ИСО . Архивировано из оригинала 2 июля 2023 года.
- ^ Jump up to: Перейти обратно: а б «ЭКМА-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 г.