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



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

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

Автор


Галин Илиев

Необходими знания


  • Базови познания за .NET Framework и CLR (Common Language Runtime)

  • Базови познания за общата система от типове в .NET (Common Type System – CTS)

  • Познания по езика C#

  • Познаване на инструментите от .NET Framework SDK

  • Базови познания за Windows Installer

Съдържание


  • Какво е асембли? Манифест на асембли

  • Конфигурационни файлове

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

  • Global Assembly Cache

  • Разпространение и инсталиране на програмни пакети

  • Инсталационни компоненти

  • COM базирани обекти

  • Сървърни компоненти (Serviced Components)

  • Настройки на Internet Information Server (IIS)

  • Промяна на регистрите на Windows

  • Споделени инсталационни компоненти (Merge Modules)

  • CAB файлове

  • Локализиране

  • Debug Symbols

  • Инсталационни стратегии

  • Създаване на MSI инсталационни пакети с VS.NET

В тази тема...


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

Асемблитата в .NET Framework


Асемблитата са основна съставна част на всеки софтуерен продукт, базиран на .NET Framework. Те са най-малката и основна част при раз­пространение на .NET приложения. Асемблитата се състоят от компили­рани .NET типове (интерфейси, класове, структури и др.), метаданни и ресур­си (.bmp, .jpeg, .ico файлове, .resource и .resx ресурси и други). Компи­лираните типове представляват изпълним програмен код във вид на инструкции на междинния език IL. Метаданните описват асемблитата и типовете в тях. Ресурсите могат да бъдат вградени или записани като външни файлове.

Асемблитата могат да бъдат статични и динамични. Статичните асемблита се съхраняват във файл в portable executable (PE) формат, докато дина­мичните се изпълняват директно от паметта и не се записват (във файл) преди изпълнението им. .NET Framework предлага стандартни средства и инструменти за създаване на динамични асемблита и позволява тяхното изпълнение и съхранение с помощта на класовете от простран­ството System.Reflection.Emit.


Асемблитата съдържат IL код за изпълнение


Асемблитата съдържат компилирани .NET типове – програмен код във вид на инструкции на езика Intermediate Language (IL), който се изпълнява от CLR чрез ком­пилация до машиннозависим код. Важно условие за изпъл­нение на IL кода е наличието на метаданни за асемблито и асембли манифест.

Асемблитата се записват във файлове, които са във формат PE (portable executable). Тези файлове най-често носят разширения .exe или .dll. Всеки преносим изпълним файл (PE файл) може да има входна точка за изпълнение – функция DllMain(…), WinMain(…) или Main(…), съответно за динамични библио­теки, Windows GUI приложения и конзолни приложения. Входната точка може да е най-много една.


Асемблитата формират граница за сигурността (security boundary)


Кодът, който се съдържа в дадено асембли, изисква определени права за достъп и изпълнение. Асемблитата са единица, която може да изисква и получава определени права (permissions). Когато се създава асембли, неговият разработчик може да посочи минимален набор от права, които асемблито задължително изисква, за да работи.

Дали определени права ще се дадат на дадено асембли или не зависи от политиките за сигурност на .NET Framework и т. нар. доказа­телства, които има асемблито – цифров подпис, силно име (strong name), местополо­жение (URL, UNC) и др.


Асемблитата формират граница за типовете (type boundary)


Всяко асембли обгръща типовете, които съдържа. Идентичността на типо­вете е свързана с името на асемблито, в което се намират. Това означава, че типът MyType, деклариран в assembly1.dll, не е еднакъв с типа MyType, деклариран в assembly2.dll. Това позволява по-голяма гъвкавост и независимост на имената при капсулиране на функционалност в асемб­литата.

Асемблитата формират граница на видимостта (reference scope boundary)


Манифестът на асемблитата (ще се спрем на него малко по-нататък в настоящата тема) съдържа метаданни, които се използват за намиране на типовете и ресурсите, включени в асемблито. Манифестът определя типо­вете и ресурсите, които са видими извън границите на асемблито (от други асемблита). В него се описват също и асемблитата, които се изиск­ват, за да се изпълни основното асембли.

Асемблитата формират граница на версиите (version boundary)


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

В .NET Framework е възможно различни версии на едно и също асембли да съществуват и да се изпълняват едновременно без да си пречат. Това решава много проблеми, предизвикани от конфликти във версиите.

Манифестът описва точно версията на асемблито, както и версии­те на асемблитата, които се изискват, за да се изпълни то.

Асемблитата са единица за споделяне


Асемблитата са най-малката единица, която може да бъде споделена меж­ду няколко .NET приложения. Основен начин на споделяне е да се даде на асемблито силно име и се постави в GAC (Global Assembly Cache). Друг начин е да се инсталира като частно асембли към дадено приложение. Подробно ще разгледаме тези техники в частта "Разпространение на асем­блита".

Асемблитата са единици за разпространение (deployment units)


Асемблитата формират основна програмна единица за разпространение. Когато се стартира едно .NET приложение, са му необходими само асем­блитата, които се извикват първоначално. Остана­лите асемблита (като ресурси за локализация или допълнителни модули) се зареждат при пър­вото им поискване (on demand). Това позволява приложе­нията да се поддържат малки и удобни при първоначално разпростра­нение. Тази възможност е особено важна при технологията .NET Zero Deployment, която ще опишем по-късно в настоящата тема.




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




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

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