Henselmanuv seznam IT otázek pro pohovory IV.

MyEgo.cz

home foto blogy mywindows.cz kontakt

Henselmanuv seznam IT otázek pro pohovory IV.

Dnes se podíváme trochu na Assembly. Pod pojmem Assembly si lze představit jakoukoliv knihovnu, fyzicky tedy soubor s příponou dll nebo exe soubory. Podrobnější definici můžete na najít na Wikipedii po heslem .Net Assembly.

16. Používá metoda Assembly.Load(...) statickou či dynamickou referenci?
Metoda Load() používá dynamické reference.
Rozdíl mezi statickou a dynamickou referencí je, že statické reference jsou uložené v metadatech během kompilace a zde jsou pak dostupné. Dynamické reference se zjišťují během běhu aplikace, tzv. Run-Time.
Referencí se zde myslí třeba odkaz na metodu definovanou v dané Assembly.

17. Kde je vhodnější použít Assembly.LoadFrom() a kde Assembly.LoadFile()?
- metoda Load() ... metoda používá vlastní metodu pro prohledávání. Dle zadaného jména assembly prohledá GAC nebo Bin adresář aplikace a pokud assembly nalezne, tak ji nahraje.
- metoda LoadFrom() ... metoda používá vlastní metodu pro prohledávání. Dle zadaného parametru se snaží najít danou assembly v GAC nebo Bin adresář nebo zadané cestě
- metoda LoadFile() ... metoda nepoužívá vlastní metodu a nahraje assembly jen dle vstupního parametru, tedy plné cesty k assembly.

Odpověď tedy je, že v případě, kdy jsme si jisti cestou k assembly, můžeme ušetřit cenný čas použitím metody LoadFile, která nespouští vnitřní mechanismus vyhledávání.

Z téhle otázky nejsem moc chytrý, ale našel jsem pěkný přehled na tomto blogu. V případě nejasností doporučuji prozkoumat.

18. Co je to Assembly Qualified Name?
Assembly Qualified Name je řetězec, který jednoznačně identifikuje Assembly a obsahuje minimálně tyto informace:
- assembly jméno
- culture - standardně nastavena na culture neutral (specifické Culture by měla být definována jen pro satellite assemblies)
- verze assembly (major, minor, build a revision)
- veřejný klíč, kterým je assembly podepsána

Příklad:

CODE
System.Data, Version=1.0.5000.0, Culture=neutral,   PublicKeyToken=b77a5c561934e089



Odkaz na msdn článěk vysvětlující jak získat Assembly Qualified Name.

Kód pro získání Assembly Qualified Name pro DataSet objekt:

CODE
Type t = typeof(System.Data.DataSet);
     string s = t.Assembly.FullName.ToString();
     Console.WriteLine("The fully qualified assembly name containing the specified class is: {0}.", s);



19. Je toto použití správné? Assembly.Load("foo.dll");
Ne, není.
"foo.dll" není Assembly Qualified Name.

20. Jaký je rozdíl mezi podepsanou a nepodepsanou assembly?
Hlavním rozdílem je že podepsaná knihovna může být nahrána do GAC.
Dále také podepsaná knihovna je jednoznačně identifikovaná pomocí hash klíče a proto nemůže být zaměněna za knihovnu se stejným jménem s rozdílným hashem či rozdílnou verzí.
Podepsaná assembly dovoluje nahrát do GACu knihovny se stejným jménem ale rozdílnou verzí.

Jednoduchý příklad pro práci s Assembly: [attachment=172:AssemblyPouziti.zip]


Nový komentář