Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Роль метаданных




Роль Microsoft Intermediate Language

Код IL не зависит от платформы, на которой будет производиться выполнение. При этом компилятор для платформы.NET сгенерирует код IL вне зависимости от того, какой язык программирования (С#, Visual Basic.NET. и т.п.) использовался для создания программы.

Одно из преимуществ применения IL это возможность полного межъязыкового взаимодействия. Поскольку любой код на любом языке программирования.NET компилируется в стандартный набор инструкций IL. проблем во взаимодействии между блоками кода IL не возникает. При этом взаимодействие будет производиться, как и положено, на двоичном уровне.

Еще одно возможное преимущество— потенциальная независимость от компьютерной платформы. Существует большая вероятность, что среда выполнения.NET будет распространена на самые разные компьютерные платформы и операционные системы (отличные от Windows). В результате.NET может пойти по стопам Java-- то есть с помощью языков.NET можно будет создавать программы, которые будут работать под самыми разными операционными системами. Таким образом..NET потенциально позволяет создавать приложения на любом языке, которые будут работать на любой платформе и под любой операционной системой.

 

Программистам, работающим с СОМ, хорошо знакома концепция Interface Definition Language (IDL. языка определения интерфейсов). IDL — это «метаязык». который позволяет, исключая любую двусмысленность, описать типы, используемые внутри сервера COM. IDL компилируется в двоичный формат (называемый библиотекой типов) с использованием компилятора midl.exe. Этот компилятор может использоваться любым языком, предназначенным для работы с СОМ.

IDL полностью описывает все типы данных, используемые в двоичном файле СОМ. но информация о самом этом двоичном файле в нем минимальна. Фактически она ограничивается номером версии и информацией о локализации (например. English, Russian). Кроме того, наличие или отсутствие метаданных (и их полноту) должен вручную контролировать создающий сервер СОМ программист. Таким образом, необходимых метаданных в двоичном файле СОМ может вообще не оказаться.

В отличие от СОМ при использовании платформы.NET вообще не приходиться думать об IDL. Однако общий принцип описания типов в строго определенном двоичном формате остался.

Сборки.NET всегда содержат полные и точные метаданные, поскольку мета­данные в них генерируются автоматически. Как и в IDL в метаданных.NET содержится исчерпывающая информация об абсолютно всех типах, которые используются в сборке (классах, структурах, перечислениях и прочем), а также о каждом свойстве, методе или событии каждого типа.

Еще одно отличие метаданных.NET от информации IDL заключается в том, что метаданные.NET гораздо более подробны. В них перечислены все ссылки на внешние модули и сборки, которые потребуются для нормального выполнения сборки.NET. За счет этого можно считать сборки.NET фактически самодокументируемыми. В результате отпадает необходимость регистрировать двоичные файлы.NET в системном реестре.

Кто будет обращаться к метаданным? И сама среда выполнения.NET (очень часто). и самые разные средства разработки и отладки. Например, средство IntelliSense в Visual Studio.Net (которое пытается помочь закончить начатую строку) берет необходимую информацию именно из метаданных. Метаданные активно используются утилитами просмотра, отладки и, конечно, самим компилятором. Поскольку в сборках содержится платформенно-независимый код IL. a выполняются в конечном итоге только платформенно-зависимые инструкции, то кто-то должен взять на себя работу по компиляции IL в такие инструкции! Этот «кто-то» называется "just-in-time compiler" JIT) - компилятор времени выполнения. JIT для перевода IL в платформенно-зависимыс инструкции входит в состав среды вы­полнения.NET. Используя код IL. разработчики могут не думать об особенностях архитектуры CPU данного компьютера — эти особенности будут учтены JIT.

Откомпилированные из IL платформенно-зависимыс инструкции JIT помешает в кэш-памяти, что очень сильно ускоряет работу приложения. Предположим, был вызван метод Ваг() класса MyClass. При первом вызове этого метода JIT откомпилирует относящийся к этому методу код IL в платформенно-зависимые инструкции. При повторных вызовах этого метода JIT уже не будет заниматься компиляцией, а просто возьмет уже готовый откомпилированный код из кэша в оперативной памяти.

Сборка (однофайловая или многофайловая) может содержать любое количество самых разных типов. В терминологии.NET тип — это общий термин, который может относиться к классам, структурам, интерфейсам, перечислениям и прочему. При создании приложения.NET необходимо организовывать взаимодействие этих типов. Например. сборка может определять класс с несколькими интерфейсами, один интерфейс может принимать в качестве параметров только значения определенного перечисления.

Имеется возможность использовать пространства имен при создании собственных типов. Пространство имен — это логическая структура для организации имен, используемых в приложении.NET. Основное назначение пространств имен— предупредить возможные конфликты между именами в разных сборках.

 




Поделиться с друзьями:


Дата добавления: 2014-01-05; Просмотров: 377; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.