Vizuális és eseményvezérelt programozás BMF NIK



Hasonló dokumentumok
Vizuális, eseményvezérelt programozás X. V 1.0

.NET Microsoft.Net Framework

Bánsághi Anna

Programozás 2., I. kötet Az objektumorientált paradigma alapjai

A.NET Framework és programozása C# nyelven. Kedd I104

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

Objektumorientált programozás C# nyelven

Bánsághi Anna

VB C++ C# JScript J# Common Language Specification. ADO.NET and XML. Base Class Library. Common Language Runtime. Operating System

Objektumorientált programozás C# nyelven

4. Programozási nyelvek osztályozása. Amatőr és professzionális

Eseményvezérelt alkalmazások fejlesztése II. A.NET keretrendszer és a C# programozási nyelv. Objektumorientált programozási nyelvek A Smalltalk nyelv

Programozás III CSOMAGOK. Az összetartozó osztályok és interfészek egy csomagba (package) kerülnek.

A.NET keretrendszer (.NET Framework) három alapvetõ összetevõbõl áll:

Kaspersky Internet Security Felhasználói útmutató

Ismerjük meg a Monót!

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek

Objektumorientált programozás C# nyelven III.

Webes alkalmazások fejlesztése 8. előadás. Webszolgáltatások megvalósítása (ASP.NET WebAPI)

Magas szintű programozási nyelvek 2 Előadás jegyzet

Objektumorientált programozás C# nyelven

BBS-INFO Kiadó

Bevezetés, platformok. Léczfalvy Ádám

Tesztelés és hibajavítás Microsoft Visual Studio 2005 fejlesztőkörnyezetben

Programozási nyelvek Java

A Microsoft Visual Studio 2005 fejlesztőkörnyezet

Bevezetés a Programozásba II 11. előadás. Adatszerkezetek megvalósítása. Adatszerkezetek megvalósítása Adatszerkezetek

Java VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás:

Karbantartás. Az ESZR Karbantartás menüjébentudjuk elvégezni az alábbiakat:

C# osztályok. Krizsán Zoltán

1.1 Szakdolgozat témája A Program célja A használt technológiák ismertetése A program megtervezése...

BARANGOLÁS AZ E-KÖNYVEK BIRODALMÁBAN Milyen legyen az elektonikus könyv?

.NET (Dot-NET) #1 (Bevezetés)

II. Programozási technológiák

15. Programok fordítása és végrehajtása

Programozás C++ -ban 2007/4

Bánsághi Anna 1 of 67

Előzmények

Adatstruktúrák Algoritmusok Objektumok

3. Gyakorlat Ismerkedés a Java nyelvvel

Gyorskalauz a Windowshoz készült asztali Novell Filr alkalmazáshoz

Programozás alapjai II. (9. ea) C++ többszörös öröklés, cast, perzisztencia

Adatbázisok* tulajdonságai

PHP5 Új generáció (2. rész)

Emlékeztető: a fordítás lépései. Szimbólumtábla-kezelés. Információáramlás. Információáramlás. Információáramlás.

C# Nyelvi Elemei. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Nyelvi Elemei / 18

RIA Rich Internet Application

Karbantartás. Az ESZR Karbantartás menüjébentudjuk elvégezni az alábbiakat:

Szoftverprototípus készítése. Szoftverprototípus készítése. Szoftverprototípus készítése

A SZOFTVERTECHNOLÓGIA ALAPJAI

Programozás BMEKOKAA146. Dr. Bécsi Tamás 1. Előadás

Gyorskalauz a Machez készült asztali Novell Filr alkalmazáshoz

Eseményvezérelt alkalmazások fejlesztése II 12. előadás. Objektumrelációs adatkezelés (ADO.NET) Giachetta Roberto

Dr. Pétery Kristóf: Excel 2007 feladatok és megoldások 2.

Programozási technikák Pál László. Sapientia EMTE, Csíkszereda, 2009/2010

XmlGessünk 13. rész - Az XML Schema II.

Programozás II. labor

Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606. Dr. Bécsi Tamás

VirtualBox, Debian telepítés

strings.xml res/values/strings.xml fájlban hozzuk létre a hiányzó string adatforrásainkat A jelenlegi helyett ez álljon: <resources> <string

10. évfolyam 105 óra azonosító számú Hálózatok, programozás és adatbázis-kezelés 105 óra Adatbázis- és szoftverfejlesztés gyakorlat tantárgy

Minden jog fenntartva, beleértve bárminemű sokszorosítás, másolás és közlés jogát is.

++Buy( Kaspersky Anti- Virus 2014 top sites for computer software ]

A C# PROGRAMOZÁSI NYELV

ORPHEUS. Felhasználói kézikönyv. C o p y r i g h t : V a r g a B a l á z s Oldal: 1

OOP #14 (referencia-elv)

BAUSFT. Pécsvárad Kft Pécsvárad, Pécsi út 49. Tel/Fax: 72/ ISO-bau. Szigetelés kiválasztó verzió.

C#, OOP. Osztályok tervezése C#-ban

Programozás I. Metódusok C#-ban Egyszerű programozási tételek. Sergyán Szabolcs

Év zárása és nyitása 2015-ről 2016-ra

A PROGAMOZÁS ALAPJAI 1. Függvény mint függvény paramétere. Függvény mint függvény paramétere. Függvény mint függvény paramétere

Máté: Számítógép architektúrák

C# gyorstalpaló. Készítette: Major Péter

Adatbázisok I Adatmodellek komponensei. Adatbázis modellek típusai. Adatbázisrendszer-specifikus tervezés

VBA. Visual Basic for Applications

JAVA PROGRAMOZÁS 3.ELŐADÁS

Csak felvételi vizsga: csak záróvizsga: közös vizsga: Mérnök informatikus szak BME Villamosmérnöki és Informatikai Kar május 30.

Adatstruktúrák, algoritmusok, objektumok

Access adatbázis elérése OLE DB-n keresztül

Miért ASP.NET? Egyszerű webes alkalmazás fejlesztése. Történet ASP ASP.NET. Működés. Készítette: Simon Nándor

Jogosultságkezelés felhasználói leírás

ÓBUDAI EGYETEM Neumann János Informatikai Kar Informatikai Rendszerek Intézet Témavezető: Bringye Zsolt

Haladóprogramozás (C#) , I. félév BMF NIK

A NYELV NEVE. Kezdetben: Oak. James Gosling. Java: Sun Mycrosystems védjegyev

Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

Objektumorientált programozás. Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

Virtualizációs Technológiák Bevezetés Kovács Ákos Forrás, BME-VIK Virtualizációs technológiák

A tömörítési eljárás megkezdéséhez jelöljük ki a tömöríteni kívánt fájlokat vagy mappát.

OAF Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1.

Assembly Rekurzív függvények, EXE, C programok. Iványi Péter

Minden jog fenntartva, beleértve bárminemű sokszorosítás, másolás és közlés jogát is.

II. év. Adatbázisok és számítógépek programozása

Mobil készülékek programozása

Webszolgáltatások kommunikációs overhead-jének becslése

Programozás alapjai C nyelv 5. gyakorlat. Írjunk ki fordítva! Írjunk ki fordítva! (3)

Eseményvezérelt alkalmazások fejlesztése II 1. előadás. A.NET keretrendszer és a C# programozási nyelv. A.NET keretrendszer Eredete

IBM Data Server ügyfelek telepítése

INFORMATIKAI ALAPISMERETEK

Tanúsítási jelentés. Hung-TJ a MultiSigno Developer Professional. aláíró alkalmazás fejlesztő készletről. /Kopint-Datorg Rt.

MVC Java EE Java EE Kliensek JavaBeanek Java EE komponensek Web-alkalmazások Fejlesztői környezet. Java Web technológiák

Átírás:

Vizuális és eseményvezérelt programozás BMF NIK A.NET keretrendszer Definíció Vázlatos felépítés A köztes nyelv és a.net futtatókörnyezet Menet közbeni fordítás és optimalizálás Egységes típusrendszer Automatikus memóriakezelés Szerelvények és verziókezelés Biztonsági modell Osztálykönyvtárak miklos.arpad@nik.bmf.hu

Hallgatói tájékoztató A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendő anyag vázlatát képezik. Ismeretük szükséges, de nem elégséges feltétele a sikeres zárthelyinek, illetve vizsgának. Sikeres zárthelyihez, illetve vizsgához a jelen bemutató tartalmán felül a kötelezőirodalomként megjelölt anyag, a gyakorlatokon szóban, illetve a táblán átadott tudnivalók ismerete, valamint a gyakorlatokon megoldott példák és az otthoni feldolgozás céljából kiadott feladatok önálló megoldásának képessége is szükséges. 2009. január 31. miklos.arpad@nik.bmf.hu 1: 2

Mi a.net keretrendszer? A.NET keretrendszer(.net Framework ) egy önálló programozási környezet az operációs rendszer szintje felett, amely objektumorientált, bővíthető programozási felületet számos kiegészítőszolgáltatást és a korábbiaknál több szempontból is magasabb fokú biztonságot nyújtó új absztrakciós rétegként ékelődik be a szoftveralkalmazások és az operációs rendszer közé. Ezt az absztrakciós réteget szokás virtuális gép -nek is nevezni, amely saját, nyelvi szinten objektumorientált programozási felületet megvalósító utasításkészlettel rendelkezik. A.NET keretrendszerre írt programok számára ez az utasításkészlet érhetőel, futtatásukat pedig maga a keretrendszer végzi és felügyeli (ebből következően a.net programok futtatásához szükség van a keretrendszerre is). Maga a keretrendszer elvileg bármely operációs rendszerre elkészíthető, ami a megírt programok számára a platformfüggetlenség lehetőségét kínálja fel. 2009. január 31. miklos.arpad@nik.bmf.hu 1: 3

A.NET keretrendszer vázlatos felépítése.net alapú alkalmazások.net keretrendszer ASP.NET osztálykönyvtár Windows Forms osztálykönyvtár Vezérlők Webszolgáltatások Vezérlők Grafikai eszközök Egyéb szolgáltatások ADO.NET.NET osztálykönyvtár (Framework Class Library) IO Management Messaging Net... Reflection Remoting Security Threading XML....NET futtatókörnyezet (Common Language Runtime) JIT fordító Egységes típusrendszer Memóriakezelés Verziókezelés Programkód ellenőrzése Kompatibilitási réteg Operációs rendszer 2009. január 31. miklos.arpad@nik.bmf.hu 1: 4

A köztes nyelv és a.net futtatókörnyezet A.NET alapúalkalmazások által használhatóutasításkészletet egy ún. köztes nyelv határozza meg A köztes nyelv elnevezése Intermediate Language vagy IL, emellett szokás CIL ( Common Intermediate Language ) néven is hivatkozni rá. A magasabb szintű.net nyelveken (C#, Visual Basic.NET stb.) írt programokat erre a nyelvre fordítja le a megfelelő fordítóprogram Futtatáskor a köztes nyelven létrejött köztes kódot menet közben ellenőrzi és fordítja le a keretrendszer megfelelőrésze (az ún. futtatókörnyezet ) a tényleges hardverplatformon használt, a processzoron közvetlenül futtatható gépi kódra ( natív kód ) A futtatókörnyezet neve Common Language Runtime Execution Engine, vagy röviden CLR. A keretrendszer által ellenőrzött és kézben tartott köztes kódú programot felügyelt kód -nak ( managed code ) nevezzük. A natív gépi kódra lefordított, immár ellenőrzött és biztonságos programkódot az operációs rendszer futtatja a hardveren 2009. január 31. miklos.arpad@nik.bmf.hu 1: 5

A köztes nyelv és a.net futtatókörnyezet C# fordítóprogram.net futtatókörnyezet A.NET keretrendszerre C# nyelven megírt forráskód A forráskód lefordítása után előállt köztes (IL) kód Amennyiben az elkészült programot x86 processzoron futtatjuk, az alábbi natív gépi kód készül el, majd fut le 2009. január 31. miklos.arpad@nik.bmf.hu 1: 6

Menet közbeni fordítás és optimalizálás A köztes kódúprogramok metódusait tehát natív gépi kódra kell fordítani ahhoz, hogy a processzor futtatni tudja őket Ezt a feladatot a menet közbeni fordító( JIT fordító, angolul JIT compiler vagy just-in-time compiler ) végzi el A JIT fordítóminden metódust az elsőhíváskor fordít le natív gépi kódra. A fordítás eredményét eltárolja, így ezt követően a metódus újabb hívásai esetén már nincs szükség fordításra, ilyenkor a már lefordított gépi kód fut. Ebből következően a programok indításánál és az egyes metódusok első végrehajtásánál komoly sebességveszteség lép fel, ami azonban később, a program futása közben eltűnik. Az OOP általános jellemzője a metódushívások igen nagy száma és gyakori ismétlődése, így ez a megoldás teljesítmény szempontjából is jól illeszkedik az OOP paradigmához. A menet közbeni fordítás lehetőséget ad a kód optimalizálására is. Aktuális processzormodell, illetve hardverkonfiguráció észlelése és kihasználása Egyes hardverfüggőfeltételes utasítások eredménye futáskor előre látható, így ezek akár el is távolíthatók a programból (pl. ha a processzorok száma > 1, akkor..., egyébként... ) Számos szoftveres optimalizációis végezhető(határfeltételek ellenőrzésének kihagyása, konstans kifejezések előre kiszámítása, ciklusok kifejtése, metódushívások kifejtése ) 2009. január 31. miklos.arpad@nik.bmf.hu 1: 7

Menet közbeni fordítás és optimalizálás (1) Metódus hívása első alkalommal [A] Felügyelt program (hello.exe) class Program { static void Main() { string s = "Hello, World"; System.Console.WriteLine(s); System.Console.WriteLine(s); } } System.Console... JITCompiler static void WriteLine(object) JITCompiler static void WriteLine(string) JITCompiler... JITCompiler CLR [a Program.Main() metódusban közvetlenül vagy áttételesen hivatkozott egyéb.net osztályok]...... MSCOREE.DLL Natív kód (x86) 55 8B EC 57 56 53 83 EC 30 33 C0...... 90 8D 65 F4 90 5B 5E 5F 5D C3 A JITCompiler metódus pszeudokódja: 1. A kért osztályt (itt: System.Console) tartalmazófájlból kikeresi azt a metódust, amelyet a futtatandó program éppen meghívott (itt: static void WriteLine(string)). 2. A kért osztályt tartalmazó fájlból betölti a fenti metódus IL kódját. 3. Lefoglalja a szükséges mennyiségű memóriát. 4. Az IL kódot natív kódra fordítja, és az eredményt eltárolja a 3. pontban lefoglalt memóriaterületen. 5. A kért osztályhoz tartozófenti belsőhasználatútáblázatban kicseréli a metódushoz automatikusan hozzárendelt kezdőcímet a most lefordított kód kezdőcímére. 6. Átadja a vezérlést a 3. pontban lefoglalt memóriaterületen elhelyezett natív kódnak. 2009. január 31. miklos.arpad@nik.bmf.hu 1: 8

Menet közbeni fordítás és optimalizálás (2) Metódus hívása a későbbiekben [A] Felügyelt program (hello.exe) class Program { static void Main() { string s ="Hello, World"; System.Console.WriteLine(s); System.Console.WriteLine(s); } } System.Console... JITCompiler static void WriteLine(object) JITCompiler static void WriteLine(string) WriteLine() natív kód... JITCompiler CLR [a Program.Main() metódusban közvetlenül vagy áttételesen hivatkozott egyéb.net osztályok]...... MSCOREE.DLL Natív kód (x86) 55 8B EC 57 56 53 83 EC 30 33 C0...... 90 8D 65 F4 90 5B 5E 5F 5D C3 A JITCompiler metódus pszeudokódja: 1. A kért osztályt (itt: System.Console) tartalmazófájlból kikeresi azt a metódust, amelyet a futtatandó program éppen meghívott (itt: static void WriteLine(string)). 2. A kért osztályt tartalmazó fájlból betölti a fenti metódus IL kódját. 3. Lefoglalja a szükséges mennyiségű memóriát. 4. Az IL kódot natív kódra fordítja, és az eredményt eltárolja a 3. pontban lefoglalt memóriaterületen. 5. A kért osztályhoz tartozófenti belsőhasználatútáblázatban kicseréli a metódushoz automatikusan hozzárendelt kezdőcímet a most lefordított kód kezdőcímére. 6. Átadja a vezérlést a 3. pontban lefoglalt memóriaterületen elhelyezett natív kódnak. 2009. január 31. miklos.arpad@nik.bmf.hu 1: 9

Menet közbeni fordítás és optimalizálás (3) Előfordítás Arra is van lehetőség, hogy teljes programokat vagy osztálykönyvtárakat a CLR előre lefordítson és eltároljon Ezzel a megoldással még az első futtatáskor biztosan fellépő sebességveszteség is kiküszöbölhető A.NET keretrendszer része az ngen.exe nevűprogram ( Native Image Generator ), amellyel az előfordítás elvégezhető. Az előfordított.net programok vagy osztálykönyvtárak mindig egy konkrét processzorarchitektúrához kötődnek (pl. x86, x64 vagy Itanium), tehát csak korlátozott mértékben hordozhatók. Ezért a futtatókörnyezet együtt kezeli az előfordított elemeket és a hozzájuk tartozóeredeti IL kódot, és mindig ez utóbbit (tehát az eredeti fájlokat) tekinti mérvadónak. Ha bármilyen kétség merül fel az előfordított kód frisseségét vagy az aktuális architektúrának valómegfelelését illetően, akkor a CLR úgy tekinti, mintha nem is létezne az előfordított kód. 2009. január 31. miklos.arpad@nik.bmf.hu 1: 10

A.NET egységes típusrendszere A.NET keretrendszer egységesen, a köztes nyelv szintjén rögzít bizonyos nyelvi tulajdonságokat és típusokat Ezek a tulajdonságok az IL (tehát a köztes kód) szintjén valósulnak meg, így minden olyan magasabb szintűnyelvre érvényesek, amelyhez létezik a.net keretrendszert támogató, IL kódot készítő fordítóprogram. Az egységes típusrendszer neve angolul Common Type System vagy röviden CTS A típusrendszer legfontosabb jellegzetességei: a) Objektumorientált felépítés, interfészek intenzív alkalmazása b) Nyelvfüggetlenség (a magasabb szintű nyelvek tekintetében) c) Szigorú típuskezelés d) Értéktípusok és referenciatípusok egyértelmű megkülönböztetése e) Átfogó kivételkezelés f) Attribútumok koncepciója 2009. január 31. miklos.arpad@nik.bmf.hu 1: 11

A.NET egységes típusrendszere A CTS logikai szerkezete [B] Típus Értéktípus Referenciatípus Beépített egyszerű típus Saját értéktípus (struktúra) Felsorolás Mutatótípus Önleíró referenciatípus Interfésztípus sbyte, short, int, long, byte, ushort, uint, ulong, char, float, double, decimal, bool Osztálytípus Tömb Képviselő Saját referenciatípus Dobozolt értéktípus 2009. január 31. miklos.arpad@nik.bmf.hu 1: 12

A.NET típusrendszerének jellemzői a) Objektumorientált felépítés Az egységes típusrendszer teljes egészében objektumorientált Az IL nyelv az alapvetőutasítások mellett részletesen megvalósítja az OOP legfontosabb alapelveit és bevált alapmegoldásait is: osztályok és objektumok kezelése adatrejtés (láthatósági szintek) öröklés többalakúság absztrakt tagok interfészek A köztes nyelv emellett az univerzális felhasználhatóság érdekében más speciális funkciókat is tartalmaz. Ilyenek például a tail call és a tail callvirt utasításpárok, amelyekre elsősorban a logikai programozási paradigma megvalósításaihoz lehet szükség. A Microsoft által készített.net nyelvek közül csak a (nemhivatalos) F# funkcionális nyelv használja ezeket az utasításokat. A típusrendszer alapja a System.Object ősosztály Minden típus ennek az osztálynak a közvetlen vagy közvetett leszármazottja 2009. január 31. miklos.arpad@nik.bmf.hu 1: 13

A.NET típusrendszerének jellemzői b) Nyelvfüggetlenség A típusrendszer a következő lehetőségeket kínálja a rá épülő magas szintű programozási nyelvek számára: Adott nyelven írt osztályból származtathatók osztályok más nyelven is Objektumok tartalmazhatnak más nyelven írt objektumokat is Objektumok közvetlenül hívhatják más nyelven írt objektumok metódusait is Metódusok nyelvi korlátozás nélkül adhatnak át egymásnak objektumokat A teljes típusrendszer jóval bővebb annál, mint amit egyetlen magas szintű programozási nyelv egymagában megvalósíthat A minden magas szintű.net programozási nyelv számára kötelezőfunkciók és jellemzők közös részhalmaza a közös nyelvspecifikáció, angolul Common Language Specification vagy röviden CLS. Amennyiben egy program csak CLS-kompatibilis nyelvi jellemzőket használ, garantált, hogy bármely más.net programozási nyelven írt másik program elemeivel is zökkenőmentesen együtt tud működni. Ehhez az is elegendő, ha a program nyilvánosan elérhető tagjaira teljesül a fenti korlátozás. 2009. január 31. miklos.arpad@nik.bmf.hu 1: 14

A.NET típusrendszerének jellemzői A CLS, a CTS és a nyelvek viszonya Egységes típusrendszer (CTS) Visual Basic Felügyelt C++ Közös nyelvspecifikáció (CLS) C# 2009. január 31. miklos.arpad@nik.bmf.hu 1: 15

A.NET típusrendszerének jellemzői Magas szintű.net programozási nyelvek A kiterjedt egységes típusrendszernek köszönhetően szinte bármilyen létezőprogramozási nyelv adaptálhatóa keretrendszerhez, de akár teljesen új nyelvek is definiálhatók A Microsoft által készített.net nyelvek: C#(teljesen új nyelv a C, a C++ és a Java nyomdokain) Felügyelt C++(.NET funkcionalitással bővített C++) Visual Basic.NET(.NET funkcionalitással bővített Visual Basic) J#(Java hasonmás) JScript(JavaScript hasonmás) F#(a Lisp-hez hasonló, a funkcionális és az OO paradigmát ötvöző nyelv) Más cégek és fejlesztők által készített.net nyelvadaptációk: Smalltalk, Pascal, Oberon, Delphi, Eiffel, Haskell, Lisp, Fortran, Cobol, Perl, PHP, Python, Ruby... A fenti nyelvekhez kifejezetten a.net-re épülő új nyelvváltozatot hoztak létre 2009. január 31. miklos.arpad@nik.bmf.hu 1: 16

A.NET típusrendszerének jellemzői c) Szigorú típuskezelés Minden változónak kötelezően van típusa Típus nélküli adatok nem deklarálhatók és nem használhatók A.NET programozási nyelveiben (a C++ kivételével) nincsenek mutatók Minden egyes művelet eredménye egyértelműen meghatározott típusú A futtatókörnyezet mindig képes biztonságosan azonosítani az objektumok tényleges típusát Az objektumok tényleges típusa a GetType() metódussal mindig felderíthető, ezt a metódust ugyanis minden típus örökli a System.Object osztálytól. Mivel ez az örökölt metódus az ősosztályban nemvirtuális, lehetetlen, hogy egy objektum hazudjon a saját típusát illetően. A típusok (akár automatikusan, akár a programozóáltal) csak a futtatókörnyezet ellenőrzése alatt alakíthatók át egymásba Minden objektum automatikusan kezelhetőős típusúváltozókon keresztül is. Szándékos programozói típusátalakítás(angolul casting ) is végezhető, de ha a forrás- és a céltípus nem kompatibilis, a futtatókörnyezet hibát jelez. 2009. január 31. miklos.arpad@nik.bmf.hu 2: 17

A.NET típusrendszerének jellemzői A szigorú típuskezelés következményei Bizonyos (kisebb mértékű) sebességveszteség A futtatókörnyezetnek minden műveletvégzés, illetve típusátalakítás során ellenőriznie kell az objektumok tényleges típusát. Nyelvek közötti átjárhatóság Ahhoz, hogy egy adott programozási nyelven megírt osztályból egy másik nyelven lehessen új osztályt származtatni, az új osztálynak ismernie kell az ős által használt összes adattípust. Hasonlóokból egy objektum csak akkor tudja meghívni egy más programozási nyelven írt objektum metódusait, ha ismeri az általa használt típusokat. Ehhez az is szükséges, hogy a típusok leírása szerepeljen a programokban, típuskönyvtárakban. Automatikus memóriakezelés támogatása Az objektumok által használt memóriaterület automatikus felszabadításához a futtatókörnyezetnek fel kell tudnia deríteni az egyes objektumok típusát. Folyamatokon belüli önállóalkalmazástartomány (angolul application domain ) koncepciójának támogatása 2009. január 31. miklos.arpad@nik.bmf.hu 2: 18

A.NET típusrendszerének jellemzői d) Értéktípusok és referenciatípusok Az értéktípusok és a referenciatípusok elsősorban az adatok kezelésében és a hozzáférés módjában különböznek egymástól A különféle referenciatípusokba tartozóváltozók (az értéktípusoktól eltérően) nem maguk tárolják az adatokat, csak hivatkoznak rájuk, azaz referenciát tartalmaznak a tényleges adatokra. Ez a megoldás elsősorban nagyobb adatmennyiségnél jelent előnyt, mivel így paraméterátadáskor vagy helyi változók használatánál nincs szükség a nagy mennyiségűadat többszöri másolására (elég, ha a hivatkozások másolódnak le), ami sokkal nagyobb teljesítmény elérését teszi lehetővé. A különféle értéktípusokba tartozóváltozók ezzel szemben közvetlenül tartalmazzák adataikat, így kezelésük sokkal egyszerűbb, létrehozásuk és megszüntetésük sokkal gyorsabban végrehajtható. Nagyobb mennyiségű adatot azonban nem célszerűígy kezelni, elkerülendőa programok logikája szempontjából mindenképpen szükséges másolási műveleteket. 2009. január 31. miklos.arpad@nik.bmf.hu 2: 19

1. 2. 3. 4. 5. A.NET típusrendszerének jellemzői Az érték- és a referenciatípusok viselkedése inti = 17; intj = i; Értéktípus i = 23; a[0] = 15; j = 36; i j i j i j 17 17 23 17 23 36 System.Console.WriteLine(i);// 23 System.Console.WriteLine(j);// 36 Referenciatípus int[] a = new int[2]; a (ref) null null int[] b = a; b[0] = 40; (ref) System.Console.WriteLine(a[0]); // 40 (!) System.Console.WriteLine(b[0]); // 40 2009. január 31. miklos.arpad@nik.bmf.hu 2: 20 b a b a b (ref) (ref) (ref) (ref) 15 null 40 null

A.NET típusrendszerének jellemzői Érték- és referenciatípusok összehasonlítása Érték- és s referenciatípusok szemantikai összehasonlító táblázata Adatok átadása Összetettség, méret Tárolás Jellemző Adatok kezelése Létrehozás, élettartam Öröklési jellemzők Értéktípusok Az adatok közvetlenül a változókban helyezkednek el Teljes másolással Általában egyszerűfelépítésűek, példányaik kis méretűek (1 16 bájt) A veremben ( stack ) vagy mezőként más érték-vagy referenciatípusba ágyazva Deklarációval jönnek létre, és a változók hatókörének végéig (a befoglaló blokk végéig) léteznek Ősük a System.ValueType típus, leszármazottaik nem lehetnek, interfészeket megvalósíthatnak Referenciatípusok A változók csak hivatkoznak a tényleges adatra Hivatkozás másolásával Általában összetettebb felépítésűek, példányaik nagyobb méretűek (16 bájt 2GB) A keretrendszer által automatikusan felügyelt memóriaterületen ( managed heap ) Saját konstruktorral (newoperátor) hozhatók létre, és addig léteznek, amíg van rájuk élő hivatkozás Ősük megválasztható, leszármazottaik lehetnek, interfészeket megvalósíthatnak 2009. január 31. miklos.arpad@nik.bmf.hu 2: 21

A.NET típusrendszerének jellemzői Dobozolás és kicsomagolás Az egységes öröklési hierarchia fenntartása érdekében az értéktípusok referenciatípussáalakíthatók, illetve később vissza is alakíthatók értéktípussá Az értéktípusok kezelhetők System.Object típusúváltozókon keresztül is, azaz például egy egész számot ( int típus) kezelhetünk objektumként (vagyis a System.Object típus egy példányaként) is. Ennek megvalósításához az értéktípus megfelelőpéldányát először át kell alakítani referenciatípussá(ez a művelet a dobozolás, angolul boxing ). Amikor a bedobozolt, tehát immár hivatkozáson keresztül kezelt példányt ismét értéktípusként kívánjuk felhasználni, az értékét ki kell csomagolni az őt befoglalóreferenciatípus belsejéből (ez a művelet a kicsomagolás, angolul unboxing ). A.NET programozási nyelveiben (a C++ kivételével) a dobozolás és kicsomagolás mindig automatikusan történik, tehát a programozónak ezzel nincs külön feladata. Fejlesztésnél azonban célszerűúgy átgondolni a megtervezett és használni kívánt típusokat, hogy minél kevesebb dobozolás/kicsomagolás műveletpárra legyen szükség, mert ez komoly teljesítményveszteséget okozhat, amelynek a pontos okát általában igen nehéz felderíteni. 2009. január 31. miklos.arpad@nik.bmf.hu 2: 22

A.NET típusrendszerének jellemzői Példa: dobozolás és kicsomagolás Közvetlen adattárolás megfelelő típusú változóban Dobozolás: egész számot tárolunk objektumként Kicsomagolás: objektumból egész számot veszünk ki 2009. január 31. miklos.arpad@nik.bmf.hu 2: 23

A.NET típusrendszerének jellemzői e) Átfogó kivételkezelés A programokon belüli hibakezeléshez a.net típusrendszere egy általános, közösen elérhető, objektumorientált lehetőséget ad Ez a megoldás a kivételkezelés (angolul exception handling ) Kivétel -nek a programon belül bekövetkezőnem várt eseményeket (hibák), illetve a kezelésükre szolgálóosztályokat nevezzük. A kivételkezelés alapelve a következő: minden programrészhez tartozhat egy másik, kivételkezelőnek elnevezett programrész, amely kizárólag az előbbi részben felmerülő bizonyos típusúhibák kezelésére hivatott. A kezelt hibák típusa tetszőlegesen szűkre, illetve bőségesre szabható. A hibakezelés.net keretrendszerben alkalmazott megoldása lehetővéteszi, hogy a kivételeket kezelő programrész kapjon egy példányt a megfelelő kivételosztályból, amely bővebb adatokat szolgáltat a bekövetkezett hibáról. Tartalmazhat például kiírandó üzeneteket, a felmerült hiba pontos helyét és okát stb. A.NET típusrendszere előre beépített kivételosztályok egész hierarchiáját tartalmazza, amely tetszőlegesen bővíthető újabb típusú kivételosztályokkal. 2009. január 31. miklos.arpad@nik.bmf.hu 2: 24

A.NET típusrendszerének jellemzői A.NET előre definiált kivételosztályai System.Object System.Exception IDictionaryData stringhelplink ExceptionInnerException stringmessage stringsource stringstacktrace MethodBaseTargetSite System.SystemException System.ApplicationException 2009. január 31. miklos.arpad@nik.bmf.hu 2: 25

A.NET típusrendszerének jellemzői A.NET előre definiált kivételosztályai System.SystemException System.ArgumentException System.ArithmeticException System.DivideByZeroException System.OverflowException... System.FormatException System.NotImplementedException System.NotSupportedException System.IO.IOException System.IO.FileNotFoundException System.IndexOutOfRangeException System.IO.FileLoadException System.IO.DirectoryNotFoundException... System.InvalidCastException System.StackOverflowException System.OutOfMemoryException System.ExecutionEngineException... 2.0 System.Runtime.CompilerServices. RuntimeWrappedException 2009. január 31. miklos.arpad@nik.bmf.hu 2: 26

A.NET típusrendszerének jellemzői A kivételkezelés főbb előnyei és hátrányai Előnyök Átlátható hibakezelés Hatékonyabb hibakeresés Hátrányok Teljesítményveszteség A hibakezelőprogramrészek világosan elkülöníthetők a feldolgozás logikáját megvalósító programrészektől, amelyek így az ideális eset feltételezésével írhatók meg. Hiba bekövetkezése esetén a futtatókörnyezet belülről kifeléhaladva megkeresi az elsőalkalmas hibakezelőprogramrészt. A keresés során bejárt út végigkövethető, ami a kivételek által hordozott információkkal kiegészülve jóval könnyebben felderíthetővé teszi a hibát okozó programrészeket. A kivételek bekövetkezésekor a futtatókörnyezetnek példányt kell létrehoznia egy kivételosztályból, majd inicializálnia kell, ezután pedig meg kell keresnie az elsőalkalmas hibakezelőt. Ez ugyan időbe telik, de a teljesítményveszteség általában nem súlyos, mert hibák aránylag ritkán következnek be. (Ezért nem célszerűpéldául kivételek bekövetkezését beépíteni a normál feldolgozás menetébe, vagyis szándékosan növelni a kivételek előfordulásának gyakoriságát.) 2009. január 31. miklos.arpad@nik.bmf.hu 2: 27

A.NET típusrendszerének jellemzői f) Attribútumok Az attribútumok a.net típusokhoz és tagjaikhoz kapcsolható, futási időben is lekérdezhető kiegészítő információk Az attribútumok segítségével a típusok és tagjaik tetszőleges jelzőkkel, tulajdonságokkal láthatók el, amelyek az adott típus vagy tag viselkedését leírhatják és módosíthatják. Meglétüket, illetve értéküket nemcsak fordításkor elemzi az adott.net nyelv fordítóprogramja, hanem akár futási időben is felderíthetők, és az eredmények alapján a futó, az attribútumokat éppen vizsgálómetódusok döntéseket is hozhatnak. Azt a megoldást, amikor egy program futási időben saját maga felépítését, tulajdonságait elemzi, a.net keretrendszer vonatkozásában reflexiónak (angolul reflection ) nevezzük. Ez a lehetőség tehát azt jelenti, hogy az attribútumok révén a programok viselkedése a forrásnyelv (például C#) elemeitől független, a programozó által definiálható, az egyes típusokat és tagjaikat leíróegyéb információkkal (úgynevezett metaadatokkal) befolyásolható. 2009. január 31. miklos.arpad@nik.bmf.hu 2: 28

A.NET típusrendszerének jellemzői Attribútumok használata [Serializable] [ComVisible(true)] public class SpecialAttribute: Attribute { public SpecialAttribute() { } Attribútumok [WebMethod] public TestMethod1() { System.Console.WriteLine("Webszolgáltatásból elérhető metódus vagyok."); } } [DllImport("kernel32.dll")] private static extern int GetCurrentProcessId(); 2009. január 31. miklos.arpad@nik.bmf.hu 2: 29

A.NET típusrendszerének jellemzői Példa: a FlagsAttribute attribútum használata using System; enum Szín { Színtelen = 0, Piros = 1, Zöld = 2, Kék = 4 } using System; [Flags] enum Ételjellemző { Semmilyen = 0, Finom = 1, KellemesIllatú = 2, Fogyókúrás = 4 } Ha egy attribútum nevének végződése Attribute, akkor a végződés el is hagyható class Program { static void Main() { for(inti = 0; i < 8; i++) Console.WriteLine((Szín) i); } } class Program { static void Main() { for(inti = 0; i < 8; i++) Console.WriteLine((Ételjellemző) i); } } 2009. január 31. miklos.arpad@nik.bmf.hu 2: 30

A.NET típusrendszerének jellemzői Attribútumfajták A.NET típusrendszerében háromféle attribútum létezik: Beépített fordítási idejű attribútum A beépített attribútumokat a.net fordítóprogramok ismerik és az általuk megszabott jellemzőknek megfelelően hajtják végre a fordítást. Ezek az attribútumok általában kulcsszóként jelennek meg az adott nyelvben. Ilyen attribútum például a sealed, a readonly vagy a virtual. Egyedi attribútum Az egyedi attribútumok lényegében a programozóáltal definiált osztályok, amelyek a System.Attributeosztály leszármazottai. Az egyedi attribútumok definíciójában megszabható, hogy milyen nyelvi elemekhez (osztály, interfész, metódus, paraméter stb.) kapcsolódhatnak, többször is szerepelhetnek-e egyazon nyelvi elemhez rendelve, illetve leszármazott osztályok megfelelő elemei örököljék-e az ősnél megadott attribútumot. Álegyedi attribútum Az álegyedi attribútumok olyan egyedi attribútumok, amelyek rendkívül gyakran fordulnak elő, ezért helytakarékossági és teljesítményokokból a.net típusrendszere előre felismeri és speciális, tömörített formában tárolja őket. Ilyen attribútum például a System.SerializableAttribute vagy a System.Runtime.InteropServices.DllImportAttribute. 2009. január 31. miklos.arpad@nik.bmf.hu 2: 31

Automatikus memóriakezelés Objektumorientált rendszerekben az egyes típusok (osztályok) példányosításához és használatához memóriára van szükség A.NET programozási környezetben a referenciatípusok memóriakezelésének főbb lépései a következők: 1. A típus egy példányához szükséges memória lefoglalása, amely a newobjil utasítás meghívásakor automatikusan megtörténik A C# nyelvben például a new operátor használatakor kerül a fenti utasítás a köztes kódba. 2. A lefoglalt memóriában tárolandókezdőértékek beállítása, a példány használható állapotba hozása Ezt a feladatot mindig a típus megfelelő konstruktora hajtja végre. 3. A típusból létrejött példány életciklusának főrészeként a következőlépés a hozzá tartozó tagok használata, akár többször egymás után ismételve 4. A példány használatának befejezésekor szükség lehet állapotmódosításra vagy az általa használt erőforrások korábbi állapotának visszaállítására Ezt a feladatot általában a típus destruktora hajtja végre. 5. A típusból létrehozott példány által használt memória felszabadítása A.NET automatikus memóriakezelője vállalja magára ezt a teendőt. 2009. január 31. miklos.arpad@nik.bmf.hu 3: 32

Automatikus memóriakezelés A szemétgyűjtő ( garbage collector ) A.NET memóriakezelője a lefoglalás és a felszabadítás lépéseit automatikusan elvégzi A két leggyakoribb programozói hiba a nem használt memóriaterületek felszabadításának elfelejtése, illetve a már felszabadított memória újbóli használata. Ezeket a hibákat a.net felügyelt memóriakezelése teljes mértékben kiküszöböli, és sokkal kényelmesebbé is teszi a fejlesztést. A memóriakezelőazokat a memóriaterületeket szabadítja fel, amelyeket már egyetlen osztály egyetlen példánya sem használ Ennek megállapítása egyáltalán nem triviális feladat. A memóriakezelőnek azt a részét, amely a felszabadíthatómemóriaterületek megkeresését és a felszabadítás műveletét végzi, szemétgyűjtőnek nevezzük. A szemétgyűjtő külön szálon fut, és bizonyos feltételek fennállása esetén felébred, hogy memóriát szabadítson fel. Mivel ez komoly erőforrásigényűművelet, igen bonyolult algoritmusok biztosítják, hogy erre a lehetőleggyorsabban és optimális időpontokban, csak szükség esetén kerüljön sor. A szemétgyűjtő algoritmus a System.GC osztály Collect() metódusán keresztül is meghívható. 2009. január 31. miklos.arpad@nik.bmf.hu 3: 33

Automatikus memóriakezelés Destruktorok A destruktorok feladata hagyományosan a fenti 4. lépés, tehát a típus által használt erőforrások korábbi állapotának visszaállítása A.NET típusrendszerében erre az automatikus memóriakezelés következtében ritkán van szükség, ezért a.net programozási nyelveiben csak speciális helyzetekre szokás destruktort készíteni. A destruktor valójában egy Finalize() nevűmetódus, amelyet például a C# fordítónem enged meghívni még a típus saját kódjából sem, megakadályozandó, hogy a programozók elfelejtsék kezelni a kivételeket vagy elfelejtsék meghívni az őstípus destruktorát. Mivel a szemétgyűjtőfutása a program szemszögéből nézve nem determinisztikus, nem lehet előre tudni, hogy a már nem használt objektumokon mikor fut le a típus destruktora Előfordulhat, hogy egy-egy típusnál nem célszerűvagy nem gazdaságos megvárni, amíg szükség lesz szemétgyűjtésre (például szűkös grafikai vagy adatbázis-erőforrások használata esetén). Erre az esetre megoldási lehetőségként az IDisposable nevű, egyetlen metódust (ez a Dispose() metódus) tartalmazóinterfész megvalósítása kínálkozik. 2009. január 31. miklos.arpad@nik.bmf.hu 3: 34

Automatikus memóriakezelés A felügyelt memória ( managed heap ) [A] Felügyelt memóriaterület A B C D E F G H I J K Következő objektum helye Hivatkozások Mezők Paraméterek Helyi változók CPU regiszterek Destruktorhívásra váró objektumok listája ( freachable queue ) A C G K Destruktorhívást igénylő objektumok listája ( finalization queue ) 2009. január 31. miklos.arpad@nik.bmf.hu 3: 35

Automatikus memóriakezelés A felügyelt memória ( managed heap ) [A] Felügyelt memóriaterület (egy szemétgyűjtési ciklus után) A C D F G H I K Következő objektum helye Hivatkozások Mezők Paraméterek Helyi változók CPU regiszterek G K A Destruktorhívásra váró objektumok listája ( freachable queue ) C Destruktorhívást igénylő objektumok listája ( finalization queue ) 2009. január 31. miklos.arpad@nik.bmf.hu 3: 36

Szerelvények és verziókezelés A szerelvény(angolul assembly ) a.net keretrendszer köztes kódot tartalmazó, önleíró, biztonságosan azonosíthatóés verzionálható logikai tárolási (telepítési) egysége Egy szerelvény tetszőleges számúfájlból állhat, ám a.net keretrendszer ettől függetlenül mindig egy egységként kezeli a szerelvényt. A szerelvények legfontosabb közös jellemzői: A saját belső elemeiket, illetve a bennük lévő elemek külső függőségeit leíró metaadatokkal rendelkeznek, melyek összefoglaló neve manifeszt (angolul manifest ) Tartalmazzák a bennük található típusok metaadatait (leírását) és kódját Egyértelműverzióazonosítójellemzi őket, melynek segítségével biztosan, a tévedés lehetőségének kizárásával azonosíthatók Amennyiben szükséges, a verzióadatok nyilvános kulcsú titkosítás segítségével állnak elő Lehetőség van arra, hogy egy szerelvénynek egyszerre több verziója is aktív legyen Biztonsági információkat is tartalmazhatnak Telepítésük általában egyszerű másolással megoldható 2009. január 31. miklos.arpad@nik.bmf.hu 3: 37

Szerelvények és verziókezelés A szerelvények felépítése Szerelvény.dll Szerelvény metaadatai (manifeszt) Azonosító, fájlok listája,hivatkozások, biztonsági kérelmek, közzétett típusok Osztályok, struktúrák, metódusok, mezők... Típusok metaadatai Köztes (IL) programkód A szerelvényben tárolt típusokat ténylegesen megvalósító köztes kód Képek, hangok, ikonok, szöveges és egyéb erőforrások Erőforrások 2009. január 31. miklos.arpad@nik.bmf.hu 3: 38

Szerelvények és verziókezelés Metaadatok A szerelvényeket leíró metaadatok (azaz a manifeszt) tartalma: 1. Teljes azonosító(név, verzióadatok, kultúra, nyilvános kulcs kivonata) 2. Tartalmazott fájlok listája (egy vagy több fájl) 3. Hivatkozott szerelvények azonosítóinak listája (teljes azonosítók, lásd 1.) 4. Biztonsági engedélykérelmek listája (a szerelvény elemeinek futtatásához szükséges jogosultságok felsorolása) 5. Közzétett típusok listája (a szerelvény által tartalmazott nyilvános osztályok, struktúrák és egyéb nyelvi elemek) A metaadatok pl. az MSIL Disassembler eszközzel megtekinthetők A programot tartalmazófájl neve ildasm.exe. Ez az eszköz a.net keretrendszerhez külön letölthető fejlesztőkörnyezet része. 2009. január 31. miklos.arpad@nik.bmf.hu 3: 39

Szerelvények és verziókezelés Névterek, szerelvények és típusok viszonya [B] EgyikKomponens.dll MásikKomponens.dll Főprogram.exe namespace BMF.NIK.Bemutatók.VEP.Keretrendszer class Egyik class Másik class Figyelő class Segéd namespace BMF.NIK class Program 2009. január 31. miklos.arpad@nik.bmf.hu 3: 40

Szerelvények és verziókezelés Privát és közös szerelvények A privát szerelvények az alkalmazás könyvtárában (vagy annak bármely alkönyvtárában) elhelyezett, saját használatú modulok A privát szerelvények verziókezelése nem okoz problémát, telepítésük egyszerűmásolással megoldható. Azonosításuk alapesetben nem szigorú, így bármikor frissíthetők új változatokkal, és ettől függetlenül automatikusan együttműködnek az adott alkalmazással. A közös szerelvények több különbözőalkalmazás által közösen használt és közösen elérhető helyen tárolt modulok A közös szerelvényeknek egyedi azonosítóval kell rendelkezniük. A keretrendszer egy közösen elérhetőhelyen tárolja őket, telepítésük pedig csak a megfelelő segédeszközök valamelyikével történhet (pl. gacutil.exe ). A megosztott tárolóhely neve global assembly cache vagy röviden GAC. Ez a tárolóhely biztosítja, hogy a benne tárolt közös szerelvényeknek párhuzamosan több verziója is aktív lehessen. 2009. január 31. miklos.arpad@nik.bmf.hu 3: 41

Szerelvények és verziókezelés Szerelvények biztonságos azonosítása Az alábbi azonosítók különböző szerelvényeket határoznak meg: Főprogram, Version=1.0.8123.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Főprogram, Version=1.0.8123.0, Culture="en-US", PublicKeyToken=b77a5c561934e089 Főprogram, Version=2.0.1234.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Főprogram, Version=1.0.8123.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a A fenti azonosítókat erős név -nek ( strong name ) nevezzük A nyilvános kulcsútitkosítás használata garantálja, hogy egy erős névvel ellátott szerelvény nem hamisíthatóés nem módosítható(átnevezés, verziószám önkényes belsőmódosítása stb.), így minden körülmények között egyértelműen azonosítható. Ezek a szerelvények a GAC-ban egyszerre létezhetnek A szerelvény régebbi verzióját vagy más-más nyelvű(kultúrájú) változatát igénylőprogramok mindig automatikusan a nekik megfelelőszerelvényt kapják a keretrendszertől. Ez a viselkedés konfigurációs fájlokkal egyedi vagy központi szinten egyaránt módosítható. 2009. január 31. miklos.arpad@nik.bmf.hu 3: 42

Biztonsági modell A.NET keretrendszer biztonsági modellje részletesen, finom szemcsézettséggel szabályozza a futtatott kódok erőforráshozzáférési jogosultságait A programokat a keretrendszer futtatáskor ún. tagsági feltételek alapján (ilyen például a származás helye, a szerelvényt kiadócég azonosítója stb.) besorolja egy-egy kódcsoportba (angolul code group ). A futtatott program jogosultságait az adott kódcsoportra vonatkozó jogosultságok (angolul permissions ) gyűjteménye szabja meg, melyek egy része testreszabható(például a fájlrendszer használata, a nyomtatási lehetőségek, hálózati kommunikáció, felhasználói felület elemeinek használata stb.), más részét a keretrendszer maga állapítja meg (többek között a szerelvény neve, származási helye és kiadója alapján). A jogosultságok teljes gyűjteményét a.net megfelelő biztonsági politikája (angolul security policy ) határozza meg, amely három, egymást felülbírálni képes szintet kínál (felhasználói szint, számítógép szintje, vállalati szint). Az érvényes jogosultságok gyűjteményét az egyes szinteken kiválasztott jogosultságok metszete, azaz legkisebb közös részhalmaza szabja meg. 2009. január 31. miklos.arpad@nik.bmf.hu 3: 43

Biztonsági modell Szintek, kódcsoportok és jogosultságok [B] Felhasználói szint Csoport: All_Code Jogosultság: Teljes Tagsági feltétel: Bármely kód Vállalati szint Csoport: All_Code Jogosultság: Semmi Tagsági feltétel: Bármely kód Csoport: MyComputer Jogosultság: Teljes Tagsági feltétel: Zóna Számítógép szintje Csoport: Intranet Csoport: All_Code Jogosultság: Helyi intranet Jogosultság: Semmi Tagsági feltétel: Tagsági Zónafeltétel: Bármely kód Csoport: MyComputer Csoport: https://intranet/ Csoport: Intranet Jogosultság: Teljes Jogosultság: Teljes Jogosultság: Helyi intranet Tagsági feltétel: Tagsági Zóna feltétel: Webhely Tagsági feltétel: Zóna Csoport: Internet Jogosultság: Internet Tagsági feltétel: Zóna Csoport: https://intranet/ Jogosultság: Teljes Tagsági feltétel: Webhely Csoport: BMF NIK Jogosultság: Teljes Tagsági feltétel: Kiadó 2009. január 31. miklos.arpad@nik.bmf.hu 3: 44

Biztonsági modell A biztonsági beállítások konfigurálása 2009. január 31. miklos.arpad@nik.bmf.hu 3: 45

A.NET osztálykönyvtárai A.NET osztálykönyvtárai különbözőnévterekben több ezer előre megírt osztályt tartalmaznak, amelyek széles körűbeépített funkcionalitást tesznek elérhetővé ASP.NET osztálykönyvtár Windows Forms osztálykönyvtár Vezérlők Webszolgáltatások Vezérlők Grafikai eszközök Egyéb szolgáltatások ADO.NET.NET osztálykönyvtár (Framework Class Library) IO Management Messaging Net... Reflection Remoting Security Threading XML... 2009. január 31. miklos.arpad@nik.bmf.hu 3: 46

A.NET osztálykönyvtárai Fontosabb támogatott alkalmazástípusok Windows-alapú grafikus felülettel rendelkező programok Windows 2000, XP és Vista alkalmazások Windows-alapú konzolos alkalmazások Parancssoros ablakon keresztül kommunikáló programok Komponensek és osztálykönyvtárak Tetszőleges osztályok, vezérlők és komponensek gyűjteményei Háttérben futó rendszerszolgáltatások Felhasználói felület nélküli, a géppel együtt induló háttérszolgáltatások XML webszolgáltatások Távolról, http és https protokollon keresztül hívható metódusok Webes felülettel rendelkező programok Weboldalak és portálok 2009. január 31. miklos.arpad@nik.bmf.hu 3: 47

A.NET osztálykönyvtárai Fontosabb beépített névterek System alapvető típusok minden alkalmazáshoz System.Collections gyűjtemények, vermek, sorok, listák, hasítótáblák... System.Diagnostics alkalmazások hibakeresésének támogatása System.Drawing kétdimenziós rajzolófunkciók System.IO adatfolyam-alapú fájlkezelés, könyvtárak kezelése System.Net hálózati kommunikáció System.Reflection metaadatok és típusok futási idejű vizsgálata System.Runtime.Remoting típusok és példányaik távoli elérése System.Runtime.Serialization objektumok tárolása és visszaállítása System.Security adatok és erőforrások védelme System.Threading többszálú aszinkron programozás, párhuzamos erőforráselérés System.XML XML sémák és XML formátumú adatfolyamok feldolgozása 2009. január 31. miklos.arpad@nik.bmf.hu 3: 48

Ajánlott irodalom (1) [A] Jeffrey Richter: CLR via C#, Second Edition Kiadó: Microsoft Press, 2006 ISBN: 978-0-7356-2163-3 Web: http://www.wintellect.com/ Nyelv: angol Terjedelem: 736 oldal [B] Christian Nagel, Bill Evjen, Jay Glynn, Morgan Skinner, Karli Watson, Allen Jones: Professional C# 2005 Kiadó: Wiley Publishing, Inc., 2006 ISBN: 978-0-7645-7534-1 Web: http://www.wiley.com/, http://www.wrox.com/ Nyelv: angol Terjedelem: 1540 oldal 2009. január 31. miklos.arpad@nik.bmf.hu 3: 49

Ajánlott irodalom (2) [C] Albert István, Balássy György, Dr. Charaf Hassan, Erdélyi Tibor, Horváth Ádám, Levendovszky Tihamér, Péteri Szilárd, Rajacsics Tamás: A.NET Framework és programozása Kiadó: Szak Kiadó, 2004 ISBN: 963-9131-62-8 Web: http://www.szak.hu/ Nyelv: magyar Terjedelem: 868 oldal 2009. január 31. miklos.arpad@nik.bmf.hu 3: 50