.NET Dr. Sipos Marianna El regyártott infrastruktúra az internetes alkalmazásokban jelentkez problémák megoldására David S. Platt A.NET egy operációsrendszer szint futtatókörnyezet. 2007. BMF-NIK-SZTI Sipos: 4. Komponenesek 2.NET CLR (Common Language Runtime) felügyelt kód Nyelvek közös futtatórendszere. Fejleszt eszközök Pl. Visual Studio.NET Forráskód MSIL Környezet specifikus futtatható kód (natív kód) Automatikus szemétgy jtés (GC) CTS (Common Type System) Futtatás s el tti fordító Just-in in-time compiler.net futtatókörnyezet Felügyelt (managed) kódot írunk. Köztes kódra fordítjuk minden nyelvb l. MSIL (Microsoft Intermmediate Language) JIT (Just In Time) compiler fordítja helyben. A CLR (Common Language Runtime) futtatókörnyezet a.net része. 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. BMF-NIK-SZTI Sipos: 4. Komponenesek 3 BMF-NIK-SZTI Sipos: 4. Komponenesek 4 Mono Nyílt forráskódú.net kompatibilis ECMA standard C# fordítóval CLR-el Fut: UNIX Linux Mac OS X Windows operációs rendszeren A felügyelt kód Dr. Sipos Marianna BMF NIK BMF-NIK-SZTI Sipos: 4. Komponenesek 5 2007. 2007. 03. 02. 1
Logikai csoportosítás, fizikai csoportosítás Egy solution több project Névterek Egy névtér több assemblybe fordulhat. Egy assembly több névteret tartalmazhat. A fizikai szétválasztást más szempontok döntik el. 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. A Visual Studióban nem kell minden projekthez külön fejleszt i felületet létrehozni. Egy megoldás tartalmazhat töb projektet is. 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. A VS-ben egy projektb l egy assembly lesz. Csak parancssorból valósítható a több részb l álló assembly. BMF-NIK-SZTI Sipos: 4. Komponenesek 7 BMF-NIK-SZTI Sipos: 4. Komponenesek 8 Debug / Release fordítás 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. 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) További saját magunk által definiált fordítási módokat hozhatunk létre. Definition: A végrehajtható fájlok formátuma valamint olyan fájloké, melyeket összeszerkesztünk, hogy végrehajtható fájlt képezzenek. Ez a fájl két részb l áll..net Framework Glossary 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ó. A native.net Framework assemblies mint az Mscorlib.dll vizsgálatát is lehet vé teszi az ILDASM. BMF-NIK-SZTI Sipos: 4. Komponenesek 9 BMF-NIK-SZTI Sipos: 4. Komponenesek 10 Manifest A Kepviselo PE fájl az ILDASM-ben BMF-NIK-SZTI Sipos: 4. Komponenesek 11 BMF-NIK-SZTI Sipos: 4. Komponenesek 12 2007. 03. 02. 2
A KonzolraIr metódus köztes kódja System.dll az ILDASM-ben BMF-NIK-SZTI Sipos: 4. Komponenesek 13 BMF-NIK-SZTI Sipos: 4. Komponenesek 14 A szerelvény Az assemly (szerelvény) fogalma Az assembly az alkalmazás kódját és er forrásait tartalmazó exe vagy dll fájl(ok) logikai gy jteménye. 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. Definíció: 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. 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:<file name> /target:<assembly file type> 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: 4. Komponenesek 15 BMF-NIK-SZTI Sipos: 4. Komponenesek 16 Privát és osztott szerelvény Minden szerelvénynek van Privát szerelvény (private assembly) Csak a vele azonos könyvtárból érhet Csak egy alkalmazás hivatkozhat rá. Ez az alapértelmezés. el. 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. 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) BMF-NIK-SZTI Sipos: 4. Komponenesek 17 BMF-NIK-SZTI Sipos: 4. Komponenesek 18 2007. 03. 02. 3
Privát és osztott assembly II. Natív kód Solution Explorer / References alatt Az assembly properties ablakában: Privát assembly esetén Strong Name: False Copy Local: True Osztott szerelvénynél: Strong Name: True Copy Local: False // jellemz en Total Commanderben Beállítások/Általános beállítások / Képerny C:\Windows\assembly GAC (Global Assembly Cash) GAC_32 GAC_MSIL NativeImages_v2.050727_32 A Studio csak köztes kódot generál / Látszik a rendszerfájl Natív kód parancssorból állítható el az ngen.exe segítségével BMF-NIK-SZTI Sipos: 4. Komponenesek 19 BMF-NIK-SZTI Sipos: 4. Komponenesek 20 GAC az explorerben GAC és Native image a total commanderben Global Assembly Cash BMF-NIK-SZTI Sipos: 4. Komponenesek 21 BMF-NIK-SZTI Sipos: 4. Komponenesek 22 A belépési pont (entry point).exe: Main() Verzionálás 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 Sipos: 4. Komponenesek 23 BMF-NIK-SZTI Sipos: 4. Komponenesek 24 2007. 03. 02. 4
Assembly információk a projektben Internal láthatóságok Solution Explorer AssemblyInfo.cs Verzió információ beállítása: [assembly: AssemblyVersion("1.0.*")] ILDASM-ben.assembly Munk {.ver 1:0:1790:33266 } internal: csak az assemlyb l érhet el. B vebb mint a private, sz kebb mint a public. protectedhez képest 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. protected internal: a szerelvényb l és az utódosztályokból is hozzáférhetünk. BMF-NIK-SZTI Sipos: 4. Komponenesek 25 BMF-NIK-SZTI Sipos: 4. Komponenesek 26 AAssembly Internal, protected és protected internal tagok honnét érhet k el? B internal Tag protected Tag BMF-NIK-SZTI Sipos: 4. Komponenesek 27 D A internal Tag protected Tag private Tag C A priv ate-on kív ül mindhez BAssembly E Következ Operátor overloading lépések Átdefiniálható operátorok Precedencia Típuskonverziós operátorok, Implicit és explicit konverziós operátorok. Kivételkezelés, kezeletlen kivétel Kivétel dobása és elkapása Kivételek egymásba ágyazása A.NET osztálykönzyvtár által biztosított kivételek és kezelésük. BMF-NIK-SZTI Sipos: 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 Sipos: 4. Komponenesek 29 2007. 03. 02. 5