Компьютерные книги
Главное меню
Главная Поиск по сайту Добавить материал О нас Карта книг Карта сайта
Реклама
computersbooks.net -> Добавить материал -> Языки программирования -> Ватсон К. -> "С#" -> 284

С# - Ватсон К.

Ватсон К. С# — Лори, 2005 . — 879 c.
ISBN 1-861004-98-2
Скачать (прямая ссылка): vatsonc2005.pdf
Предыдущая << 1 .. 278 279 280 281 282 283 < 284 > 285 286 287 288 289 290 .. 404 >> Следующая


HE

M
606 Глава 21

Частные и общие модули

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

Частные модули

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

Модуль shapes.dll является частным; для того чтобы ссылаться на него из проекта Shapes, нам пришлось на предыдущем этапе строить оба проекта в одной и той же директории, в противном случае потребовалось бы осуществлять поиск по директории разработки проекта Shapes из проекта shapeueer при добавлении ссылки в VS; в этом случае VS создает частную копню shapes.dll и размещает ее в директории shapeuser.

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

Общие модули

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

Безопасность и строгие имена

Любой общий модуль должен обеспечивать гарантию того, что он не был заменен на какой-либо другой модуль, обладающий темн же именем и номером версии, но в который были внесены те или иные изменения, напрнмер, вследствие заражения вирусом. Это достигается за счет того, чго для общего модуля существует дополнительное требование — он должен быть помечен зашифрованным ключом, прежде чем он будет загружен в глобальный кэш модулей. Такой ключ обеспечивает защиту не только от нарушения системы обеспечения безопасности, но н от обычных коллизий, связанных с тем, что у двух компонентов оказываются одинаковые имя н номер версии, Еслн значения ключей у компонентов оказываются различными, то такие компоненты не считаются одинаковыми, даже несмотря на то, что они обладают идентичными именами. Уникальное сочетание, состоящее из имени модуля, номера его версии и его ключа, называется строгим именем.
Модули .NET

607

Кэш глобальных модулей

Кэш глобальных модулей представляет собой специальную директорию, которая располагается в директории winNT\assembly. Все общие создаваемые компанией Microsoft модули, включая модули system .NET Framework, хранятся в этой директории и загружаются именно оттуда. Если вы попытаетесь просмотреть эту директорию с помощью Windows Explorer, то вы увидите специальное внешнее расширение Windows, в котором выводятся различные свойства модулей, в том числе н ключ, входящий в состав строгого имени каждого из них.

Внешнее расширение Windows (называемое shfuRion.dii) встроено в Windows Explorer и призвано расширять его возможности по сравнению с обычным выводом файлов. На следующем рисунке изображен тот вид, который GAC имеет в Windows Explorer. При этом осуществляется вывод имени, номера версии, ключа и других свойств модулей:

¦lax

Е-г L« +ст Со* йо*

4-да - -* ги] ‘<Э *4 ? X

л’31.

X

иааяр

vram

* _J

¦' О QBSfl

* ?

X О »W

* Cj

» ? СчСм)

j

¦ Cl ¦* '

и?5|и**

¦r,"j >

lAiTiU- nnqil

'J

~3

iilWvt- ivjoarvWwM iftin n TfM4 JjViL F- Амч

lilSr:— t#Vr-y4:c-i

dlSpteJttwiRVl

- firm

V>«

i4mi

ПМ1.»

i n-4t:J Ut-fftl 0 lit+i и

I .РЛ J

1ЛМКЛ IЛН114 1ДОГ14 1MlUl 1ДМ1А I jW*1 1.4

xavjiiien&*

КйгДОцазд*

UK№ll«&ri*

b03V^Htf»*5*

ьоса/Лпадо*

bmf7TMi&Q*V*

ДОДОПбО*!*

U^MHCWi

bWF7m«CL+3*

ШГДОНЛЗД

с

Внешнее расширение Windows делает обязательным применение политики обеспечения безопасности для 1\лобальных модулей, позволяя копировать модули D эту директорию посредством простого переноса мышью только в том случае, если соблюдены Dee необходимые правила.

Чтобы иметь доступ к кэшу глобальных модулей, необходимо обладать правами локального администратора.

Создание общего модуля

Чтобы создать общий модуль со строгим именем, требуется сгенерировать два ключа — общий и частный, которыми будет помечен этот модуль. Асимметричные системы шифрования на основе общих/частных ключей используют частный ключ, известный только отправителю закодированного сообщения, и общий ключ, который открыт для всех. В среде .NET используется такой же механизм, чтобы гаран-тнровать, что общий модуль, на который делается ссылка,— это действительно тот модуль, который требуется (модули, создаваемые различными компаниями, могут обладать одинаковыми именами и номерами версий, а то какой-нибудь хакер попытается “вскрыть” программу, создав модуль с теми же именем и номером версии или испортив содержимое существующего модуля). Ключи, содержащиеся в вызове модуля и непосредственно в (помеченном) модуле, сравниваются, и если они не совпадают, то загрузка общего модуля не производится.
Предыдущая << 1 .. 278 279 280 281 282 283 < 284 > 285 286 287 288 289 290 .. 404 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

Эком "Microsoft Excel 2000 шаг за шагом Русская версия самоучитель " (Самоучитель)

Поляков А.Ю. "Методы и алгоритмы компьютерной графики в примерах Vizual C++" (Графика)

Баяковский Ю.М. "Графическая библиотека Open GL " (Графика)

Валиков А. "Технология " (Языки программирования)
Авторские права © 2013 ComputersBooks. Все права защищены.