dotnet by ashrafp

VIEWS: 18 PAGES: 9

									1. A .NET                                                                             1

1.1 TÖRTÉNETI ÁTTEKINTÉS                                                              1
1.2 MI IS AZ A .NET?                                                                  4
1.3 A .NET, MINT ÚJ PLATFORM JELLEGZETESSÉGEI , ERŐSSÉGEI                             4
1.4 VÁLTOZÁSOK A FEJLESZTÉSI TEVÉKENYSÉGBEN                                           6
1.4.1 A .NET FEJLESZTŐKÖRNYEZET LÉNYEGE                                               7
1.4.2 A COMMON LANGUAGE RUNTIME                                                       8
1.4.3 A SZAKTERÜLETI FEJLESZTÉS VÁLTOZÁSAI                                            9

1. A .NET

A jegyzet első fejezetében röviden áttekintjük a .NET technológia megjelenésének
körülményeit.

1.1 Történeti áttekintés

A számítógép és a programozás az elmúlt évtizedekben egymástól elválaszthatatlan
fogalmakká váltak. Ma már, ha számítógépekről beszélünk, szinte természetszerűen
gondolunk a programokra is, hiszen a gépet ezek segítségével használhatjuk saját
céljaink elérésére. A számítástechnika látványos fejlődését elsősorban a hardver-
technológia fejlődésén vesszük észre: a számítógépek robbanásszerű elterjedése az
élet minden területén, a felhasználási lehetőségek, teljesítmények növekedése –
párhuzamosan a méretek (és árak!) csökkenésével – leginkább a “vason” vehető észre.
A technikai fejlődést természetesen a felhasználói igények növekedése kíséri; a
számítógép képességeinek minél jobb kihasználásához egyre több, jobb (és relatíve)
olcsóbb programokra van szükség. A programok és ezen belül a programozási
technológia is hasonló fejlődésen ment keresztül, mint amit a hardver területén láttunk:
ma már egészen másképp és más eszközökkel készítjük az alkalmazásokat, mint
korábban.
A számítástechnika fejlődésének – általában jól ismert – “diadalútja” azonban nem
mentes a kátyúktól; a terület világméretű, s így világméretű a munka és a verseny is.
Számítógépes termékek tízezrei láttak és látnak napvilágot nap mint nap; felhasználói
programok, rendszerprogramok, operációs rendszerek – beleértve ebbe az Internet
szülte igényeket és az ehhez kapcsolódó megoldásokat is. A számítógépek és a
programok között eligazodni ma már szinte külön tudomány. Egyszóval: a 90-es évek
közepére a számítástechnika is elérte a más területeken sokszor megtapasztalt
állapotot – a káoszt. Ezt a káoszt nemcsak az eszközök (hardver és szoftver)
mérhetetlen mennyisége és fajtája, hanem elsősorban inkompatibilitásuk okozta/okozza.
Az inkompatibilitás monopolhelyzetben előnyt jelent a versenytársakkal szemben;
ugyanakkor problémákat is okoz, amit meg kell oldani - a megoldásnak pedig költségei
vannak. Fenntartani vagy megszüntetni? Úgy tűnik, a mérleg billeg, de még nem billen
egyik oldalra sem. Megszüntetéséhez ma még elképzelhetetlen szintű együttműködésre



                                           1
lenne szükség az egymástól független, nagy gyártó/fejlesztő cégek között.
Fenntartásához viszont nem kell sokat tenni.
A platformok sokfélesége a programok készítésénél is sok nehézséget okoz. Amellett,
hogy nagyon sokféle, egymással természetesen nem kompatibilis programozási
nyelvvel, adatbáziskezelővel, kommunikácós rendszerrel, stb. kell dolgozni, a különböző
platformokra fordított alkalmazások nem ugyanúgy működnek – tehát esetleg más-más
verziókat is kell előállítani.
Mint tudjuk, a Microsoft egyeduralkodó kívánt (kíván?) lenni az operációs rendszerek
piacán, s ez bár eddig nem sikerült, de a torta igen nagy szeletét megszerezte. Az
elmúlt 15 évben a fejlesztői piacon is komoly részesedést ért el (Visual Studio, Access,
OLE DB, ADO, COM technológia, stb). A versenytársak természetesen ennek
igyekeztek gátat vetni, és ennek egyik eszköze lehet a program-fejlesztő eszközök terén
uralkodó káosz megszüntetése: “a” programozási nyelv és eszköz megalkotása. Az
ezzel készített programok minden géptípuson, minden operációs rendszer alatt
egységesen működnek. Ha a programokat nem kell egy adott operációs rendszer alá
készíteni, a felhasználóknak sem kell ahhoz az operációs rendszerhez ragaszkodniuk.
Az első komoly ilyen jellegű támadás a Sun Microsystems-től indult, a fegyver neve
pedig Java volt.
A Java alapkoncepció egyszerű: egy adott programozási nyelven megírt program, amely
minden platformon (változtatás nélkül!) futtatható. A Java gyorsan sikert aratott, és
nemcsak több-platformossága miatt: a nyelv tervezői következetesen érvényesítették
benne az objektumorientált elveket; a Java olyan OO képességekkel rendelkezik,
amelyek a Microsoft COM technológiájából hiányoztak: statikus metódusok, metódusok
felülírása (overloading), parametrikus konstruktorok, öröklés és strukturált
kivételkezelés. A Java egy gazdag osztálykönyvtárat bocsát a fejlesztő rendelkezésére,
amit objektumorientált API rutinokkal lehet elérni. A Java alkalmazások platform-
független alakra lesznek lefordítva és futásukról platform-függő virtuális gép
gondoskodik.
Ez lépéskényszerbe hozta a Microsoft-ot; 1997-ben a PDC-n (Programmers Developers
Conference) a Microsoft elsősorban a COM és COM+ technológia jövőjével foglalkozott
és megfogalmazta az új követelményeket: nyelvsemlegesség, alaptípusok,
objektumorientáltság. Ez a döntés végeredménybe egy új technológiához vezetett, és
egyúttal a COM technológia végét is jelentette. Ez utóbbi amúgy sem felelt már meg a
modern, többrétegű, webalapú alkalmazások kihívásának. A Microsoft tanult a Java
sikeréből és megértette, hogy eljött az idő, amikor nem csak megjelenésükben, de
fejlesztésükben is a win- és a webalkalmazások közti különbséget meg kell szüntetni,
vagy legalábbis a minimálisra csökkenteni.
Az ezredfordulóra megszületett az új technológia, a .NET, és megjelent egy új, .NET
alapú programozási nyelv, a C#.
Kiegészítésként mellékeljük az alábbi, 2000 szeptember 1.-én kelt cikket, Wylie Wong
és Mike Ricciuti tollából:
      A Microsoft ma bejelentette egy új, Java-típusú programozási nyelv
      szabványosítási eljárását. Az új nyelvtől azt remélik, hogy a Java alternatívája lesz.
      Mint korábban már jeleztük, a Microsoft az új, C#-nak nevezett programozási
      nyelvet az ECMA (European Computer Manufacturers Association) által ipari
      szabvánnyá kívánja tenni. A CNET News.com szerint a C# nyelvvel a Microsoft



                                             2
olyan eszközt kíván a programozók rendelkezésére bocsátani, amely könnyebbé
és gyorsabbá teszi számukra a WEB-szolgáltatások elérését illetve készítését.
Elemzők szerint a C# a Java-éhoz hasonló jellemzőkkel rendelkezik. A Java (Sun,
IBM, Oracle) olyan programozási nyelv, mellyel platform-független alkalmazások
készíthetők. Ez keresztezi a Microsoft eddigi koncepcióját, mely szerint a
programozók készítsenek csak Windows-programokat.
A Microsoft azt reméli, hogy a C# nyelv használata világszerte elterjed, s ez arra
késztet más gyártókat, hogy olyan C#-változatokat állítsanak elő, amelyek más
platformokon is működnek. ”Együttműködünk az ECMA-val, tehát a C# az
eszközök és platformok széles körén elérhető lesz,” mondta Tony Goodhew, a
Microsoft Visual C++ menedzsere. ”Úgy gondoljuk, hogy a C# lesz az az
általánosan használt nyelv, amellyel a fejlesztők a jövőben XML, Web-szolgáltatás
alapú alkalmazásaikat készíteni fogják. Nincs más nyelv, amely erre képes lenne.”
A Sun a Java-val hasonló célokat tűzött maga elé, de félve attól, hogy elveszti a
Java feletti ellenőrzést, elállt ettől. Attól tartottak, hogy a Java általános
szabvánnyá tétele más cégeket erős pozícióba emelhetne a nyelv fejlesztése
terén.
A Sun sokat bírálta a Microsoft-ot a fejlesztési információk eltitkolásáért. Most a
Microsoft startégiát váltott:”A C# szabványosításával nem akarják a Sun-t
idegesíteni, de lehet ilyen hatása,” mondta egy elemző, Darryl Plummer. “A Sun-
nal ellentétben, tisztességesen kívánunk játszani – ezért szabványosítjuk a C#-ot”.
Habár sokban hasonlít a Java-ra, Microsoft-vezetők szerint a C# nem a Java-ra
adott válasz. De Plummer szerint lehetetlen nem összemérni a két nyelvet. “A
Microsoft nem akarja a két nyelvet versenyeztetni, de ez elkerülhetetlen,” mondta.
A C# a CLR (Common Language Runtime, futtató-környezet) technológiát
használja, amely egy általános motor: lehetővé teszi azt, hogy egy programot
különböző nyelveken írt modulokból állítsanak össze. A Microsoft erről nem
nyilatkozott.
Plummer szerint a C# a C++ és Visual Basic programozók számára nyújt
alternatívát. ”Lelassíthatja a fejlesztők Java-ra való áttérését, de hatása magára a
Java-ra minimális lesz,” mondta. “A legtöbb Java fejlesztő nem használ Microsoft
fejlesztő-eszközöket.”
Bár a Microsoft még nem hozta nyilvánosságra a C# összes jellegzetességét, azt
ígérik, hogy az új nyelv megtartja a C++ hatékonyságát, de sokkal könnyebb lesz
használni. A C# többplatformos - mint a Java, - de más alapokon nyugszik. A Java
alapelve: egyszer megírjuk, mindenhol futtajuk. A C# programok Windows alatt
futnak, de kommunikálhatnak bármely más futó programmal, XML és SOAP
segítségével.
“A C# nyelv több problémára próbál választ adni,” mondta Bill Dunlap, a Microsoft
termék-menedzsere. “A Java ugyanazt a kódot kívánja más-más platformokon
futtatni. Nekünk nem ez a célunk. Mi integrálni kívánjuk a különböző rendszereket,
egységesítjük a jelenlegi kódokat.”
A Sun nem reagált a kijelentésre.
Komplikálja a két cég közti harcot a hosszú ideje tartó bírósági per a Javat illetően.
A Sun 1997-ben beperelte a Microsoft-ot azon a címen, hogy olyan technológiát
épít Java alapú termékeibe, hogy azok csak Windows platformon működjenek –



                                       3
    akadályozva ezzel a Java alapvető elvének érvényesülését. A per miatt a Microsoft
    nem tudja Java alapú termékeit frissíteni.
    A C# a C és C++ nyelvek keveréke, de túlmutat azokon: olyan szolgáltatásokat is
    tartalmaz, amelyek a Java-ra jellemzők (biztonság, automatikus szemétgyűjtés). A
    C# év végétől része lesz a Microsoft Visual Studiónak.
    A C# bejelentésének lehet még egy következménye: Vajon a Microsoft folytatja-e
    saját Java fejlesztő eszközének, a Visual J++-nak a forgamazását? A Visual J++
    fejlesztése (a per miatt) hónapok óta áll, nem is szerepel a Visual Studio
    eszközlistáján.

1.2 Mi is az a .NET?

A .NET (olvasata: „dot net”) a Microsoft új technológiája, mely lehetővé teszi
alkalmazások, programok és szolgáltatások nyelv-, rendszer- és platformsemleges
felépítését. Nyelvsemlegesség alatt nem csak azt értjük, hogy a kitűzött feladat
megoldását bármelyik .NET-nyelvvel elérhetjük, hanem azt is, hogy különböző
nyelveken kódolt modulokat zökkenőmentesen összekapcsolhatunk egy .NET
alkalmazáson belül. A .NET rendszersemlegessége biztosítja a .NET alkalmazások
futását minden olyan rendszer alatt, mely rendelkezik a .NET futási környezetével (ez
pedig elvileg minden rendszer részére elkészíthető). A platformsemlegesség alatt pedig
azt értjük, hogy például egy Web alkalmazás esetében mindegy, hogy egy PC-
böngészőben, egy mobil készüléken vagy egy PDA-n hagyjuk futni, az eredmény
lényegében ugyanaz.
C# alkalmazásokat nem csak Windows környezetben futtathatunk. Már létezik a
Windows-tól független .NET megvalósítás is: a Mono egy nyílt forráskódú platform,
amely rendelkezik C# fordítóval és CLR-rel. Működik Linux, UNIX, Mac OS, és persze
Windows alatt is.
Tehát mint látjuk, a .NET célja részben megegyezik a Java-éval – de egy bizonyos
szempontból el is tér attól. A Java esetében ugyanis egy adott programozási nyelven
készült program fut különböző platformokon; a .NET ennél tágabb lehetőséget biztosít: a
program megírható bármely, a .NET lehetőségeit használó programozási nyelven, sőt
ugyanazon program komponensei is megírhatók más-más nyelven, majd az alkalmazás
összeépíthető. Az alapmegoldás ezután megint hasonló a Java-éhoz: platformfüggő
futtató-rendszerek működtetik a platform-független alkalmazást.

1.3 A .Net, mint új platform jellegzetességei , erősségei

Az alábbiakban vázlatszerűen felsoroljuk a .NET rendszer fő jellemzőit.
       A RENDSZER ÖSSZETEVŐI: A .NET több részből áll. Ide tartozik a .NET
          Framework munkakeret sok-sok osztálykönyvtárral, melyek a .NET-nyelvek
          rendelkezésére állnak (CLR: Common Language Runtime - futtató, .NET
          FrameWork Classes, ASP.NET és ADO.NET – az ASP és az ADO utódai,
          Windows Forms – desktop windows alkalmazások fejlesztéséhez); fordítók
          (compilers) és más eszközök, mint a disassembler. Ide soroljuk továbbá az
          ADO.NET-et, az ADO, valamit az ASP.NET-et, az ASP utódját. Ide
          számíthatjuk a .NET legelső alkalmazását is, a Visual Studio .NET-et.


                                          4
   PROGRAMOZÁS: A .NET alapú programozás nem követeli meg a Visual
    Studio .NET telepítését a gépünkre. Csak a .NET Framework SDK-ra van
    szükségünk, amit viszont ingyen letölthetünk (lásd Internetes helyek című
    fejezet) - pillanatnyilag az 1.0 és az 1.1 verzió között választhatunk. A .NET
    Framework SDK a dokumentáció mellett a parancssori fordítókat is
    tartalmazza, így elvileg akár a Jegyzettömbbel is készíthetünk .NET
    alkalmazásokat. Természetesen a Visual Studio .NET (vagy egy hasonló,
    akár ingyenes) fejlesztőrendszer használata sokkal kényelmesebb.
   PROGRAMOZÁSI NYELVEK:A .NET elvileg független a programozási
    nyelvtől. Eredetileg Visual Basic .NET, Visual C++ és az új C# ( c sharp)
    nyelveket támogatta. Most több mint tíz nyelven lehet .NET programokat írni
    és a .NET-re szabott nyelvek száma állandóan nő (pl. Delphi 8 for .NET).
   OSZTÁLYOK: A .NET osztályok a Win32 API osztályokat helyettesítik,
    pillanatnyilag mintegy 95%-ban. A .NET a COM és részben a COM+
    komponenseket is helyettesíti, ugyanakkor egy magas interkompatibilitás arról
    gondoskodik, hogy a COM/COM+ komponensek beágyazhatók legyenek a
    .NET alkalmazásokba és fordítva, a COM/COM+ alkalmazások .NET
    modulokat használhassanak. Az osztályok nemcsak a rendszerspecifikus
    műveletekre, de az adatbázisok, XML-állományok kezelésére és a hálózat
    programozására is használhatók.
   EGYSÉGES ADATTÍPUSOK: A .NET a Common Type System (CTS)
    segítségével egységes adattípuskészletet határoz meg, melyet mindegyik
    .NET-alapú programnyelv köteles használni. A CTS adattípusokon kívül a
    .NET-nyelvek sajátos adattípusokat is alkalmazhatnak, ezek használata
    viszont szigorúan szabályozott.
   AUTOMATIKUS SZEMÉTGYŰJTÉS: A .NET komponenseket a felhasználói
    program nem távolítja el a memóriából (bár megteheti), viszont a futtató-
    környezet egy általános szemétgyűjtővel (Garbage Collector) rendelkezik,
    mely szabályos időközökben gondoskodik a már nem szükséges erőforrások
    felszabadításáról.
   FORDÍTÁS: A .NET fordítók egy köztes kódot hoznak létre, az Intermediate
    Language-et (IL). Ezt nevezzük kezelt (managed) kódnak: a lefordított file
    tartalmaz minden olyan adatot, amelyre a futtató környezetnek (Common
    Language Runtime, CLR) szüksége van. Közvetlenül az alkalmazás
    végrehajtása előtt a köztes kód gépi kódra lesz átalakítva, ezért a .NET
    alkalmazások platformfüggetlenek.
   VÉGREHAJTÁS: A .NET támogatja az alkalmazások és komponensek
    egyidejű végrehajtását. Ez azt jelenti, hogy ugyanannak a komponensnek
    vagy alkalmazásnak különböző verziói ugyanabban az időben, és ha
    szükséges, ugyanabban a folyamatban (process) hajthatók végre anélkül,
    hogy ez konfliktushoz vezetne. Ezzel megkezdődött a DLL-szisztéma
    felszámolása is. A .NET, programozási nyelvtől függetlenül, egy és ugyanazt
    a futtató-környezetet használja.
   VIRTUÁLIS GÉP: A .NET „szíve” egy virtuális gép, mely a kezelt (managed)
    kódot végrehajtja.



                                     5
         PROGRAMOK TELEPÍTÉSE/ELTÁVOLÍTÁSA: A .NET alkalmazások és
          komponensek önmeghatározók. Az alkalmazások és komponensek mindig
          magukkal hordják a metaadatokat, melyeket a futtató-környezet mindig
          lekérdezhet. Éppen ezért egy .NET alkalmazást nem kell regisztrálni.
          Elegendő, ha az alkalmazás futásához szükséges adatokat és állományokat
          egy mappába másoljuk és így adjuk át annak a gépnek, amelyikre az
          alkalmazást telepíteni kívánjuk. A „telepítés” ismét olyan egyszerű, mint a
          DOS-korszakban: másolás és törlés. Mivel az alkalmazás „tudja”, milyen
          adatokra van szüksége, és a futáskörnyezet biztosítja ezeket az adatokat,
          nem állhatnak elő konfliktusok, ha ugyanaz az állomány több verzióban is
          rendelkezésre áll.

Korábban említettük, hogy a .NET programok fejlesztéséhez elvileg nincs szükség
speciális fejlesztőeszközökre. Ugyanakkor az ilyen eszközök használata igen
megkönnyíti a programok írását, mivel sok munkát levesz a programozó válláról. Jelen
jegyzetben a C# nyelvvel foglalkozunk – a következő fejezetben majd áttekintünk három
olyan eszközt, melyek segítségével C# alkalmazások készíthetők.

1.4 Változások a fejlesztési tevékenységben

Amióta a gépi kódnál magasabb szintű programozási nyelveket használunk
forrásprogramjaink elkészítéséhez, a programok elkészítése és a számítógép általi
végrehajtásuk közé be kell iktatni egy köztes műveletet: a forrásprogram gépi kódra való
fordítását. Az alapvető klasszikus megoldások az interpreter és a compiler típusú
futtató/fordító programok voltak. Mindkét megoldásnak megvoltak, illetve megvannak az
előnyei és a hátrányai:
         Interpreter alkalmazása esetén az interpreter programnak ott kellett lennie az
           illető számítógépen; a futás közbeni fordítás általában lassabb működést
           eredményezett; a program viszont hordozható a különböző platformok között,
           hiszen ugyanazt a forrásprogramot különböző interpreterek különböző
           operációs rendszereken futtathatják (klasszikus példája ennek a Java nyelv).
         Compiler esetén a fordítás és futás időben elválik egymástól, a számítógépen
           a korábban gépi kódra lefordított programokat (exe) futtatjuk; ezek gyorsak,
           könnyen telepíthetők és hordozhatók – de csak azon a platformon
           használhatók, amelyre a fordítás készült.

Azt is észre kell vennünk, hogy a számítástechnika, a számítógépek globális
alkalmazása a felhasználás oldaláról igen sokféle igénnyel, követelménnyel lép fel az
alkalmazások fejlesztőivel szemben. Ma egy fejlesztő, amikor egy alkalmazást készít,
két nagy követelmény-csomaggal néz szembe:
    1. Megoldás-készítési készség: az adott szakterületi probléma lehető legteljesebb,
       ugyanakkor leggazdaságosabb megoldása, és
    2. Programozás-technikai felkészültség: a számítógép-program tényleges
       elkészítésének képessége (ráadásul a mai követelményeknek megfelelően).

A programozás-technikai oldalt tekintve már évek óta tanúi vagyunk a változásnak:
megjelentek (és nagy népszerűségnek örvendenek) az integrált fejlesztő eszközök -


                                           6
Visual Basic, Delphi, Java környezetek, Visual C++, Visual Studio, stb. Ezek az
eszközök lehetővé tették, hogy (általában) rendszerprogramozói ismeretek nélkül is
képesek legyünk programokat készíteni olyan bonyolult rendszerekhez is, mint például a
Windows. Ezekkel az eszközökkel olyan programokat készítünk, melyek kódjának
nagyobb részét nemcsak, hogy nem mi írtuk, hanem még azt sem tudjuk, hogy ez a
rész hogyan működik! Pontosabban: nem kell tudnunk.
A fejlesztői világ polarizálódása felgyorsult és jól láthatóvá vált az irány: vannak olyanok,
akik mélyben, a háttérben dolgoznak, kutatnak és a programozás-technikai
megoldásokat (pl. integrált fejlesztő eszközök, fordítóprogramok, stb) szállítják, és
vannak, akik ezek felhasználásával a felhasználói területek számára megoldásokat,
végfelhasználói alkalmazásokat készítenek. Ez utóbbiaknak egyre általánosabb,
könnyebben használható, a mély technikai részleteket elrejtő, az emberi gondolkodást
jobban kiszolgáló eszközökre van szükségük: sem idejük, sem felkészültségük nincs
mély programozás-technológiai kérdéseken rágódni, platformok különbözőségeivel
vesződni – épp elég nekik a szakterületi probléma, melynek megoldása a maga
nemében szintén igen bonyolult szokott lenni.
A .NET környezet – egyéb célok mellett – a fentiekben felsorolt előnyök-hátrányok közül
megpróbálja kiküszöbölni a hátrányokat, és egyesíteni az előnyöket, s közben igyekszik
választ (vagy megoldási alapot) adni a “fejlesztés fejlődése” miatt felmerült kihívásokra
is.

1.4.1 A .NET fejlesztőkörnyezet lényege

A .NET rendszert azzal a céllal hozták létre, hogy támogassa az alkalmazások
operációs rendszertől független fejlesztését. Ez a cél egyben egy újabb nagy
“szabványosítást”, egységesítést indukál: mivel a .NET környezetben minden program
ugyanazokat az eszközöket használja, oly mindegy, hogy az algoritmusokat,
erőforrásigényléseket milyen nyelven fogalmazták meg; sőt, lehet, hogy ez oda vezet:
minek használjunk többféle programozási nyelvet, mikor mindegyik ugyanoda vezet?
A .NET egy menedzselt (felügyelt) futtatási környezet nyújt számunkra, melyben – úgy
tűnik – leegyszerűsödik a fejlesztés, el fognak tűnni a programozási nyelvek
különbözőségei. A középpontban pedig a menedzselt (felügyelt) kód áll, melyet a közös
futtató környezet – CLR (Common Language Runtime) működtet.
A program (technikai) elkészítésének kulcsa az adott nyelvhez tartozó fordító, amely a
forrásprogramot köztes kódra (MSIL, Microsoft Intermediate Language) fordítja. Ezt az
állományt a JIT (Just In Time) platformfüggő fordítók a futtatás során fordítják le az adott
operációs rendszernek megfelelő kódra.
Ezzel lehetővé válik az operációs rendszertől független fordítás (a CLR, a Common
Language Runtime minden platformra egységes), és megvalósulhat a különböző
programnyelvek közti együttműködés és átjárhatóság. A .NET környezet a CLS
(Common Language Specification) által meghatározott típusokkal dolgozik, és szigorú
típusellenőrzést végez a CTS (Common Type System) alapján. Tehát bármilyen nyelven
is írtuk meg programunkat, a köztes kód már azonos.




                                             7
A köztes kódot a CLR futtatja, felügyeli. Ennek keretében:
       - fordítja/futtatja a kódot,
       - gondoskodik az automatikus szemétgyűjtésről,
       - egységes kivételkezelést biztosít,
       - folyamatos biztonsági ellenőrzést végez.

A .NET keretrendszer összetevői:




1.1 ábra: A .NET FrameWork összetevői

1.4.2 A Common Language Runtime

A felügyelt kódot a Common Language Runtime (CLR) környezet futtatja. Minden CLR-
rel kompatibilis fejlesztőeszköz a forráskódot a szabványos Intermediate Language (IL)
nyelvre fordítja le, így az egyes programozási nyelvek különbözőségei a futás idejére
eltűnnek. Az IL kód (köztes kód) futtatásához szükség van a JIT-re (Just In Time
compiler). A JIT a köztes kódból az adott rendszeren futtatható kódot készít (nem
interpreter!). A különböző platformokra különböző JIT fordítók készíthetők.

A CLR összetétele:
Com Marshaller
A Com Marshaller teszi lehetővé, hogy a korábbi COM komponensek továbbra is
használhatók legyenek a .NET alkalmazásokban.

Kivételkezelő
A programok futásuk alatt sokszor találkoznak váratlan helyzetekkel, illetve hibákkal.
Ezeket az eseteket le kell tudni kezelni, valamilyen speciális vagy általános kód
futtatásával reagálni kell rájuk. A különböző programozási nyelvek különböző
megoldásokat alkalmaznak, a .NET környezet viszont egységes megoldást kínál. Az
alapmegoldás szerint a kivételeket kivételkezelő programblokkokban kell elkapni; a


                                           8
kivételek felmerülésekor pedig objektumok keletkeznek, melyek a kivétellel kapcsolatos
információkat hordozzák – ezeket a kivétel-feldolgozó blokkokban használhatjuk fel. A
különböző típusú kivételekhez, hibákhoz különböző típusú (osztályú) objektumok
tartoznak – a kivételosztályok az Exception osztályból leszármazva egész hierarchiát
alkotnak.

Biztonság-kezelő
A kód futását felügyeli, ellenőrzi, hogy egy adott kód milyen jogosultságokkal
rendelkezik az adott gépen. Az egyes kódokhoz attribútumok kapcsolódnak, ezekhez
biztonsági megszorításokat lehet rendelni: ilyen például az eredet-nyilvántartás
(megadható, hogy adott forrásból származó (pl. webről letöltött) programok milyen
műveleteket végezhetnek és milyeneket nem a gépen.

Típusellenőrző
A típusellenőrző futási idejű típusellenőrzést biztosít. A típusellenőrző futás közben, a
programban levő metaadatok alapján figyeli az egyes műveletek típushelyességét
(minden művelet csak meghatározott, hozzárendelt adattípusokkal végezhető).

Szálkezelő
Biztosítja a szálkezelést (thread) illetve a szinkronizálást. Támogatja a többszálú
futtatást, és felügyeli ennek helyes végrehajtását.

Szemétgyűjtő
Biztosítja a nem használt objektumok automatikus megszüntetését.

Osztálykönyvtár
A .NET alapú fejlesztést jelenleg mintegy 4500, névterekbe rendezett, előre gyártott
osztály támogatja. Ezeket az osztályokat minden .NET nyelvben el lehet érni és fel lehet
használni.

1.4.3 A szakterületi fejlesztés változásai

A .NET megoldás önmagában csak az egyik oldalról közelít a fejlesztés korábban
említett kettősségéhez. A végfelhasználók számára készített rendszerek fejlesztésének
terén nagy változások készülődnek; az új, modell-vezérelt fejlesztés a hagyományos
forrásprogram írás helyett a valamilyen szabványos modellező nyelven elkészített
megoldásra koncentrál, amely szöveges és grafikus formában kerül rögzítésre. Az így
elkészített modellek fordítóprogramjai állítják elő a futtatható programot: a tendencia pl.
a Borland új, .NET környezetre készült Delphi és C#Builder Architect fejlesztő-
eszközeiben is megtapasztalható már.




                                            9

								
To top