Термин · Глоссарий B2B-ПО

CLI (Common Language Infrastructure) (CLI (Common Language Infrastructure))

CLI (Common Language Infrastructure) – открытый стандарт Microsoft (ECMA-335, ISO/IEC 23271), описывающий исполняемую среду для многоязычных приложений: единый промежуточный язык (CIL), систему типов (CTS), метаданные и виртуальную машину CLR. Является основой платформы .NET.

Буква «C» В категориях: 5 Платформ: 6+

Введение

Common Language Infrastructure (CLI) – это открытая спецификация, разработанная Microsoft и стандартизированная организацией ECMA как ECMA-335 (впервые в 2001 году), а также ISO/IEC 23271. CLI описывает исполнительную среду, позволяющую программам, написанным на разных языках программирования, выполняться на единой виртуальной машине без изменений исходного кода.

Эталонная реализация CLI – общеязыковая среда выполнения Microsoft CLR (Common Language Runtime), входящая в платформу .NET. Открытая кроссплатформенная реализация – Mono, а с 2016 года – .NET Core и его преемник **.NET 5+**, поддерживающие Windows, Linux и macOS.

История и контекст

CLI была разработана в рамках проекта .NET, анонсированного Microsoft в 2000 году. Стратегическая цель – создать платформу, аналогичную Java Virtual Machine (JVM), но поддерживающую множество языков первого класса: C#, VB.NET, F#, C++/CLI и другие. В 2001 году ECMA стандартизировала как CLI (ECMA-335), так и язык C# (ECMA-334). В 2003 году ISO присвоил соответствующие номера (ISO/IEC 23271 и 23270).

Параллельно Microsoft передала часть реализации в открытый доступ. Проект Mono (2001) под руководством Мигеля де Икаса позволил запускать .NET-приложения на Linux и macOS. В 2014 году Microsoft анонсировала .NET Core как полностью открытую (MIT/Apache) реализацию CLI для кроссплатформенной разработки.

Как это работает

CLI определяет несколько ключевых компонентов:

  • CIL (Common Intermediate Language) – байт-код, в который компиляторы всех поддерживаемых языков преобразуют исходный код. Аналог Java bytecode.
  • CLR (Common Language Runtime) – виртуальная машина, исполняющая CIL: JIT-компиляция в машинный код, управление памятью (Garbage Collection), безопасность, обработка исключений.
  • CTS (Common Type System) – единая система типов, обеспечивающая совместимость объектов между языками (например, System.Int32 одинаков для C# и F#).
  • CLS (Common Language Specification) – подмножество CTS, гарантирующее, что компоненты, созданные на одном языке, можно использовать из другого.
  • Метаданные: каждая сборка (.dll или .exe) содержит описание своих типов и методов в стандартном формате, что обеспечивает рефлексию и самоописание.

Где применяется

  • Корпоративная разработка на .NET: бизнес-приложения, веб-сервисы (ASP.NET Core), микросервисы.
  • Игровая разработка: Unity использует Mono – реализацию CLI – как скриптовый движок.
  • Кроссплатформенные приложения: .NET MAUI позволяет создавать мобильные и десктопные приложения из единой кодовой базы.
  • Cloud Native разработка: .NET 8/9 активно используется в контейнерах Docker/Kubernetes на платформах Azure, AWS, GCP.

Преимущества и ограничения

Преимущества: языковая независимость позволяет командам использовать C#, F# и другие языки для разных задач в одном проекте. Мощная экосистема NuGet (более 350 000 пакетов). Открытый стандарт и открытый код (.NET с 2014 года).

Ограничения: JIT-компиляция добавляет накладные расходы при старте приложения (решается AOT-компиляцией в .NET 7+). Исторически .NET был привязан к Windows, хотя .NET Core/5+ решили эту проблему.

Связь с другими понятиями

CLI является фундаментом платформы .NET в целом. Концептуально аналогична JVM (Java Virtual Machine), хотя акцент сделан на многоязычности. Приложения CLI разворачиваются в контейнерах Docker и управляются через CI/CD-пайплайны. Разработка на платформе ведётся в IDE Visual Studio или JetBrains Rider.

Понятия из глоссария Цифрового маркетплейса, которые часто встречаются вместе с термином «CLI (Common Language Infrastructure)».

Платформы класса «CLI (Common Language Infrastructure)»

Решения из каталога Цифрового маркетплейса, относящиеся к этому классу ПО. Карточки ведут на полные карточки платформ с тарифами, обзорами и кейсами внедрения.

Онколинк

Онколинк

Разработка ПО
Платформа для управления онкологическими пациентами и координации медицинского обслуживания. Входит в Единый р...
Цена по запросу
Подробнее →
MO

Moon

Разработка ПО
Moon - platforma avtomatizirovannogo testirovaniya veb-prilozheniy v nastol'nykh i mobil'nykh brauzerakh po pr...
Цена по запросу
★ 4.2
Подробнее →
Модуль обмена C3D Converter

Модуль обмена C3D Converter

Разработка ПО
Модуль обмена C3D Converter отвечает за чтение и запись 3D-моделей в файлах нейтральных форматов и в собственн...
Цена по запросу
Подробнее →
JaCarta АРМ УЦ

JaCarta АРМ УЦ

Разработка ПО
ПО JaCarta АРМ УЦ - приложение, позволяющее генерировать ключевые пары с использованием встроенных криптографи...
Цена по запросу
★ 4.7
Подробнее →
АВ

Автограмма

Разработка ПО
Автограмма — визуальная среда разработки встраиваемых систем управления (No-Code/IDE) для промышленной автомат...
Цена по запросу
Подробнее →

Категории каталога

Разделы каталога Цифрового маркетплейса, в которые входят решения, использующие «CLI (Common Language Infrastructure)».

Где применяется

Отрасли, в которых «CLI (Common Language Infrastructure)» используется на практике. Откройте отраслевой раздел Цифрового маркетплейса, чтобы увидеть подходящие решения, кейсы и новости.

Частые вопросы про CLI (Common Language Infrastructure)

CLI – это то же самое, что .NET?

.NET – конкретная реализация от Microsoft. CLI – открытый стандарт ECMA-335, которому .NET соответствует. Существуют и другие реализации CLI: Mono, .NET Core, Xamarin.

Чем CLI отличается от JVM?

Оба – виртуальные машины для байт-кода. Главное отличие: CLI изначально спроектирован для нескольких языков (C#, F#, VB.NET и др.), тогда как JVM оптимизирован под Java, хотя поддерживает Kotlin, Scala и другие.

Что такое CIL?

Common Intermediate Language – байт-код CLI. Компиляторы C#, F# и других языков переводят исходный код в CIL, который CLR исполняет через JIT-компиляцию или AOT.

Можно ли запустить .NET/CLI на Linux?

Да. .NET 5 и выше полностью поддерживает Linux и macOS. Контейнерные образы Microsoft .NET доступны на Docker Hub.

Где используется CLI в корпоративной разработке в России?

В системах на ASP.NET Core, микросервисах, интеграционных шинах, а также в Unity-приложениях. Часть российского корпоративного ПО основана на .NET Framework или .NET 6/8.

Открыт ли стандарт CLI?

Да. CLI опубликована как ECMA-335 и ISO/IEC 23271. Реализация .NET полностью открыта под MIT-лицензией на GitHub начиная с .NET Core (2014).