Имя Пароль
Зарегистрироваться


* При перепечатке материалов ссылка на www.SeoLiga.ru обязательна! RSS



Разделяемые сборки
8 февраля 2009

Сборки могут быть закрытыми (private) или разделяемыми (shared). Закрытая сборка
используется только одним приложением, а разделяемая — доступна нескольким
приложениями.
Примечание В данном контексте семантика терминов «закрытый* и «разделяемый»
(«открытый») отличается от таковой модификаторов доступа Private (private) и
Shared, применяемых для объявления типов и членов. Здесь эти термины указыва-
ют, доступна ли некоторая сборка одному или нескольким приложениям.
Закрытые и разделяемые сборки
Большинство созданных вами сборок скорее всего будут закрытыми. Их проще со-
здавать, к тому же по умолчанию создается именно этот тип сборок. Закрытая сбор-
ка доступна только одному приложению и является его компонентом, размещается
вместе с приложением и доступна только из него. В связи с этим закрытые сборки
не поддерживают управление версиями и расширенные идентификационные данные.
Изучая материалы этого курса, мы до сих пор создавали только закрытые сборки.
Изучая элементы управления в главе 7, мы создавали сборки с нестандартными
элементами управления, доступные из любых проектов, однако эти сборки являют-
ся закрытыми. Нет ли тут несоответствия?
Дело в том, что при добавлении в проект ссылки на закрытую сборку, Visual
Studio .NET копирует DLL этой сборки в каталог проекта. Так, несколько проектов
могут ссылаться на одну и туже DLL и вызывать содержащиеся в ней типы, но при
этом у каждого такого проекта имеется своя копия этой DLL.
В отличие от закрытых, разделяемые сборки существуют на компьютере в един-
ственном экземпляре, который доступен нескольким приложениям. Чтобы сделать
сборку разделяемой, необходимо установить ее в кэш глобальных сборок (Global
Assembly Cache, GAC). Хранение сборок в GAC имеет ряд преимуществ:
• централизованное хранение сборок — если некоторая сборка требуется несколь-
ким приложениям, достаточно сделать ее разделяемой, чтобы решить проблему;
• безопасность — GAC находится в каталоге C:\W1NNT (в Microsoft Windows 2000)
или WINDOWS (в Microsoft Windows XP), который по умолчанию защищен са-
мыми строгими мерами безопасности;
• возможность использовать несколько версий сборки одновременно — в GAC мож-
но устанавливать несколько версий одной и той же сборки. Каждое приложение
определяет и загружает нужную ему версию.
Как говорилось ранее, чаще всего создают закрытые сборки. Разделяемые сбор-
ки требуются, если на то есть веские причины. Чтобы создать разделяемую сборку
и установить ее в GAC, необходимо назначить сборке строгое имя.
Строгое имя
Строгое имя (strong name) гарантирует подлинность сборки. Оно включает иденти-
фикационные данные сборки, такие, как ее имя, номер версии, сведения о культу-
ре (если таковая назначена) и открытый ключ из криптографической пары ключей.
Все эти сведения шифруются закрытым ключом из данной пары. Полученные за-
шифрованные данные можно расшифровать соответствующим открытым ключом.
Поскольку закрытый ключ есть лишь у автора сборки, никому кроме него не удас-
тся создать копию строгого имени, что гарантирует подлинность сборки.
Чтобы назначить сборке строгое имя, требуется пара ключей — открытый и за-
крытый. При необходимости для их генерации применяют утилиту strong name
(sn.exe).
^ Генерация пары криптографических ключей
1, Вызовите командную строку Visual Studio .NET. В Windows XP для этого доста-
точно щелкнуть Пуск\Программы\МюгозоЛ Visual Studio .NET\Visual Studio
.NET Tools.
2. Наберите в командной строке sn.exe с ключом -k , чтобы указать файл, кула
следует записать генерированные ей ключи. Обычно этот файл имеет расшире-
ние ,snk, например:
sri -k [nyKey.snk
В результате исполнения этой команды генерируется файл с парой ключей, ко-
торый необходим для создания строгого имени.
>• Как подписать сборку с помощью строгого имени
1. В Solution Explorer откройте файл Assemblylnfo.
2. Убедитесь, что для сборки задан номер версии при помощи атрибута Assembly-
Version., например;
Visual Basic .NET
<Assembly: AssernblyVersion("1.0.1.1"}>
Visual C#
[assembly: AssemblyVersion("1.0.1.1")]
По умолчанию атрибут Assembly Version установлен в «1.0.*». Звездочка показы-
вает, что CLR автоматически генерирует значения по умолчанию для последних
двух цифр номера версии.
3. При помощи атрибута Assembly Key FHeAnribute укажите путь (абсолютный ил и от-
носительный) к файлу с ключами, например, так:
Visual Basic .NET
<Assembly: AssernblyKeyFile(". ,\. .\myKey.snk")>
Visual C#
[assembly: AssemblyKeyFile("..\\..\\rcyKey.snk")]
Этот атрибут автоматически добавляется в файл Assemblylnfo при использова-
нии Visual C#; в Visual Basic .NET его придется добавить самостоятельно.
4. Скомпилируйте сборку — она будет подписана при помощи сгенерированного
строгого имени.

Теги: .NET

Статьи по теме:

Пошаговое исполнение кода
Создание плана блочного тестирования
Создание класса строго типизированного набора на основе класса CollectionBase
Декларативная защита по правам доступа к коду
Анти-паттерны в действии или Самые популярные ошибки программистов
Создание формируемых элементов управления
Принципы дизайна интерфейса
Члены типов CTS
Создание производных элементов управления
Редактор условий установки
Создание обработчика для группы событий
Защищенные члены
Специальные возможности и логотип «Certified for Windows»
Модель защиты, основанная на ролях
Создание конфигурационного файла
| .NET | Pavel |
 


Пн Вт Ср Чт Пт Сб Вс
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31


     



Rambler's Top100

Данный сайт или домен продается ICQ: 403-353-727

© 2009 Seoliga.ru | .NET | Разделяемые сборки. Регион сайта: Москва и Санкт-Петербург