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]

Обзор

Визуальный обзор Common Language Infrastructure (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 Community Promise , [6] поэтому любой может безопасно реализовать указанные редакции стандартов, не опасаясь патентного иска от Microsoft. Для реализации стандарта CLI требуется соответствие одному из поддерживаемых и определенных профилей стандарта, минимальным из которых является профиль ядра. Профиль ядра на самом деле представляет собой очень небольшой набор типов для поддержки по сравнению с хорошо известной базовой библиотекой установок .NET по умолчанию. Однако пункт соответствия CLI позволяет расширять поддерживаемый профиль путем добавления новых методов и типов в классы, а также путем вывода из новых пространств имен. Но он не позволяет добавлять новых членов в интерфейсы. Это означает, что функции CLI могут использоваться и расширяться, пока соответствующая реализация профиля не изменяет поведение программы, предназначенной для запуска в этом профиле, при этом допуская неопределенное поведение из программ, написанных специально для этой реализации.

В 2012 году Ecma и ISO/IEC опубликовали новую редакцию стандарта CLI. [1] [2]

Реализации

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

Примечания

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

Ссылки

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