Общеязыковая инфраструктура CLI
75C# --- Руководство по C# --- Общеязыковая инфраструктура CLI
К удивлению большинства разработчиков, сборки .NET могут разрабатываться и выполняться в средах операционных систем производства не Microsoft, в частности — в Mac OS X, различных дистрибутивах Linux, Solaris, а также на устройствах типа iPhone производства Apple (через API-интерфейс MonoTouch). Чтобы понять, что делает подобное возможным, необходимо рассмотреть еще одну используемую в мире .NET аббревиатуру — CLI, которая расшифровывается как Common Language Infrastructure (Общеязыковая инфраструктура).
Вместе с языком программирования C# и платформой .NET в Microsoft был также разработан набор официальных документов с описанием синтаксиса и семантики языков C# и CIL, формата сборок .NET, ключевых пространств имен и технических деталей работы гипотетического механизма исполняющей среды .NET (названного виртуальной системой выполнения — Virtual Execution System (VES)).
Все эти документы были поданы в организацию Ecma International и утверждены в качестве официальных международных стандартов. Среди них наибольший интерес представляют:
документ ECMA-334, в котором содержится спецификация языка C#
документ ECMA-335, в котором содержится спецификация общеязыковой инфраструктуры (CLI)
Важность этих документов становится очевидной с пониманием того факта, что они предоставляют третьим сторонам возможность создавать дистрибутивы платформы .NET для любого количества операционных систем и/или процессоров. Среди этих двух спецификаций документ ECMA-335 является более "объемным", причем настолько, что был разбит на шесть разделов, которые перечислены в следующей таблице:
Разделы документа ECMA-335 | Предназначение |
---|---|
Раздел I. Концепции и архитектура | В этом разделе описана общая архитектура CLI, в том числе правила CTS и CLS и технические детали функционирования механизма среды выполнения .NET |
Раздел II. Определение метаданных и семантика | В этом разделе описаны детали метаданных и формат сборок в .NET |
Раздел III. Набор инструкций CIL | В этом разделе описан синтаксис и семантика кода CIL |
Раздел IV. Профили и библиотеки | В этом разделе дается общий обзор тех минимальных и полных библиотек классов, которые должны поддерживаться в дистрибутиве .NET |
Раздел V | В этом разделе описан формат обмена деталями отладки |
Раздел VI. Дополнения | В этом разделе представлена коллекция дополнительных и более конкретных деталей, таких как указания по проектированию библиотек классов и детали по реализации компилятора CIL |
Следует иметь в виду, что в разделе IV (Профили и библиотеки) описан лишь минимальный набор пространств имен, в которых содержатся ожидаемые от дистрибутива CLI службы (наподобие коллекций, консольного ввода-вывода, файлового ввода-вывода, многопоточной обработки, рефлексии, сетевого доступа, ключевых средств защиты и возможностей для манипулирования XML-данными). Пространства имен, которые упрощают разработку веб-приложений (ASP.NET), доступ к базам данных (ADO.NET) и создание настольных приложений с графическим пользовательским интерфейсом (Windows Forms/Windows Presentation Foundation) в CLI не описаны.
Хорошая новость состоит в том, что в главных дистрибутивах .NET библиотеки CLI дополняются совместимыми с Microsoft эквивалентами ASP.NET, ADO.NET и Windows Forms, чтобы предоставлять полнофункциональные платформы для разработки приложений производственного уровня. На сегодняшний день популярностью пользуются две основных реализации CLI (помимо самого предлагаемого Microsoft и рассчитанного на Windows решения).