1.NET CLR Krizsán Zoltán Általános Informatikai Tanszék Miskolci Egyetem 1.0.

Slides:



Advertisements
Hasonló előadás
C# nyelvi áttekintő A „Programozás C# nyelven (Illés Zoltán)”
Advertisements

Kamarai prezentáció sablon
„Esélyteremtés és értékalakulás” Konferencia Megyeháza Kaposvár, 2009
Weblap szerkesztés HTML oldal felépítése Nyitó tag Záró tag Nyitó tag Záró tag oldalfej tözs.
Felhasználói felületek és üzleti logika Bollobás Dávid ASP.NET
C++ programozási nyelv Gyakorlat hét
Erőállóképesség mérése Találjanak teszteket az irodalomban
Mellár János 5. óra Március 12. v
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Bevezetés a Java programozásba
Osztályok Garbage collection.  általában minden osztálynak vannak adattagjai és/vagy metódusai ◦ adattagok megadása:  [láthatóság] [static] [final]
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 5. Gyakorlat Öröklődés, virtuális függvények,
Programozás II. 3. Gyakorlat C++ alapok.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 6. Gyakorlat const, static, dinamikus 2D.
Követelmények Bevezetés a Javába Első java program írása Dokumentációk
Ember László XUBUNTU Linux (ami majdnem UBUNTU) Ötödik nekifutás 192 MB RAM és 3 GB HDD erőforrásokkal.
A C++ programozási nyelvSoós Sándor 1/12 C++ programozási nyelv Gyakorlat - 8. hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet.
WEB Technológiák Dr. Pance Miklós – Kolcza Gábor Miskolci Egyetem.
C# tagfüggvények.
JSP és JavaBean JavaServer Pages és Java Beans Fabók Zsolt Általános Informatikai Tanszék Miskolci Egyetem.
C# tagfüggvények.
Krizsán Zoltán iit 1.2.  Nem kell vizuális felületnek lennie.  Delegátumok segítségével valósíthatja meg a.NET. Krizsán Zoltán iit Delegátumok C#-ban2.
Entity framework Krizsán Zoltán
Közös kinézet Mester oldal, témák, skin-ek, css Webalkalkalmazás fejlesztése ASP.NET-ben Krizsán Zoltán.
ASP.NET „röviden” Krizsán Zoltán ver: 0.2.
6. előadás Parametrikus polimorfizmus. Generikus programozás. Az Ada sablonok.
Szombathely Dinamikus WEB programozás: PHP és JSP.
Egyszerű webes alkalmazás fejlesztése Készítette: Simon Nándor.
Egyszerű webes alkalmazás fejlesztése
1 Operációs rendszerek Az NT folyamatok kezelése.
PHP I. Alapok. Mi a PHP? PHP Hypertext Preprocessor Szkriptnyelv –Egyszerű, gyors fejlesztés –Nincs fordítás (csak értelmező) Alkalmazási lehetőségek:
Programozás alapismeretek
V 1.0 ÓE-NIK, Programozás I. A Microsoft Visual Studio 2010 használata.
szakmérnök hallgatók számára
ARCHITECTArchitect AcademyFoundationsInsidersMCPtréningekvizsgákgyakorlatprojektek Novák István eEvangelist – „Dive deeper” Grepton Zrt. Technológiai vezető.
Optimalizálás Ez az előadó neve beosztása vállalata.
1.4. Fordítás, szerkesztés, az objektumkönyvtár használata.
Bevezetés a PRADO keretrendszerbe Kardos Gergely.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Hernyák Zoltán Programozási Nyelvek II.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Hernyák Zoltán Programozási Nyelvek II.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 1. gyakorlat.
2006. Peer-to-Peer (P2P) hálózatok Távközlési és Médiainformatikai Tanszék.
Komoróczy Tamás 1 Java programozási nyelv A nyelv alapjai.
Generics Krizsán Zoltán. Bemutató A.NET 2.0 verziótól. A.NET 2.0 verziótól. Típusparaméter Típusparaméter Más nyelvben ez a template (sablon). Más nyelvben.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Virtuális Méréstechnika Sub-VI és grafikonok 1 Makan Gergely, Vadai Gergely v
A Visual Basic nyelvi elemei
Algoritmizálás, adatmodellezés
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 1. gyakorlat.
Java web programozás 5..
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 1. gyakorlat.
DLL használata és készítése Feladat
.NET FRAMEWORK Röviden Krizsán Zoltán 1.0. Tulajdonságok I Rövidebb fejlesztés 20 támogatott nyelv (nyílt specifikáció) 20 támogatott nyelv (nyílt specifikáció)
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Informatikai gyakorlatok 11. évfolyam
TÁMOP /1-2F JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam Osztályok, objektumok definiálása és alkalmazása. Saját.
Krizsán Zoltán, iit C# osztályok 2 Adattagok  Osztály hatáskörben definiált változó.  Formája: [attribútum] [módosító] típus azonosító [=kezdő érték][,
Programok készítése és futtatása. Integrált fejlesztői környezet (IDE) tartalmaz:  szövegszerkesztőt a program forráskódjának szerkesztésére,  fordítóprogramot.
Neumann János Informatikai Kar
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
Informatikai gyakorlatok 11. évfolyam
Web programozás és haladó fejlesztési technikák – C#
Előadás másolata:

1.NET CLR Krizsán Zoltán Általános Informatikai Tanszék Miskolci Egyetem 1.0

2 Common Language Runtime Közös nyelvi futtató rendszer Közös nyelvi futtató rendszer A Microsoft üzleti implementációja A Microsoft üzleti implementációja Common Language Infrastruture (specifikáció), környezetek Common Language Infrastruture (specifikáció), környezetek –Létrehozó –Fejlesztő –futtató SSCLI (Rotor) SSCLI (Rotor)

3 Fő feladata Függetlenül hardvertől, szoftvertől: Függetlenül hardvertől, szoftvertől: –Felügyelt futtatása a menedzselt kódnak –JIT fordítás –Biztonsági ellenőrzés

4 Segítségek Új technológiák Alkalmazás tartományok (Application Domain) processz – alprocessz lehetőségek ugyanazok, de az alprocessz (pl.: plugin): Alkalmazás tartományok (Application Domain) processz – alprocessz lehetőségek ugyanazok, de az alprocessz (pl.: plugin): –logikai processz, –alacsony költségek Szerelvények (assembly) dll, de kultúra, és több verzió Szerelvények (assembly) dll, de kultúra, és több verzió

5 Alkalmazás tartomány

6 Virtuális futtató környezetek 1960 alakult ki az elv 1960 alakult ki az elv Lassú hardverek Lassú hardverek kezdetleges rendszer kezdetleges rendszer 1990-es évek Java Virtual Machine (JVM) 1990-es évek Java Virtual Machine (JVM) „Eléggé” gyors hardverek, „Eléggé” gyors hardverek, jól szervezett technológiák, jól szervezett technológiák, osztott rendszerek, osztott rendszerek, népszerű, népszerű, interpretált interpretált

7 Virtuális futtató környezetek II 2000.NET 2000.NET Absztrakt futtató környezet Absztrakt futtató környezet Nem interpretált Nem interpretált –JIT fordítás –Telepítéskor fordítás (NGEN.exe) Nyelv független Nyelv független Osztott rendszerek Osztott rendszerek

8

9 JIT fordítás Metódusonként fordít Metódusonként fordít Ha nem hívunk meg egy fv.-t, akkor nem is fordítja le Ha nem hívunk meg egy fv.-t, akkor nem is fordítja le 32 byte-ig inline fv., felette fv. hívás 32 byte-ig inline fv., felette fv. hívás

10 Egyszerű példa static void Main() {Console.WriteLine(”Hello”);Console.WriteLine(”Bello”);}

11 JIT fordítás menete Mielőtt a Main lefutna a CLR az összes hivatkozást felderíti. Mielőtt a Main lefutna a CLR az összes hivatkozást felderíti. A felderített hivatkozásokból egy belső struktúrát épít fel. A felderített hivatkozásokból egy belső struktúrát épít fel. –Minden fv-hez egy bejegyzés. –Ez a bejegyzés tartalmazza majd a fv. kezdőcímét. Végül beállítja a struktúra elemeit egy CLR-en belüli fv-re, nevezzük JITCopile- nak. Végül beállítja a struktúra elemeit egy CLR-en belüli fv-re, nevezzük JITCopile- nak.

12 JIT fordítás menete II Amikor a WriteLine fv. először meghívódik a JITCompile hívódik meg helyette! Amikor a WriteLine fv. először meghívódik a JITCompile hívódik meg helyette! JITCompile átnézi a metadatákat a fv. IL kódját keresve. JITCompile átnézi a metadatákat a fv. IL kódját keresve. JITCompile ellenőrzi, majd lefordítja az IL-t nativ-ra. JITCompile ellenőrzi, majd lefordítja az IL-t nativ-ra. Dinamikusan lefoglal memóriát, majd rámásolja a lefordított nativ kódot. Dinamikusan lefoglal memóriát, majd rámásolja a lefordított nativ kódot.

13 JIT fordítás menete III Visszatér, és átírja a struktúra megfelelő elemének tartalmát, hogy az a lefordított natív kódra mutasson. Visszatér, és átírja a struktúra megfelelő elemének tartalmát, hogy az a lefordított natív kódra mutasson. 2. alkalommal csak fv hívás, mert már lefordította. 2. alkalommal csak fv hívás, mert már lefordította.

14 Köztes kód MIL, MSIL, CIL 1-4 byte-os utasítások 1-4 byte-os utasítások kb 260 db utasítás kb 260 db utasítás Objektum orientált (newobj, callvirt) Objektum orientált (newobj, callvirt) Assembly (load, push, pop, call) Assembly (load, push, pop, call) Absztrakt Absztrakt Stack alapú (box, unbox) Stack alapú (box, unbox) Kivétel kezelést használ Kivétel kezelést használ A CLR minden funkciója elérhető segítségével! A CLR minden funkciója elérhető segítségével!

15 IL kód Natív kód erőforrások CLR menedzselt modul tartalma METADATA CLR fej PE fej

16 PE (portable executable) fej Hasonlít a COFF-ra Hasonlít a COFF-ra Tartalmazza a fájl típusát: Tartalmazza a fájl típusát: –GUI –CUI –DLL Időpecsétet Időpecsétet Csak natív CPU kódot tartalmazó modul esetén plusz információk a kódról Csak natív CPU kódot tartalmazó modul esetén plusz információk a kódról

17 CLR fej Szükséges CLR verziószáma Szükséges CLR verziószáma Flegek Flegek MetodDef metadata token a belépési ponthoz (Main fv.) MetodDef metadata token a belépési ponthoz (Main fv.) Helye, mérete, a modul: Helye, mérete, a modul: – METADATA-jának –erőforrásoknak –erős névnek –egyébb flegeknek –...

18 Metadata Minden menedzselt modul tartalmaz metadata táblákat Minden menedzselt modul tartalmaz metadata táblákat 2 fajtája van: 2 fajtája van: –leírják a típusokat, tagokat, amelyeket ugyanezen forráskód tartalmaz. –leírják azokat a típusokat, tagokat, amelyekre ez a forráskód referál, hivatkozik. A metadata csak a fájlban tárolódhat! A metadata csak a fájlban tárolódhat!

19 Assembly - szerelvény Lehet exe vagy dll Lehet exe vagy dll Logikai, fizikai egysége az: Logikai, fizikai egysége az: –újrahasznosítható –telepíthető –verzionálható komponens. Önleíró: minden információ tárol, ami szükséges a futásához. Semmilyen plusz info nem szükséges. Önleíró: minden információ tárol, ami szükséges a futásához. Semmilyen plusz info nem szükséges.

20 Szerelvény II Több modult is tartalmazhat. Több modult is tartalmazhat. Önálló biztonsági egység Önálló biztonsági egység Önálló típus egység Önálló típus egység Legkisebb verzionálható egység Legkisebb verzionálható egység Fej-fej melletti futást támogató egység Fej-fej melletti futást támogató egység Kódban import Kódban import Referencia hatáskör Referencia hatáskör

21 Több modul – egy szerelvény Mikor szükséges, érdemes? Típusokat tudjuk szétválasztani Így a felhasználó lépésenként le tudja tölteni. Típusokat tudjuk szétválasztani Így a felhasználó lépésenként le tudja tölteni. Erőforrásokat, adatokat mellékelünk a szerelvényhez. Erőforrásokat, adatokat mellékelünk a szerelvényhez. Több programozási nyelven készül az alkalmazás. Több programozási nyelven készül az alkalmazás.

22 Több modult tartalmazó szerelvény Sajnos a VS.NET nem ismeri. (Kézzel kell) Sajnos a VS.NET nem ismeri. (Kézzel kell) A modulok PE-je nem tartalmaz manifest- et, ezeket a szerelvény tárolja! A modulok PE-je nem tartalmaz manifest- et, ezeket a szerelvény tárolja! A modult csc esetén /t[arget]:module paraméterrel kell fordítani! Az eredménye xxx.netmodule lesz. A modult csc esetén /t[arget]:module paraméterrel kell fordítani! Az eredménye xxx.netmodule lesz. Egy szerelvényhez hozzá kell adni a modul(oka)t a /addmodule: kapcsolóval, vagy AssemblyLinker al.exe-vel Egy szerelvényhez hozzá kell adni a modul(oka)t a /addmodule: kapcsolóval, vagy AssemblyLinker al.exe-vel

23 Assembly Linker al.exe Erőforrás hozzáillesztése a szerelvényhez: Erőforrás hozzáillesztése a szerelvényhez: –beágyazás /embed[resource] –linkelés /link[resource] 32 bites erőforrás hozzáillesztése /win32res 32 bites erőforrás hozzáillesztése /win32res 32 bites ikon /win32icon 32 bites ikon /win32icon

24 AssemblyInfo.cs A VS.NET automatikusan létrehozza A VS.NET automatikusan létrehozza Attribútumokat lehet benne definiálni, melyek a szerelvényre vonatkoznak. Attribútumokat lehet benne definiálni, melyek a szerelvényre vonatkoznak. Némelyiket lehet a al.exe-ből állítani Némelyiket lehet a al.exe-ből állítani Pl.: [assembly:AssemblyVersion(” ”)] al.exe - /version paraméter Pl.: [assembly:AssemblyVersion(” ”)] al.exe - /version paraméter

25 Assembly telepítése Sima másolás Sima másolás Privát telepítés, ha a szerelvény bárhová felmásoljuk, a használó másik szerelvény mellé., ilyenkor más szerelvények nem érik el. Privát telepítés, ha a szerelvény bárhová felmásoljuk, a használó másik szerelvény mellé., ilyenkor más szerelvények nem érik el. Alkalmazás leszedése (uninstall) sima törlés Alkalmazás leszedése (uninstall) sima törlés Nem kell regisztry-t, ini fájlokat módosítani Nem kell regisztry-t, ini fájlokat módosítani

26 Szerelvények konfiguráció XML fájlok XML fájlok Futtatható szerelvény személyes konfigurációja, vele azonos jegyzékben: xxx.exe.config Futtatható szerelvény személyes konfigurációja, vele azonos jegyzékben: xxx.exe.config ASP.NET Web Forms, XML Web szervízek esetén a virtuális gyökerében Web.config, lehet sajátja is mellette Web.config ASP.NET Web Forms, XML Web szervízek esetén a virtuális gyökerében Web.config, lehet sajátja is mellette Web.config HTML oldal link tag-je HTML oldal link tag-je

27 Globális konfiguráció Felülírja az alkalmazás beállításait Felülírja az alkalmazás beállításait Helye: %SystemRoot%\Microsoft.NET\ Framework\vXXX\CONFIG\machine.config, ahol XXX a runtime verziója, pl.: Helye: %SystemRoot%\Microsoft.NET\ Framework\vXXX\CONFIG\machine.config, ahol XXX a runtime verziója, pl.: Grafikusan a Controll Panel alól. Grafikusan a Controll Panel alól.

28.NET Framework %windir%\system32 jegyzékben kell lennie egy MSCorEE.dll fájlnak. %windir%\system32 jegyzékben kell lennie egy MSCorEE.dll fájlnak. Több verzió is fent lehet egyidejűleg. Több verzió is fent lehet egyidejűleg. Melyik a beállított? HKEY_LOCAL_MACHINE\SOFTWARE\ Microsoft\.NETFramework\policy Melyik a beállított? HKEY_LOCAL_MACHINE\SOFTWARE\ Microsoft\.NETFramework\policy

29 Címtartomány Címtartomány Menedzselt exe Menedzselt exe betölti és inicializálja a CLR-t PE fej Menedzselt exe MSCorEE.dll.text JMP _CorExeMain.idata DLL: MSCorLib.dll Function: _CorExeMain START CLR fej

30 Folytatás 1. MSCorEE megvizsgálja CLR fejet, a Main metódus token lekérdezi. 2. Megvizsgálja Main metadata-ját, lekérdezi az IL helyét az EXE-ben. 3. Lefordítja IL kódot natív CPU kódra. 4. A Main fv. kezdő címére ugrik.

31 Program kérések Egy program, dinamikus, osztott Hosztok futtatni szeretnének: Hosztok futtatni szeretnének: –Távoli –Éppen letöltött, nem ellenőrzött, helyi –Helyi –Mobil kódot. Szabad neki? (vírus, krekker, TU) Szabad neki? (vírus, krekker, TU)

32 Megoldások Egyszerű: engedélyezett a kód, vagy nem (egész kód) Egyszerű: engedélyezett a kód, vagy nem (egész kód) Java: homokzsákba (sandbox) letölthetjük a távoli kódokat, de nincs interakció a helyi erőforrásokkal. Java: homokzsákba (sandbox) letölthetjük a távoli kódokat, de nincs interakció a helyi erőforrásokkal..NET típus biztos.NET típus biztos 1.Szerelvény ellenőrzése (manifest) 2.Típusok ellenőrzése a szerelvényben

33 Szerelvény ellenőrzés A manifest integritásának ellenőrzésén alapul: A manifest integritásának ellenőrzésén alapul: –Tokenek hivatkozásának ellenőrzése (használt táblák) –Token sztring tábla hivatkozások ellenőrzése. Ellenőrzés: Ellenőrzés: –Amikor a GAC-ba betöltődik –Amikor a diszkről beolvassa a rendszer

34 Típus ellenőrzés Ha az előző ellenőrzés sikeres volt, akkor következik Ha az előző ellenőrzés sikeres volt, akkor következik Óvatos Óvatos Nem menedzselt kód teljesen megbízott, nem ellenőrzi! Nem menedzselt kód teljesen megbízott, nem ellenőrzi!

35 CIL kód kategóriák Illegális A JIT nem tudja natív kódra fordítani, érvénytelen utasítás(oka)t tartalmaz. Pl.: ugró utasítások rossz helyre Illegális A JIT nem tudja natív kódra fordítani, érvénytelen utasítás(oka)t tartalmaz. Pl.: ugró utasítások rossz helyre Legális A JIT lefordítja nat. Kódra, de használ nem típus biztos lehetőségeket. Pl.: pointer aritmetikák adattagokra Legális A JIT lefordítja nat. Kódra, de használ nem típus biztos lehetőségeket. Pl.: pointer aritmetikák adattagokra Típus biztos Típus biztos Ellenőrizhető Ellenőrizhető

36 CTS C# Visual basic JAVA CLS CLR/CTS

37 CLS CLS kompatibilitás az [assembly:CLSCompliant(true)] attribútummal kapcsolható be. CLS kompatibilitás az [assembly:CLSCompliant(true)] attribútummal kapcsolható be. public UInt32 ABC() {return 0;} public void abc(){}

38 CLS II Az előző kód a CLS kompatibilitás bekapcsolása nélkül hibajelzés nélkül fut, de ha bekapcsoljuk, akkor: Az előző kód a CLS kompatibilitás bekapcsolása nélkül hibajelzés nélkül fut, de ha bekapcsoljuk, akkor: –hiba1 : előjel nélküli egész integer nem kompatibilis –hiba2 : a CLS nem case sensitive, így az ABC és az abc ugyanaz!

39 Profájlok Könyvtárak (library) készlete. Könyvtárak (library) készlete. Sztandard profájlok: Sztandard profájlok: –kernel – minimálisan ezt implementálni kell típusokat implementáló osztályok típusokat implementáló osztályok plusz osztályok a fordítóknak plusz osztályok a fordítóknak –compact – kiegészítő könyvtárak plusz funkciók

40 Compact profile Sztenderd CLI struktúra Kernel profájl Base Class Library Runtime Infrastructure Library XML Library Network Library Reflection Library E x t e n d e d N u m e r i c Lib E x t e n d e d A r a y Lib

41 Irodalomjegyzék