stringtranslate.com

Общая языковая инфраструктура

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 описывает следующие пять аспектов:

Система общего типа (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]

Реализации

Смотрите также

Примечания

  1. ^ ab «ISO/IEC 23271:2012. Информационные технологии. Общеязыковая инфраструктура (CLI)». ИСО . Архивировано из оригинала 2 июля 2023 года.
  2. ^ аб "ECMA-335". ЭКМА Интернешнл . Июнь 2012 г. Архивировано из оригинала 16 октября 2023 г.
  3. ^ «Введение в расширенную разработку приложений для Магазина Windows с использованием HTML5 и JavaScript» . Пресс-магазин Microsoft . 15 октября 2013 г. Архивировано из оригинала 30 марта 2023 г.
  4. де Икаса, Мигель (15 сентября 2011 г.). «WinRT демистифицируется». Архивировано из оригинала 30 ноября 2023 года.
  5. Галли, Питер (6 июля 2009 г.). «Стандарты Ecma C# и CLI». Порт 25 . Архивировано из оригинала 9 июля 2009 года . Проверено 26 сентября 2009 г.
  6. ^ в-алье (16 марта 2023 г.). «[MS-DEVCENTLP]: Обещание сообщества Microsoft». Microsoft Learn . Проверено 1 мая 2023 г.

Рекомендации

Внешние ссылки