Три
раздела, описываемые в этой лекции,
настраивают параметры для CLR (common
language runtime – общая среда
выполнения промежуточного языка). Эти
параметры задают версию среды выполнения,
запуск сборщика мусора и параметры
криптографии.
Предостережение
Эти параметры должны задаваться
только в файле
machine.config сервера или в
настроечном файле вашего приложения.
В этой
лекции приведено описание следующих
разделов.
-
<mscorlib>.
Настраивает соответствия между
дружественными именами и классами
криптографии.
-
<runtime>.
Определяет версию сборки и запуск
сборщика мусора.
-
<startup>.
Определяет среду выполнения CLR,
используемую при выполнении
приложения.
Работа
с разделом <mscorlib>
Раздел
<mscorlib>
содержит параметры для настройки
некоторых криптографических возможностей
Microsoft .NET Framework. Используемые
элементы расположены в подразделе
<cryptographySettings>.
Использование раздела <cryptographySettings>
Подраздел содержит два элемента, которые
создают соответствия для криптографии и
соответствия OID –
<cryptoNameMapping>
и <oidMap>.
Использование
элемента <cryptoNameMapping>
Элемент <cryptoNameMapping>
задает соответствия между классами
безопасности и их дружественными именами.
Он содержит два элемента –
<cryptoClasses>
и <nameEntry>.
Использование элемента
<cryptoClasses>.
Элемент <cryptoClasses>
содержит список классов криптографии,
которые будут иметь соответствующие им
дружественные имена, объявленные с
помощью элемента
<nameEntry>. Элемент,
используемый для создания ссылки на
класс криптографии, называется
<cryptoClass>.
Ниже приведен его синтаксис.
<cryptoNameMapping>
<cryptoClasses>
<cryptoClass CryptoName="CryptoClass, AssemblyName" />
</cryptoClasses>
</cryptoNameMapping>
Ниже
показан пример элемента
<cryptoClass>,
использованного для объявления нового
класса.
<cryptoNameMapping>
<cryptoClasses>
<cryptoClass CustomRSA="CustomRSAClass, MyCustomAssembly
Culture=neutral, PublicKeyToken=b77a5c561934e089,
Version=1.0.0.0" />
</cryptoClasses>
</cryptoNameMapping>
Для
завершения создания соответствия имени
можно использовать элемент
<nameEntry>.
Использование элемента
<nameEntry>.
Элемент <nameEntry>
ставит в соответствие классу,
объявленному вами в разделе
<cryptoClasses>,
дружественное имя. Ниже приведен его
синтаксис.
<cryptoNameMapping>
<nameEntry name="friendly name" class="Crypto Class Name" />
</cryptoNameMapping>
В
таблице 7.1 содержится перечень свойств
элемента <nameEntry>.
Таблица 7.1. Свойства <nameEntry>
Свойство |
Описание |
name |
Дружественное
имя, используемое для
создания экземпляра данного
класса. |
class |
Имя класса,
указанное в элементе
<cryptoClass>. |
Ниже
приведен пример использования элемента
<nameEntry>
со связанным элементом
<cryptoClass>.
<cryptographySettings>
<cryptoNameMapping>
<cryptoClasses>
<cryptoClass CustomRSA="CustomRSAClass,
MyCustomAssembly
Culture=neutral, PublicKeyToken=b77a5c561934e089,
Version=1.0.0.0" />
</cryptoClasses>
<nameEntry name="RSA" class="CustomRSA" />
</cryptoNameMapping>
</cryptographySettings>
Создав
такое соответствие, вы можете получить
доступ к классу криптографии с помощью
метода
System.Security.CryptoConfig.CreateFromName.
Просто передайте в метод
CreateFromName
имя класса, указанное в
<nameEntry>.
Чтобы создать экземпляр класса,
объявленного в предыдущем примере,
используйте
System.Security.CryptoConfig.CreateFromName("RSA").
Использование
элемента <oidMap>
Элемент <oidMap>
создает соответствия идентификаторов
объектов OID или ASN.1 и классов.
Идентификаторы объектов ASN.1 определяют
алгоритм для некоторых криптографических
форматов. Этот элемент включает один
субэлемент – <oidEntry>.
Использование элемента
<oidEntry>.
Элемент <oidEntry>
создает соответствие между числом OID и
именем класса, указанным в элементе
<nameEntry>.
Ниже приведен его синтаксис.
<cryptographySettings>
<oidMap>
<oidEntry OID="OID Value" name="Class Name" />
</oidMap>
</cryptographySettings>
В
таблице 7.2 содержится перечень свойств
элемента <oidEntry>.
Таблица 7.2. Свойства <oidEntry>
Свойство |
Описание |
OID |
Определяет
ASN.1 OID для алгоритма,
реализованного вашим классом. |
name |
Определяет
имя класса, указанное в
элементе
<nameEntry>. |
Ниже
приведен пример элемента,
использованного для создания
соответствия между OID и классом,
объявленным в элементе
<nameEntry>.
<cryptographySettings>
<cryptoNameMapping>
<cryptoClasses>
<cryptoClass CustomRSA="CustomRSAClass,
MyCustomAssembly
Culture=neutral, PublicKeyToken=
b77a5c561934e089,
Version=1.0.0.0" />
</cryptoClasses>
<nameEntry name="RSA" class="CustomRSA" />
</cryptoNameMapping>
<oidMap>
<oidEntry OID="1.3.14.33.42.46" name="RSA" />
</oidMap>
</cryptographySettings>
Теперь
OID будет ассоциирован с классом,
объявленным в этом примере.
Работа
с разделом <runtime>
Раздел
<runtime>
содержит несколько элементов и
параметров, которые настраивают работу
общей среды выполнения. Он включает
параметры сборщика мусора, а также
параметры для определения используемой
версии сборки. Хотя этот раздел не часто
используется в коде ASP.NET, вам следует
познакомиться с его опциями.
Использование элемента <developmentMode>
Элемент <developmentMode>
указывает среде выполнения производить
поиск сборок в директориях, заданных в
переменной среды окружения DEVPATH. Ниже
приведен синтаксис этого элемента.
<developmentMode
developerInstallation="true | false"
/>
В
таблице 7.3 содержится свойство этого
элемента.
Таблица 7.3. Свойство <developmentMode>
Свойство |
Описание |
developerInstallation |
Определяет,
будет ли среда выполнения
искать сборки в переменной
среды окружения DEVPATH.
true
Среда выполнения использует
этот путь.
false
Среда выполнения не
использует этот путь.
|
Ниже
приведен пример этого элемента.
<runtime>
<developmentMode developerInstallation="true" />
</runtime>
В
примере задается указание среде
выполнения производить поиск сборок в
директориях, указанных в переменной
среды окружения DEVPATH. Среда
выполнения не смотрит на информацию о
версии; она использует первую найденную
сборку.
Использование раздела <assemblyBinding>
Раздел
<assemblyBinding>
содержит несколько подразделов и
атрибутов. Вы можете использовать этот
раздел для указания перенаправлений
версий сборок и расположения других
сборок. Сначала приведем описание
атрибутов раздела
<assemblyBinding>, а затем
перейдем к субэлементам. Ниже приведен
синтаксис этого раздела.
<assemblyBinding
xmlns="xml namespace"
appliesTo="framework version" />
В
таблице 7.4 содержится перечень свойств
этого раздела.
Таблица 7.4. Свойства <assemblyBinding>
Свойство |
Описание |
xmlns |
Определяет
пространство имен XML,
которое требуется для
привязки сборки.
|
appliesTo |
Определяет
версию .NET Framework, к
которой применяется
перенаправление данной
сборки. Атрибут был добавлен
в версии 1.1 и игнорируется
версией 1.0. |
Ниже
показан пример того, как следует
использовать свойства этого раздела.
<assemblyBinding
xmlns="urn:schemas-microsoft-com:asm.v1"
appliesTo="v1.0.3705" />
Здесь
ограничивается перенаправление сборки
только теми приложениями, которые
выполняются в .NET Framework версии 1.0.
Элемент <assemblyBinding>
содержит несколько субэлементов, с
которыми вы познакомитесь дальше.
Использование
раздела <dependentAssembly>
Элемент <dependentAssembly>
содержит все спецификации для каждой
сборки, которую нужно перенаправить. Он
включает информацию об идентификации,
месте расположения, список
перенаправляемых версий и тому подобное.
Этот элемент не имеет атрибутов, но
содержит несколько субэлементов.
Использование элемента
<assemblyIdentity>.
Элемент <assemblyIdentity>
содержит информацию о сборке, включая
имя сборки, последовательность открытого
ключа и культуру. Каждый элемент
<dependentAssembly>
должен содержать элемент
<assemblyIdentity>.
Ниже приведен синтаксис этого элемента.
<dependentAssembly>
<assemblyIdentity name="assembly name" publicKeyToken=
"assembly public key token" culture="assembly culture " />
</dependentAssembly>
В
таблице 7.5 содержится перечень свойств
этого элемента.
Таблица 7.5. Свойства <assemblyIdentity>
Свойство |
Описание |
name |
Определяет
имя сборки и является
обязательным. |
publicKeyToken |
Определяет
последовательность открытого
ключа, который входит
строгим именем сборки. |
culture |
Определяет
страну или регион сборки (обычно
равно neutral). |
Ниже
приведен пример этого элемента.
<dependentAssembly>
<assemblyIdentity name="netMail"
publicKeyToken="a1690a5ea44bab32" culture="neutral" />
</dependentAssembly>
Использование элемента
<codeBase>.
Элемент <codeBase>
указывает среде выполнения CLR, где
искать сборку. Ниже приведен синтаксис
этого элемента.
<dependentAssembly>
<codeBase version="assembly version"
href="url location of assembly" />
</dependentAssembly>
В
таблице 7.6 содержится перечень свойств
элемента <codeBase>.
Таблица 7.6. Свойства <codeBase>
Свойство |
Описание |
version |
Определяет
версию сборки, к которой
применяется данный элемент.
|
href |
Определяет
расположение сборки.
|
Ниже
приведен пример этого элемента.
<dependentAssembly>
<assemblyIdentity name="netMail"
publicKeyToken="a1690a5ea44bab32" culture="neutral" />
<codeBase version="1.0.0.0"
style="color:#666666;" href="/external/?popup=0&url=http%3A%2F%2Fwww.microsoft.com%2Fnetmail.dll"
onMouseOver="menuSetHelpText('external');return
false;" onMouseOut="menuClearHelpText()"
/>
</dependentAssembly>
Использование элемента
<bindingRedirect>.
Элемент <bindingRedirect>
перенаправляет одну версию сборки на
другую. Ниже приведен синтаксис этого
элемента.
<dependentAssembly>
<bindingRedirect oldVersion="old assembly version"
newVersion="new assembly version" />
</dependentAssembly>
В
таблице 7.7 содержится перечень свойств
элемента <bindingRedirect>.
Таблица 7.7. Свойства <bindingRedirect>
Свойство |
Описание |
oldVersion |
Определяет
версию сборки, которая будет
перенаправлена. Можно также
ввести диапазон номеров
версий (1.0.0.0 – 2.0.0.1).
|
newVersion |
Определяет
версию сборки, на которую
будет перенаправлен запрос. |
Ниже
приведен пример этого элемента.
<dependentAssembly>
<assemblyIdentity name="netMail"
publicKeyToken="a1690a5ea44bab32" culture="neutral" />
<bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
Когда
ваше приложение производит доступ к
сборке, вместо версии 1.0.0.0 сборки
будет использоваться версия 2.0.0.0.
Использование элемента
<publisherPolicy>.
Элемент <publisherPolicy>
может использоваться внутри элемента
<dependentAssembly>
или внутри элемента
<assemblyBinding>.
Автор сборки предоставляет файл политики
издателя, который содержит информацию о
переходе от одной сборки к другой. Ниже
приведен синтаксис этого элемента.
<publisherPolicy
apply="yes | no" />
lists the property for this element.
Таблица 7.8. Свойства <publisherPolicy>
Свойство |
Описание |
apply |
Определяет
наличие политики издателя.
yes
Политика издателя имеется и
применяется.
no
Политика издателя не
применяется. |
Ниже
приведен пример того, как следует
использовать этот элемент.
<dependentAssembly>
<assemblyIdentity name="netMail"
publicKeyToken="a1690a5ea44bab32" culture="neutral" />
<publisherPolicy apply="no" />
</dependentAssembly>
Данный
пример не применяет политику издателя
для сборки netMail. Вы также можете
использовать этот элемент в элементе
<assemblyBinding>.
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<publisherPolicy apply="no" />
</assemblyBinding>
Данный
пример не применяет политику издателя
для всех приложений.
Использование
элемента <probing>
Элемент <probing>
- это субэлемент элемента
<assemblyBinding>.
В элементе
<probing> можно указать несколько
поддиректорий, в которых будет
производиться поиск сборок при их
загрузке. Ниже приведен синтаксис этого
элемента.
<runtime>
<assemblyBinding>
<probing privatePath="sub directories" />
</assemblyBinding>
</runtime>
Свойства элемента
<probing> приведены в табл. 7.9.
Таблица 7.9. Свойства <probing>
Свойство |
Описание |
privatePath |
Определяет
список директорий,
разделенных точкой с запятой,
в которых среда выполнения
производит поиск.
|
Ниже
приведен пример элемента
<probing>.
<runtime>
<assemblyBinding>
<probing privatePath="bin;bin\netmail;bin2" />
</assemblyBinding>
</runtime>
Здесь
среда выполнения включит в поиск сборок
директории bin, bin\netmail и bin2.
Использование
элемента <publisherPolicy>
В
дополнение к использованию элемента
<publisherPolicy>
в элементе <dependentAssembly>
можно использовать элемент
<publisherPolicy>
как субэлемент <assemblyBinding>.
При использовании его в качестве
субэлемента <assemblyBinding>
элемент <publisherPolicy>
применяется ко всем сборкам, а не только
к одному приложению. Синтаксис и
атрибуты элемента
<publisherPolicy> аналогичны
таковым субэлемента в элементе
<dependentAssembly>.
Использование
элемента <qualifyAssembly>
Элемент <qualifyAssembly>
задает соответствие между частичными
именами сборок и их полными именами.
Ниже приведен синтаксис этого элемента.
<runtime>
<assemblyBinding>
<qualifyAssembly partialName="partial name'
fullName="full name' />
</assemblyBinding>
</runtime>
Свойства этого элемента приведены в табл.
7.10.
Таблица 7.10. Свойства <qualifyAssembly>
Свойство |
Описание |
partialName |
Определяет
частичное имя сборки. |
fullName |
Определяет
полное имя сборки,
находящейся в глобальном
кэше сборок. |
Ниже
приведен пример этого элемента.
<runtime>
<assemblyBinding>
<qualifyAssembly partialName="netmail"
fullName="netmail, version 2.0.0.0,
publickeyToken=a1690a5ea44bab32, culture=neutral"
/>
</assemblyBinding>
</runtime>
Теперь,
при обращении к сборке netmail
приложение будет перенаправляться на имя
этой сборки в глобальном кэше сборок.
Использование
элемента <gcConcurrent>
Элемент <gcConcurrent>
определяет, будет ли среда выполнения
CLR запускать сборщик мусора в текущем
потоке выполнения или в отдельном потоке.
Ниже приведен синтаксис этого элемента.
<runtime>
<gcConcurrent enabled="true | false" />
</runtime>
В
таблице 7.11 содержится свойство этого
элемента.
Таблица 7.11. Свойства <gcConcurrent>
Свойство |
Описание |
enabled |
Определяет
запуск сборщика мусора в
одном потоке с приложением.
true
Сборщик мусора запускается в
одном потоке с приложением.
false
Сборщик мусора запускается в
отдельном потоке выполнения.
|
Ниже
приведен пример этого элемента.
<runtime>
<gcConcurrent enabled="false" />
</runtime>
В
примере устанавливается, что сборщик
мусора запускается в отдельном от вашего
приложения потоке.
Работа
с разделом <startup>
Данный
раздел настроечного файла определяет
версию среды выполнения CLR,
используемую при запуске приложения.
Использование элемента <requiredRuntime>
Элемент <requiredRuntime>
определяет версию .NET Framework для
запуска данного приложения. Он
используется только приложениями,
созданными посредством.NET Framework
версии 1.0. Ниже приведен синтаксис
этого элемента.
<startup>
<requiredRuntime version="framework version"
safemode="true | false" />
</startup>
Свойства элемента
<requiredRuntime> перечислены в
табл. 7.12.
Таблица 7.12. Свойства <requiredRuntime>
Свойства |
Описание |
version |
Определяет
версию .NET Framework,
которая требуется для
приложения. Значение должно
в точности соответствовать
имени директории, в которой
находится .NET Framework. |
safemode |
Определяет,
будет ли приложение работать
в "безопасном" режиме. При
запуске приложения в
безопасном режиме оно не
проверяет в реестре версию
среды выполнения.
true
Приложение работает в
безопасном режиме.
false
Приложение не работает в
безопасном режиме.
|
Ниже
приведен пример этого элемента.
<startup>
<requiredRuntime version="v1.0.3705" safemode="false" />
</startup>
Здесь
задается использование приложением
только версии 1.0 среды .NET Framework,
а также запрещается выполнение в
безопасном режиме, позволяя приложению
обратиться за информацией о версии к
реестру.
Использование элемента <supportedRuntime>
Элемент <supportedRuntime>
определяет версию .NET Framework,
которая будет поддерживаться приложением.
Этот элемент работает с приложениями,
созданными с использованием .NET
Framework версии 1.1. Ниже приведен
синтаксис этого элемента.
<startup>
<supportedRuntime version="version number" />
</startup>
В
таблице 7.13 содержится свойство
элемента <supportedRuntime>.
Таблица 7.13. Свойство <supportedRuntime>
Свойство |
Описание |
version |
Определяет
версию .NET Framework,
которая поддерживается
приложением. Значение должно
в точности соответствовать
имени директории .NET
Framework. |
Ниже
приведен пример этого элемента.
<startup>
<supportedRuntime version="v1.0.3705" />
<supportedRuntime version="v1.1.4122" />
</startup>
Здесь
указывается, что приложение поддерживает
обе версии .NET Framework – версию 1.0 и
версию 1.1.
Ключевые моменты
-
Раздел <mscorlib>
предоставляет разделы и элементы,
которые создают соответствия между
дружественными именами и OID и
классами криптографии.
-
Раздел
<runtime> содержит параметры
для настройки сборок, используемых
вместе с приложением.
-
Элемент <gcConcurrent>
определяет запуск сборщика мусора в
том же потоке выполнения, что и
приложение, или в отдельном потоке.
-
Раздел
<startup> определяет версию
.NET Framework для запуска
приложения.
|