PPT 4. Komponensek
Dr. Sipos Marianna
.NET El regyártott infrastruktúra az internetes alkalmazásokban jelentkez problémák megoldására
PPT 4. Komponensek
David S. Platt
Dr. Sipos Marianna
A .NET egy operációsrendszer szint futtatókörnyezet.
2007.
BMF-NIK-SZTI
.NET
2
.NET futtatókörnyezet
CLR (Common Language Runtime) felügyelt kód
Felügyelt (managed) kódot írunk. Köztes kódra fordítjuk minden nyelvb l. MSIL (Microsoft Intermmediate Language)
Nyelvek közös futtatórendszere. Fejleszt eszkö eszközök Pl. Visual Studio .NET
Forráskód
Sipos: PPT 4. Komponenesek
JIT (Just In Time) compiler fordítja helyben.
Futtatá Futtatás el tti fordí fordító JustJust-inin-time compiler
A CLR (Common Language Runtime) futtatókörnyezet a .NET része.
MSIL Környezet specifikus futtatható kód (natív kód)
Op. Rendszer független futtatás (.NET kell). Különböz nyelvek kényelmes együttm ködése.
Automatikus szemétgy jtés (GC)
Automatikus szemétgy jtés.
CTS (Common Type System) BMF-NIK-SZTI
Sipos: PPT 4. Komponenesek
3
BMF-NIK-SZTI
Sipos: PPT 4. Komponenesek
4
Mono Nyílt forráskódú .NET kompatibilis ECMA standard
A felügyelt kód
C# fordítóval CLR-el
Dr. Sipos Marianna BMF NIK
Fut: UNIX Linux Mac OS X Windows operációs rendszeren BMF-NIK-SZTI
2007. 03. 02.
Sipos: PPT 4. Komponenesek
5
2007.
1
PPT 4. Komponensek
Dr. Sipos Marianna
Egy solution több project
Logikai csoportosítás, fizikai csoportosítás
A Visual Studióban nem kell minden projekthez külön fejleszt i felületet létrehozni.
Névterek Egy névtér több assemblybe fordulhat. Egy assembly több névteret tartalmazhat.
Egy megoldás tartalmazhat töb projektet is.
A fizikai szétválasztást más szempontok döntik el.
Ezzel lehet vé teszi a projektek párhuzamos módosítását és azonnali frissítését a módosított változatoknak.
Melyik gépre kell telepíteni Több gépre kel-e egy részét telepíteni Gyakrabban frissítend részek Méret és sebesség Több más assembly használja. BMF-NIK-SZTI
Sipos: PPT 4. Komponenesek
A VS-ben egy projektb l egy assembly lesz. Csak parancssorból valósítható a több részb l álló assembly. 7
BMF-NIK-SZTI
Debug / Release fordítás Definition:
A végrehajtható fájlok formátuma valamint olyan fájloké, melyeket összeszerkesztünk, hogy végrehajtható fájlt képezzenek. .NET Framework Glossary
Ez a fájl két részb l áll.
A Release fordítás nem tartalmaz nyomkövetési információkat, így kisebb kód. Ezt használjuk a készterméknél is. (A kisebb kód más-más memóriahasználatot jelent, tehát nagyobb projekt esetén legalább a mérföldköveknél érdemes tesztelni)
A Metaadatokat tartalmazó un. Manifest részb l, És a köztes kódot tartalmazó a project neve által meghatározott részb l. A PE fájl az Visual Studio Tools-ban található parancssorból indítható ILDASM (Intermediate Language Disassembler) segédprogramból vizsgálható.
További saját magunk által definiált fordítási módokat hozhatunk létre.
Sipos: PPT 4. Komponenesek
A native .NET Framework assemblies mint az Mscorlib.dll vizsgálatát is lehet vé teszi az ILDASM. 9
BMF-NIK-SZTI
2007. 03. 02.
Sipos: PPT 4. Komponenesek
Sipos: PPT 4. Komponenesek
10
A Kepviselo PE fájl az ILDASM-ben
Manifest
BMF-NIK-SZTI
8
PE file (Portable Executable file)
Debug fordítás tartalmazza a nyomkövetéshez szükséges információkat. Ezt használjuk jellemz en a fejlesztés során. Start Debugging-al futtatunk (F5). A Consol Application-t szoktuk Start Without Debugginggal (Ctrl F5) futtatni, hogy ne kelljen folyton az ablak bezáródása ellen védekeznünk.
BMF-NIK-SZTI
Sipos: PPT 4. Komponenesek
11
BMF-NIK-SZTI
Sipos: PPT 4. Komponenesek
12
2
PPT 4. Komponensek
Dr. Sipos Marianna
A KonzolraIr metódus köztes kódja
BMF-NIK-SZTI
Sipos: PPT 4. Komponenesek
System.dll az ILDASM-ben
13
BMF-NIK-SZTI
A szerelvény
Sipos: PPT 4. Komponenesek
14
Az assemly (szerelvény) fogalma Definíció:
Az assembly az alkalmazás kódját és er forrásait tartalmazó exe vagy dll fájl(ok) logikai gy jteménye.
Egy fájl akkor és csak akkor assembly, ha menedzselt, és tartalmaz egy assembly belépési pontot. A .NET Framework alkalmazások alapvet épít kövei az assemblyk.
David S. Platt Bemutatkozik a Microsoft .NET A szerelvény egy vagy több azonos könyvtárban található fájl együttese, melyeket közös verzióinformációval látunk el, és együtt telepítünk.
A Visual Studio egy PE formátumú assemblyt készít .exe vagy .dll kiterjesztéssel. Assembly több modulfájlból: Parancssorból készíthetünk modulfájlt, ami nem tartalmaz manifesztet csc /t:module fájl.cs. A manifeszt nélküli fájlt a CLR (Common Language Runtime) nem tudja futtatni. Az Assembly Linkerrel (AL.exe) összeszerkesztve
ket.
al <module name> <module name> ... /main:<method name> /out:
/target: MSDN súgó, Building a Multifile Assembly .NET Framework Developer s Guide
Az assembly csak akkor tölt ik be, ha szükség van rá, tehát nagy projektek esetén ez az er forrás-menedzselés hatékony eszköze lehet.
BMF-NIK-SZTI
Sipos: PPT 4. Komponenesek
15
BMF-NIK-SZTI
Privát és osztott szerelvény Neve
Verzió száma Kultúra információja (opcionális)
Osztott szerelvény (shared assembly) Több alkalmazás is használhatja. A GAC-ban (global assembly cash) tároljuk. Windows/assembly alkönyvtára Er s névvel (strong name) látjuk el. Ez az osztott assembly azonosítója.
2007. 03. 02.
Sipos: PPT 4. Komponenesek
16
Minden szerelvénynek van
Privát szerelvény (private assembly) Csak a vele azonos könyvtárból érhet el. Csak egy alkalmazás hivatkozhat rá. Ez az alapértelmezés.
BMF-NIK-SZTI
Sipos: PPT 4. Komponenesek
Az er s név az osztott assembly azonosítója. Név, verziószám, kultúra információn kívül: egy nyilvános kulcsú azonosítóból és digitális aláírásból áll. (public key token)
17
BMF-NIK-SZTI
Sipos: PPT 4. Komponenesek
18
3
PPT 4. Komponensek
Dr. Sipos Marianna
Privát és osztott assembly II.
Natív kód
Solution Explorer / References alatt
Total Commanderben Beállítások/Általános beállítások / Képerny / Látszik a rendszerfájl
Az assembly properties ablakában:
C:\Windows\assembly GAC (Global Assembly Cash) GAC_32 GAC_MSIL NativeImages_v2.050727_32
Privát assembly esetén Strong Name: False Copy Local: True
Osztott szerelvénynél: Strong Name: True Copy Local: False // jellemz en
A Studio csak köztes kódot generál Natív kód parancssorból állítható el az ngen.exe segítségével
BMF-NIK-SZTI
Sipos: PPT 4. Komponenesek
19
BMF-NIK-SZTI
Sipos: PPT 4. Komponenesek
20
GAC és Native image a total commanderben
GAC az explorerben Global Assembly Cash
BMF-NIK-SZTI
Sipos: PPT 4. Komponenesek
21
BMF-NIK-SZTI
A belépési pont (entry point)
Sipos: PPT 4. Komponenesek
22
Verzionálás
.exe: Main()
A kompatibilitási verzió négy számból áll. major version f verziószám minor version másodlagos verziószám build number fordítás sorszám revision revízió szám A build number és a revision *-al helyettesítve automatikusan generálódik.
View / Headers / PE Optional Headers (exe, dll) BMF-NIK-SZTI
2007. 03. 02.
Sipos: PPT 4. Komponenesek
23
BMF-NIK-SZTI
Sipos: PPT 4. Komponenesek
24
4
PPT 4. Komponensek
Dr. Sipos Marianna
Assembly információk a projektben
Internal láthatóságok
Solution Explorer
internal: csak az assemlyb l érhet el.
AssemblyInfo.cs
B vebb mint a private, sz kebb mint a public.
Verzió információ beállítása:
protectedhez képest
[assembly: AssemblyVersion("1.0.*")]
azonos szerelvényben b vebb, mert nem kell utódnak lenni a hozzáféréshez, különböz assebmlyben sz kebb, mert az utód a protectedhez hozzáfér, az internalhoz nem.
ILDASM-ben .assembly Munk { .ver 1:0:1790:33266 }
BMF-NIK-SZTI
protected internal: a szerelvényb l és az utódosztályokból is hozzáférhetünk.
Sipos: PPT 4. Komponenesek
25
BMF-NIK-SZTI
Sipos: PPT 4. Komponenesek
26
A Assembly
Következ lépések
B
A
Hozzáfér internal Tag
public Tag internal Tag
public Tag
protected Tag private Tag
protected internal Tag
protected internal Tag
Operátor overloading Átdefiniálható operátorok Precedencia
C
Internal, protected és protected internal tagok honnét érhet k el?
Típuskonverziós operátorok, Implicit és explicit konverziós operátorok.
Hozzáfér
A priv ate-on kív ül mindhez
Kivételkezelés, kezeletlen kivétel Kivétel dobása és elkapása BA ssembly D Hozzáfér
public Tag BMF-NIK-SZTI
Sipos: PPT 4. Komponenesek
Kivételek egymásba ágyazása
E
A .NET osztálykönzyvtár által biztosított kivételek és kezelésük.
Hozzáfér public Tag
protected internal Tag
protected Tag 27
BMF-NIK-SZTI
Sipos: PPT 4. Komponenesek
28
Idézetek Dijkstra-tól a strukturált programozás atyjától "Computer Science is no more about computers than astronomy is about telescopes." "Do only what only you can do "The question of whether computers can think is like the question of whether submarines can swim." "Object-oriented programming is an exceptionally bad idea which could only have originated in California." "Simplicity is prerequisite for reliability." "Elegance is not a dispensable luxury but a factor that decides between success and failure."
BMF-NIK-SZTI
2007. 03. 02.
Sipos: PPT 4. Komponenesek
29
5