Общеязыковая инфраструктура
Общеязыковая инфраструктура (англ . Common Language Infrastructure или CLI) — стандартизированная спецификация, описывающая виртуальную среду для выполнения приложений, основная характеристика которой — позволять приложениям, написанным на разных языках высокого уровня , впоследствии выполняться на нескольких языков, как аппаратных , так и программных платформ без необходимости переписывать или перекомпилировать их исходный код .
Хотя CLI берет свое начало в Microsoft (первоначально планировалось разработать общую среду выполнения для COM под названием Common Object Runtime, которое позже было расширено и обобщено, чтобы стать CLI), его спецификации были доведены до ECMA (Европейский Ассоциация производителей компьютеров), важная европейская организация по стандартизации, для ее стандартизации в 2000 году. После года совместной работы между ECMA, Microsoft и другими компаниями, которые совместно спонсировали процесс ( Intel , HP , IBM и Fujitsu среди прочих), стандарт ECMA-335, определяющий среду CLI, наконец, появился в декабре 2001 г. В апреле 2003 г. ISO ратифицировала этот стандарт под названием ISO/IEC 23271:2003.
Чтобы лучше понять включение каждой из основных частей архитектуры CLI, интересно проанализировать цели проектирования, вытекающие из ее концепции. В соответствии с вашей спецификацией архитектура CLI должна:
- Разрешить написание интероперабельных компонентов независимо от базовой платформы и используемого языка программирования .
- Выставляйте все программные сущности через единую унифицированную систему типов (в спецификации эта система известна как CTS, или Common Type System ).
- Упакуйте все типы в полностью самоописываемые и портативные устройства.
- Загружайте типы таким образом, чтобы они были изолированы друг от друга во время выполнения , но также могли совместно использовать ресурсы.
- Разрешайте зависимости между типами во время выполнения с помощью гибкой политики, которая может учитывать версию, атрибуты локализации и административные политики.
- Запускайте приложения под контролем привилегированной среды, которая позволяет контролировать и применять политики во время выполнения.
- Спроектируйте всю инфраструктуру и службы на основе расширяемых метаданных , чтобы вся архитектура могла приспосабливаться к новым дополнениям и изменениям с минимальными последствиями.
- Возможность выполнять низкоуровневые задачи, такие как загрузка типов в память, связывание с библиотеками и компиляция в машинный код только при необходимости (этот подход обычно известен как «по требованию» или « точно вовремя »).
- Предоставьте ряд общих функций с помощью группы библиотек программирования, которые разработчики могут использовать для создания своих приложений.
Microsoft .NET на самом деле является расширенным набором этой спецификации, то есть она предоставляет все необходимое для ее соответствия, а также добавляет ряд инструментов, библиотек и функций, изначально не предусмотренных ею, и которые обеспечивают огромную полезность и гибкость для разработчиков ( например, библиотеки для создания приложений и веб-сервисов , доступ к движкам баз данных, графические элементы управления, инструменты для дизассемблирования сборок, отладчики и т. д.). Хотя он бесплатный, его исходный код закрыт, и он распространяется Microsoft только в версиях для операционных систем Windows 98 и ее преемников.
Спецификация CLI состоит из четырех частей:
- Система общего типа, на английском Common Type System (CTS).
- Метаданные .
- Общеязыковые спецификации (CLS).
- Виртуальная система исполнения, от англ . Virtual Execution System (VES).