kategória | ||||||||||
|
||||||||||
|
||
A jegyzet első fejezetében röviden áttekintjük a .NET technológia megjelenésének körülményeit.
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ő 828d36i 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 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 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 - 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.
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.
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.
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.
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.
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:
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 - 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.
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.
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 ábra: A .NET FrameWork összetevői
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 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.
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.
Találat: 1592