Студопедия — Необходимые теоретические сведения.
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Необходимые теоретические сведения.






Сборки. Утилита ildasm.exe

Приложение всегда состоит из одной или более сборок. Сборка — это функциональная единица, имеющая версию и описание, которую можно использовать в других приложениях. В самом простом случае, сборка — это приложение, которое состоит из одного функционального модуля — класса. В большинстве случаев в приложении может быть несколько сборок, и каждая может иметь свои вспомогательные файлы. При выполнении все сборки приложения должны существовать и к ним должен быть открыт доступ. Каждая сборка должна быть независимой. У любой сборки есть метаданные, которые описывают сборку и содержат версию. Содержимое сборки можно просмотреть, запустив дизассемблер "Microsoft Intermediate Language Disassembler" (ildasm.exe).

Частные сборки

Программы, которые написаны на языках, поддерживаемых библиотекой.NET Framework, и на C# в частности, компилируются в код MSIL, которые затем среда CLR (Common Language Runtime) преобразует в машинный код.

Частные сборки отвечают тем же требованиям, что и обычные, но предназначены они для использования только в одном приложении и, как правило, лежат в той же папке, что и использующее их приложение. Частная сборка может находиться не только в корневой папке, но и во вложенных папках корневого каталога. Приложение ссылается на частную сборку по ее частному имени, которое содержится в метаданных. Когда среда CLR ищет частную сборку для применения, она использует частное имя сборки для поиска, причем поиск осуществляется в корневом каталоге и дочерних подкаталогах.

Сборки со строгим именем

Обычные сборки могут быть без труда декомпилированы, и код в них может быть повторно использован. Для коммерческих приложений это недопустимо. Сборки, подписанные строгим именем, позволяют обеспечить безопасность, защиту кода, облегчить применение их в несколько приложениях, а также управлять версионностью сборок. Строгое имя является уникальным обозначением сборки. Оно гарантирует невозможность замены вашей сборки другой.

Строгое имя сборки включает в себя частное имя сборки, ее версию, открытый ключ для клиентского приложения и цифровую подпись безопасности. Если сборка была локализована, то в нее также войдет описание культуры локализации.

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

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

Сборка со строгим именем может располагаться в любых местах — корневой папке приложения, произвольной папке локального или удаленного компьютеров, в Интернете.

Одни и те же сборки могут быть использованы в нескольких приложениях. Можно не дублировать эти сборки, а разместить их в так называемом глобальном КЭШе сборок (Global Assembly Cache) — централизованном хранилище сборок. В результате получается значительный выигрыш в размере приложения. В GAC может храниться несколько версий одной сборки, и он может управлять ими. Если сборку разместили в GAC, то она автоматически становится публичной — доступной другим приложениям. Если, напротив, использование подписанной сборки другими приложениями не требуется — достаточно поместить ее в корневую папку приложения.

Приложение, использующее строгую сборку, содержит информацию о ее строгом имени и версии. В результате достигается невозможность подмены сборки в корневой папке приложения: если просто заменить сборку на более новую, приложение не будет запускаться, поскольку строгое имя и версия сборок будут отличаться.

Создание сборки со строгим именем

Создание сборки со строгим именем сводится к созданию закрытого ключа для шифрования хэш-кода сборки. Для этого используется утилита sn.exe, которая запускается из командной строки. Для создания закрытого ключа вводим команду:

sn.exe – k "Путь к папке для сохранения ключа\Название ключа.snk"

После того как закрытый ключ создан, необходимо прикрепить его к приложению. В окне Solution Explorer проекта дважды щелкаем на файле AssemblyInfo.cs. Если атрибут [assembly: AssemblyKeyFile("")] содержит путь к закрытому ключу, компилятор использует его для шифрования данных. Также с помощью атрибута [assembly] можно указать версию сборки, настройки культуры и другие параметры. Главное преимущество использования сборок, подписанных строгим именем, — защита их от декомпиляции.

Создать ключ и подписать сборку можно непосредственно в среде разработки MS Visual Studio. Для этого в окне Solution Explorer проекта щелкаем правой кнопкой мыши на имени проекта и выбираем Properties – Signing. В появившемся окне указываем файл ключа или необходимость его генерации и подписываем сборку.

Глобальный кэш сборок GAC (Global Assembly Cache). Утилита gacutil.exe

Глобальный кэш сборок GAC — это хранилище сборок, одновременно используемых несколькими приложениями. Такие сборки называются публичными. GAC может содержать в себе несколько сборок, отличающихся друг от друга только версией. На вашем компьютере GAC находится в каталоге C:\WINDOWS\assembly. Все сборки, находящиеся в GAC, подписаны строгим именем — при установке сборки среда Common Language Runtime проверяет сборку на уникальность и сравнивает ее с другими, уже имеющимися сборками.

Управлять глобальным хранилищем сборок можно несколькими способами. Первый способ — с помощью утилиты gacutil.exe, которая запускается из командной строки Visual Studio.NET. Из всех команд утилиты нас интересуют всего три:

/i или –i: установка сборки в GAC;

/l или –l: вывод списка установленных сборок;

/u или –u: удаление сборки.

Более широкие возможности управления сборками предоставляет консоль MMC (Microsoft Management Console).

Настройка сборок

.Net приложения можно развертывать простым копированием всех необходимых сборок в одну папку на жестком диске, но на практике обычно выделяются отдельные подкаталоги для связанного содержимого, например, библиотек. В файлах конфигурации.NET можно указать подкаталоги, в которых среда выполнения будет искать частные сборки при запуске приложения. Для вставки в проект конфигурационного файла необходимо выполнить команду Project – Add New Item – Application Configuration File.

Файл конфигурации должен начинаться с корневого элемента под названием <сonfiguration>. Вложенный элемент <runtime> может задавать элемент <assemb1yBinding>, внутри которого в атрибуте <privatePath> и указывается нужный подкаталог с частной сборкой (если вам необходимо указать несколько подкаталогов, то они перечисляются через точку с запятой). Заметим, что атрибут <privatePath> служит для определения подкаталогов относительно каталога приложения. Если вы хотите указать каталог вне каталога приложения, то вам необходимо использовать элемент <codeBase>.

Предположим, что мы хотим разместить частные сборки в подкаталоге MyLibraries приложения. Тогда файл конфигурации может выглядеть так:

<configuration>

<runtime>

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.vl">

<probing privatePath="MyLibraries"/>

</assemblyBinding>

</runtime>

</configuration>

 

Контрольные вопросы

1) Что такое сборка?

2) В чем различие между частными и общими сборками?

3) Как получить сборку со строгим именем?

4) Каково назначение GAC?

5) Как настроить сборку?







Дата добавления: 2015-09-06; просмотров: 490. Нарушение авторских прав; Мы поможем в написании вашей работы!



Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...

Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...

ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...

Теория усилителей. Схема Основная масса современных аналоговых и аналого-цифровых электронных устройств выполняется на специализированных микросхемах...

Кран машиниста усл. № 394 – назначение и устройство Кран машиниста условный номер 394 предназначен для управления тормозами поезда...

Приложение Г: Особенности заполнение справки формы ву-45   После выполнения полного опробования тормозов, а так же после сокращенного, если предварительно на станции было произведено полное опробование тормозов состава от стационарной установки с автоматической регистрацией параметров или без...

Измерение следующих дефектов: ползун, выщербина, неравномерный прокат, равномерный прокат, кольцевая выработка, откол обода колеса, тонкий гребень, протёртость средней части оси Величину проката определяют с помощью вертикального движка 2 сухаря 3 шаблона 1 по кругу катания...

Анализ микросреды предприятия Анализ микросреды направлен на анализ состояния тех со­ставляющих внешней среды, с которыми предприятие нахо­дится в непосредственном взаимодействии...

Типы конфликтных личностей (Дж. Скотт) Дж. Г. Скотт опирается на типологию Р. М. Брансом, но дополняет её. Они убеждены в своей абсолютной правоте и хотят, чтобы...

Гносеологический оптимизм, скептицизм, агностицизм.разновидности агностицизма Позицию Агностицизм защищает и критический реализм. Один из главных представителей этого направления...

Studopedia.info - Студопедия - 2014-2024 год . (0.009 сек.) русская версия | украинская версия