Асемблита и разпространение


Конфигурационни файлове в .NET Framework



страница3/6
Дата10.01.2017
Размер0.64 Mb.
#12406
1   2   3   4   5   6

Конфигурационни файлове в .NET Framework


Конфигурационните файлове в .NET Framework са текстови файлове в XML формат и служат за задаване на различни настройки на .NET прило­женията. Съществуват няколко вида конфигурационни файлове:

  1. Конфигурационен файл за настройките на машината - Machine.config – този файл се намира в %runtime install path%\Config (например C:\WINDOWS\Microsoft.NET\Framework\ v1.1.4322\Config) и съдържа настройки оказващи влияние върху CLR за локалния компютър.

  2. Конфигурационни файлове на приложенията – съдържат настройки, специфични за дадени приложения. Те са два вида: за уеб-базирани приложения се казват винаги Web.config и се намират в коренната директория на уеб приложението или уеб услугата в Internet Information Server и за Windows-базирани приложения – образуват се от името на приложението с .config разширение (например: ако имаме прило­жение MyLibrary.dll, конфигурационният му файл ще се казва MyLibrary.dll.config).

  3. Publisher Policy File – указват на всички приложения да използват по-нова версия на външно асембли от тази, спрямо която са били компилирани (version redirect). По-нататък ще разгледаме как се използват (вж. Създаване на Publisher Policy File).

  4. Конфигурационни файлове за сигурността (security policy) – съдър­жат описание на правата за изпълнение на инсталираните асем­блита. В .NET Framework съществу­ват няколко нива на сигур­ност:

  • ниво организация

  • ниво машина

  • ниво потребител

Следващата таблица показва тяхното местоположение в зависимост от операционната система:

Enterprise security policy configuration file

Windows 2000

%runtime install path%\Config\ Enterprisesec.config

Windows NT

%runtime install path%\Config\ Enterprisesec.config

Windows 98 and Windows Millennium Edition (Windows Me)

%runtime install path%\Config\ Enterprisesec.config




Machine security policy configuration file

Windows 2000

%runtime install path%\Config\ Security.config

Windows NT

%runtime install path%\Config\ Security.config

Windows 98 and Windows Me

%runtime install path%\Config\ Security.config




User security policy configuration file

Windows 2000

%USERPROFILE%\Application Data\ Microsoft\CLR security config\ vxx.xx\Security.config

Windows NT

%USERPROFILE%\Application Data\ Microsoft\CLR security config\ vxx.xx\Security.config

Windows 98 and Windows Me

%WINDIR%\username\CLR security config\vxx.xx\Security.config

Всички тези конфигурационни файлове са важни за разпространението на .NET приложенията, на което ще се спрем след малко.

Как CLR намира асемблитата?


Важно e за разработването и разпространението на .NET приложения да се познава как CLR търси асемблитата, които дадено приложение изисква, за да се изпълни. По подразбиране CLR се опитва да намери асемблитата със същата версия, с която приложението е било компилирано. Когато .NET приложение изиска външно асембли, се изпълняват следните стъпки:

  1. Определя се вярната версия на нужното асембли – чрез проверяване на конфигурационните файлове (за настройките на машината, на приложението и publisher policy file).

  2. Проверява се дали приложението е използвало асембли със същото име. В такъв случай се зарежда последното използвано асембли.

  3. Проверява се Global Assembly Cache. Ако асембли със същото име се намира там, се използва то.

  4. Изпълнява се търсене на асембли (assembly probing) чрез следните стъпки:

    • Ако конфигурационните файлове не променят версията на изиск­ваното асембли, тогава CLR се опитва да налучка местополо­жението му като се базира на неговото име.

    • Ако е намерен елемент в конфигурационните файлове се търси само в пътя, посочен там. Ако асемблито не е намерено, се регистрира грешка и се прекратява търсенето.

    • Търси се в поддиректориите, посочени в
      секцията на конфигурационния файл на приложението. Ако не е намерено асемблито, се прави заявка към Windows Installer да инсталира изискваното асембли. Тази възможност на Windows Installer се нарича инсталиране при заявка (install-on-demand).



За асемблита, които не са силно именувани, CLR не прове­рява GAC за тяхното наличие и не проверява версията.

Пример 1: Търсене на асембли (probing)


За да поясним описания процес, ще дадем един пример. Нека имаме Windows-базирано приложение BaseDir\MyApp.exe, което използва ресур­си от асембли MyLibrary, което не е силно именувано. Конфигурацион­ният файл MyApp.exe.config съдържа:

MyApp.exe.config














При стартиране на MyApp.exe асемблито MyLibrary се търси в следни­те директории:

BaseDir\MyLibrary.dll

BaseDir\MyLibrary\MyLibrary.dll

BaseDir\bin\MyLibrary.dll

BaseDir\bin\MyLibrary\MyLibrary.dll

BaseDir\bin2\subdir\MyLibrary.dll

BaseDir\bin2\subdir\MyLibrary\MyLibrary.dll

(после същите файлове, но с разширение .exe)

С помощта на инструмента Assembly Binding Log Viewer (Fuslogvw.exe), който е част от .NET Framework SDK, може да се разгледа детайлно в кои директории и в какъв ред търси CLR асемблитата.

Пример 2: Търсене на асембли с тага


Нека разширим малко предходния пример. Добавяме в конфигурационния файл MyApp.exe.config таг в частта между таговете и .

MyApp.exe.config













href="CodeBase\MyLibrary.dll" />










При стартиране на MyApp.exe асемблито MyLibrary се вече търси в само в посочената директория:

CodeBase\MyLibrary.dll

Забележка: CLR дори не опитва да намери асембли MyLibrary.exe.



При посочен таг CLR търси асембли само с посочено име и само в посочената директория. Ако не бъде намерено асемблито, търсенето се прекратява и се съобщава за грешка.

Създаване на Publisher Policy File


Файловете с политика на издателя (publisher policy file) са специален вид конфигурационни файлове, които се компилират и инсталират в Global Assembly Cache и указват на всички приложения да използват по-нова версия на външно асембли от тази, спрямо която са били компилирани (version redirect).

Използването на такива файлове можем да демонстрираме чрез няколко стъпки:



  1. Създаваме publisher policy file с име pubPolicy.config. Целта на този файл е да укаже на CLR при извикване на асемблито с посочения манифест (име - myRedirectedAssembly, публичен ключ - 32ab4ba45e0a69a1, версия - 1.0.0.0) да се зареди асембли със същото име и публичен ключ, но версия 2.0.0.0.

    pubPolicy.config









    publicKeyToken="32ab4ba45e0a69a1" />

    -- Redirecting to version 2.0.0.0 -->

    newVersion="2.0.0.0"/>











  2. Компилираме на publisher policy file до publisher policy assembly. Ще използваме създадения файл, за да създадем асембли и да го именуваме силно (ще използваме същия файл, който създадохме в точката Създаване на силно именувано асембли. Това става с помощта на инструмента Assembly Linker (al.exe):

al /link:pubPolicy.config /out:policy.1.0.myRedirectedAssembly.dll /keyfile:keypair.snk

Изходът от тази команда е асембли, записано във файл с име policy.1.0.myRedirectedAssembly.dll.

  1. Добавяне в GAC. Необходимо е така създаденото Publisher Policy Assembly да бъде добавено в Global Assembly Cache. Това става със следната команда:

gacutil /i policy.1.0.myRedirectedAssembly.dll

(За повече информация вж. http://msdn.microsoft.com/library/default.asp? url=/library/en-us/cpguide/html/cpconcreatingpublisherpolicy­file.asp).



Сподели с приятели:
1   2   3   4   5   6




©obuch.info 2024
отнасят до администрацията

    Начална страница