Информация о структуре программы не зависит от языка , поэтому на нее можно ссылаться между языками и инструментами, что упрощает работу с кодом, написанным на языке, который разработчик не использует.
Спецификация общего языка (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 Community Promise , [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)". ISO . Архивировано из оригинала 2 июля 2023 г.
^ ab "ECMA-335". ECMA International . Июнь 2012. Архивировано из оригинала 16 октября 2023.
^ «Введение в расширенную разработку приложений для Магазина Windows с использованием HTML5 и JavaScript». Microsoft Press Store . 15 октября 2013 г. Архивировано из оригинала 30 марта 2023 г.
^ де Икаса, Мигель (15 сентября 2011 г.). "WinRT демистифицирован". Архивировано из оригинала 30 ноября 2023 г.
^ Галли, Питер (6 июля 2009 г.). "Стандарты Ecma C# и CLI". Порт 25. Архивировано из оригинала 9 июля 2009 г. Получено 26 сентября 2009 г.
^ v-alje (16 марта 2023 г.). "[MS-DEVCENTLP]: Microsoft Community Promise". Microsoft Learn . Получено 1 мая 2023 г.
Ссылки
"Стандарт ECMA-335, Common Language Infrastructure (CLI)". Ecma International . Получено 1 ноября 2023 г. .
"ISO/IEC 23271, Common Language Infrastructure". ISO/IEC . Получено 27 сентября 2006 г. .
"Ecma C# и стандарты Common Language Infrastructure". Корпорация Microsoft . Получено 13 октября 2009 г.
«Независимость от языка и независимые от языка компоненты». Microsoft Learn . 21 декабря 2022 г. Получено 19 мая 2023 г.
Внешние ссылки
ISO/IEC 23271:2012 Информационные технологии — Инфраструктура общего языка (CLI)