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


* При перепечатке материалов ссылка на 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

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

Реализация членов интерфейса на Visual Basic .NET
Всё новое - это хорошо забытое старое
Решения .NET
Объекты Color, Brush и Pen
Использование шаблонов кода
Набор Listeners
Установка сборок в GAC
Императивная защита по правам доступа к коду
Создание формы
Работа с фокусом ввода
Перечисления CTS
Parsing Expression Grammar Support for C# 3.0 Part 1 – PEG Lib and Parser Generator
Создание и настройка объекта DataAdapter
Создание дополнительных типов объектов Doughnut
Обзор ADO.NET
| .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 | Разделяемые сборки. Регион сайта: Москва и Санкт-Петербург