Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Common Language Infrastructure ( CLI ) является открытой спецификацией (технический стандарт) , разработанный Microsoft и стандартизованный ISO и Ecma [1] [2] , которая описывает исполняемый код и среду выполнения , что позволяет несколько языков высокого уровня , которые будут использоваться на различных компьютерные платформы без переписывания для конкретных архитектур. Это означает, что он не зависит от платформы. .NET Framework , .NET и Mono являются реализациями CLI.

Обзор [ править ]

Визуальный обзор Common Language Infrastructure (CLI)

Среди прочего, спецификация CLI описывает следующие четыре аспекта:

Система общих типов (CTS)
Набор типов данных и операций, общих для всех CTS-совместимых языков программирования .
Метаданные
Информация о структуре программы не зависит от языка , поэтому на нее можно ссылаться между языками и инструментами, что упрощает работу с кодом, написанным на языке, который разработчик не использует.
Спецификация общего языка (CLS)
Интерфейс командной строки должен соответствовать набору базовых правил, на которые нацелен любой язык, поскольку этот язык должен взаимодействовать с другими языками, совместимыми с CLS. Правила CLS определяют подмножество системы общих типов.
Virtual Execution System (VES)
VES загружает и выполняет CLI-совместимые программы, используя метаданные для объединения отдельно сгенерированных фрагментов кода во время выполнения.

Все совместимые языки компилируются в Common Intermediate Language (CIL), который является промежуточным языком , абстрагированным от оборудования платформы. Когда код выполняется, VES для конкретной платформы компилирует CIL на машинный язык в соответствии с конкретным оборудованием и операционной системой.

Стандартизация и лицензирование [ править ]

В августе 2000 года Microsoft , Hewlett-Packard , Intel и другие работали над стандартизацией интерфейса командной строки. К декабрю 2001 года он был ратифицирован Ecma , а в апреле 2003 года последовала стандартизация ISO .

Microsoft и ее партнеры владеют патентами на интерфейс командной строки. Ecma и ISO требуют, чтобы все патенты, необходимые для реализации, были доступны на « разумных и недискриминационных (RAND) условиях ». Для лицензирования RAND обычно требуется некоторая выплата роялти, что может быть поводом для беспокойства в отношении Mono . По состоянию на январь 2013 года ни Microsoft, ни ее партнеры не выявили каких-либо патентов, необходимых для реализаций интерфейса командной строки, подпадающих под условия RAND.

С июля 2009 года [3] Microsoft добавила C # и CLI в список спецификаций, к которым применяется Microsoft Community Promise , [4]так что любой может безопасно внедрить указанные редакции стандартов, не опасаясь патентного иска со стороны Microsoft. Для реализации стандарта CLI требуется соответствие одному из поддерживаемых и определенных профилей стандарта, минимальным из которых является профиль ядра. Профиль ядра на самом деле представляет собой очень небольшой набор поддерживаемых типов по сравнению с хорошо известной базовой библиотекой стандартных установок .NET. Однако пункт о соответствии интерфейса командной строки позволяет расширять поддерживаемый профиль, добавляя новые методы и типы к классам, а также создавая их из новых пространств имен. Но это не позволяет добавлять новые элементы в интерфейсы. Это означает, что функции интерфейса командной строки могут использоваться и расширяться до тех пор, пока соответствующая реализация профиля не изменяет поведение программы, предназначенной для работы в этом профиле,при этом допуская неопределенное поведение программ, написанных специально для этой реализации.

В 2012 году Ecma и ISO опубликовали новую редакцию стандарта CLI, [1] [2], на которую не распространяются обязательства сообщества. [4]

Реализации [ править ]

  • .NET Framework - это оригинальная коммерческая реализация интерфейса командной строки Microsoft. Он поддерживает только Windows. В ноябре 2020 года он был заменен .NET.
  • .NET - это бесплатный многоплатформенный преемник .NET Framework с открытым исходным кодом, выпущенный под лицензией MIT.
  • .NET Compact Framework - это коммерческая реализация Microsoft интерфейса командной строки для портативных устройств и Xbox 360 .
  • .NET Micro Framework - это реализация интерфейса командной строки с открытым исходным кодом для устройств с ограниченными ресурсами.
  • Mono - это альтернативная реализация интерфейса командной строки и сопутствующих технологий с открытым исходным кодом, в основном используемая для разработки мобильных приложений и игр.

См. Также [ править ]

  • Стандартные библиотеки (CLI)
  • Список языков интерфейса командной строки
  • .NET Standard

Заметки [ править ]

  1. ^ a b ISO / IEC 23271: 2012 - Информационные технологии - Common Language Infrastructure (CLI)
  2. ^ a b Стандарт ECMA-335 - 6-е издание (июнь 2012 г.)
  3. ^ «Стандарты Ecma C # и CLI - Порт 25: Сообщество открытого исходного кода в Microsoft» . 6 июля 2009 года в архив с оригинала на 9 июля 2009 года . Проверено 26 сентября 2009 года .
  4. ^ a b Охватываемые спецификации | Открытые спецификации Microsoft

Ссылки [ править ]

  • «Стандарт ECMA-335, Общая языковая инфраструктура (CLI)» . Ecma International . Проверено 31 августа 2005 года .
  • «ISO / IEC 23271, Общая языковая инфраструктура» . ISO . Проверено 27 сентября 2006 года .
  • «Ecma C # и стандарты общеязыковой инфраструктуры» . Корпорация Microsoft . Проверено 13 октября 2009 года .

Внешние ссылки [ править ]

  • ISO / IEC 23271: 2012 Информационные технологии - Common Language Infrastructure (CLI)