|
Программирование >> Обработка исключительных ситуаций
Тромежуточный язык (Intermediate Language, IL) не содержит инструкций, ависящих от операционной системы и типа компьютера, что обеспечивает две юновные возможности: 1 выполнение приложения на любом типе компьютера, для которого существует среда выполнения CLR; 2 повторное использование кода, написанного на любом .NET-совместимом языке. [L-код можно просмотреть с помощью дизассемблера ILDasm.exe, который находится в папке ...\SDK\bin\ каталога размещения Visual Studio.NET. После за-туска ILDasm можно открыть любой файл среды .NET с расширением ехе или dll ; помощью команды File Open. В окне программы откроется список всех элементов сборки, сведения о каждом можно получить двойным щелчком. При этом открывается окно, в котором для методов выводится доступный для восприятия дисассемблированный код. Метаданные типов - это сведения о типах, используемых в сборке. Компилятор создает метаданные автоматически. В них содержится информация о каждом типе, имеющемся в программе, и о каждом его элементе. Например, для каждого класса описываются все его поля, методы, свойства, события, базовые классы и интерфейсы. Среда выполнения использует метаданные для поиска определений типов и их элементов в сборке, для создания экземпляров объектов, проверки вызова методов и т. д. Компилятор, редактор кода и средства отладки также широко используют метаданные, например, для вывода подсказок и диагностических сообщений. Манифест - это набор метаданных о самой сборке, включая информацию обо всех файлах, входящих в состав сборки, версии сборки, а также сведения обо всех внешних сборках, на которые она ссылается. Манифест создается компилятором автоматически, программист может дополнять его собственными атрибутами. Чаще всего сборка состоит из единственного файла, однако она может включать и несколько физических файлов (модулей). В этом случае манифест либо включается в состав одного из файлов, либо содержится в отдельном файле. Многофайловые сборки используются для ускорения загрузки приложения - это имеет смысл для сборок большого объема, работа с которыми производится удаленно. На логическом уровне сборка представляет собой совокупность взаимосвязанных типов - классов, интерфейсов, структур, перечислений, делегатов и ресурсов. Библиотека .NET представляет собой совокупность сборок, которую используют приложения. Точно так же можно создавать и собственные сборки, которые можно будет задействовать либо в рамках одного приложения (частные сборки), либо совместно различными приложениями (открытые сборки). По умолчанию все сборки являются частными. Манифест сборки содержит: идентификатор версии; список всех внутренних модулей сборки; список внешних сборок, необходимых для нормального выполнения сборки; информацию о естественном языке, используемом в сборке (например, русском); сильное имя (strong name) - специальный вариант имени сборки, используемый для открытых сборок; необязательную информацию, связанную с безопасностью; необязательную информацию, связанную с хранением ресурсов внутри сборки (подробнее о форматах ресурсов .NET см. [27]). Идентификатор версии относится ко всем элементам сборки. Он позволяет избегать конфликтов имен и поддерживать одновременное существование и использование различных версий одних и тех же сборок. Идентификатор версии состоит из двух частей: информационной версии в виде текстовой строки и версии совместимости в виде четырех чисел, разделенных точками: основной номер версии (major version); дополнительный номер версии (minor version); номер сборки (build number); номер ревизии (revision number). Среда выполнения применяет идентификатор версий для определения того, какие из открытых сборок совместимы с требованиями клиента. Например, если клиент запрашивает сборку 3.1.0.0, а присутствует только версия 3.4.0.0, сборка не будет опознана как подходящая, поскольку считается, что в дополнительных версиях могут произойти изменения в типах и их элементах. Разные номера ревизии допускают, но не гарантируют совместимость. Номер сборки на совместимость не влияет, так как чаще всего он изменяется при установке заплатки, или патча (patch). Идентификатор версии формируется автоматически, но при желании можно задать его вручную с помощью атрибута [AssemblyVersion], который рассматривается далее на с. 285. Информация о безопасности позволяет определить, предоставить ли клиенту доступ к запрашиваемым элементам сборки. В манифесте сборки определены ограничения системы безопасности. Ресурсы представляют собой, например, файлы изображений, помещаемых на форму, текстовые строки, значки приложения и т. д. Хранение ресурсов внутри сборки обеспечивает их защиту и упрощает развертывание приложения. Среда Visual Studio.NET предоставляет возможности автоматического внедрения ресурсов в сборку. Открытые и частные сборки различаются по способам размещения на компьютере пользователя, именованию и политике версий. Частные сборки должны находиться в каталоге приложения, использующего сборку, или в его подкаталогах. Открытые сборки размещаются в специальном каталоге, который называется глобальным кэшем сборок (Global Assembly Cache, GAC) . Для идентификации открытой сборки используется уже упоминавшееся сильное имя (strong name), которое должно быть уникальным. Создание библиотеки Для создания библиотеки следует при разработке проекта в среде Visual Studio.NET выбрать шаблон Class Library (библиотека классов). В главе 8 была создана простая иерархия классов персонажей компьютерной игры. В этом разделе мы оформим ее в виде библиотеки, то есть сборки с расширением dll. Для сборки задано имя MonsterLib (рис. 12.2). Рис. 12.2. Создание библиотеки Текст модуля приведен в листинге 12.1. По сравнению с модулем из главы 8 в него добавлены спецификаторы доступа public для всех трех классов, входящих в библиотеку. Листинг 12.1. Библиотека монстров namespace MonsterLib { using System; public abstract class Spirit public abstract void PassportO;
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |