Pap - az új technológia bevezetésével
A Microsoft .NET-keretrendszer egyik legfontosabb eleme a Microsoft .NET és platformot biztosít létrehozása, végrehajtása és teljesítése Web-szolgáltatások és alkalmazások. Ez egy szabvány-alapú, nagy teljesítményű többnyelvű környezetben, ahol elvégzésére különféle alkalmazások és szolgáltatások.
Ebben és a következő rész a cikkben fogjuk felfedezni a Microsoft .NET-keretrendszer, melynek fő komponensei - Common Language Runtime (CLR), és egy ASP.NET osztálykönyvtárat, úgy a célja mindegyiknek az építészet, alkatrészek, és ad példát azok használatáról .
Fő alkotóelemek Microsoft .NET Framework az ábrán látható (1.)
Component Common Language Runtime, részletesen tárgyalja ezt a cikket felett helyezkedik el az operációs rendszer szolgáltatások, amelyek jelenleg a Windows operációs rendszer, de a jövőben ilyen lehet gyakorlatilag bármilyen szoftver platform. A fő cél a CLR - alkalmazások teljesítményét, megfelel minden szoftverfüggőségek, a memória kezelése, a biztonság, az integráció a programozási nyelvek, stb A futási nyújt a különböző szolgáltatások, amelyek megkönnyítik a teremtés és alkalmazások, és jelentősen javítja a megbízhatóságot az utóbbi.
A fejlesztők nem lépnek kölcsönhatásba a Common Language Runtime közvetlenül - valamennyi szolgáltatását egységes osztálykönyvtárat található, amely a CLR. Ez a könyvtár több mint 1000 osztályok a különböző programozási feladatok - kölcsönhatását az operációs rendszer szolgáltatások az adatok és az XML-dokumentumokat.
Része ez az osztály könyvtár egy programozási modell létrehozására web-alapú alkalmazások, az úgynevezett ASP.NET. Ez tartalmazza a modell osztályok, alkatrészek és szolgáltatások megkönnyítik a web-szolgáltatásokat és alkalmazásokat. Jegyezzük meg, hogy létrehozhat egyéb alkalmazások mellett a Web-szolgáltatások és a web-alapú alkalmazások a Microsoft .NET Framework - konzolos alkalmazások alapján a Windows Forms alkalmazások és a Windows-alapú szolgáltatásokat. De mivel a fő cél a Microsoft .NET-keretrendszer létrehozásának támogatása a web-alapú alkalmazások, ASP.NET összetevő játszik a legnagyobb szerepet a Microsoft .NET-keretrendszer architektúra.
A legalacsonyabb szinten a mi diagram (lásd. Ábra. 1) találhatók a szolgáltatások az operációs rendszer. Windows platformon szolgáltatásokat nyújt támogatást technológiák, mint a COM +, valamint a tranzakció menedzsment, üzenetsorok stb
Ha már lefedett alapvető összetevője a Microsoft .NET-keretrendszer lépni egy részletes tanulmány a legfontosabb közülük - Common Language Runtime.
Component Common Language Runtime
Common Language Runtime biztosít a .NET-runtime alkalmazásokhoz. Között a funkciók által nyújtott ebben a környezetben kell jegyezni kivételkezelés, a biztonság, a hibakeresés támogatására változatok. Mindezek a funkciók is rendelkezésre állnak a programozási nyelv megfelelő Common Language Specification specifikációt. A Microsoft a három programozási nyelvek, hogy lehet használni a CLR, - Visual Basic .NET, Visual C # .NET és Visual C ++ menedzselt Extensions. Ezen kívül számos harmadik fél dolgozik változatai .NET programozási nyelvek, mint a Perl, Python és a COBOL.
- kimutatására osztályokba;
- osztály betöltése;
- generáló kód egy adott platform;
- biztonság.
A futási is figyeli az élettartama tárgyakat. A COM / COM + használtak erre a célra különleges számlálók (referencia counter); számlálók is használják CLR és eltávolításával tárgyakat a memóriában játszódik nevezett folyamat szemétgyűjtő (garbage collection).
Common Language Runtime is meghatározza a közös típusú rendszer által használt minden programozási nyelven. Ez például azt jelenti, hogy minden programozási nyelv kezeli egész adatok vagy lebegőpontos adatot egy közös formátumot és hosszát, és képviselete vonalak is ugyanaz az összes programozási nyelven. Miatt az egységes típusú rendszer ér egy egyszerű integrációt az alkatrészek és a kódot írt különböző programozási nyelvek. Ezzel szemben a COM-technológia alapján is egy sor standard típus, de képviselteti magát a bináris formában, a CLR lehetővé teszi, hogy integrálja a kódot (amely lehet írva a különböző programozási nyelvek) tervezési mód, de nem végrehajtási módban.
Összeállítása után menedzselt kód tartalmazza leíró metaadatok komponens maga, valamint a komponensek létrehozásához használt kód. A futási ellenőrzi, hogy az összes szükséges erőforrások rendelkezésre állnak. Metaadatok szükségtelenné információkat tárolni az összetevőket a registry. Ezért, amikor a mozgó alkatrész egy másik számítógépen már nem kell, hogy regisztrálja a komponens (kivéve a globális szerelvény - globális összeállítási, amelyet alább), és eltávolítása a komponens olyan egyszerű, mint eltávolítása az összeállítás azt tartalmazó.
Mint látható a fenti funkcionális leírása Common Language Runtime, futásidejű számos olyan előnye, hogy megkönnyíti a létrehozását, végrehajtása és megvalósítása .NET-alkalmazások.
A végrehajtható fájlokat és metaadatok
Most egy közelebbi pillantást a koncepció metaadatokat. Kezdjük azzal, hogy ez létre fog hozni egy primitív program VB.NET. Ez a konzol program megjeleníti a string „alatt futó .NET” szabványos kimenetre, majd befejezi annak végrehajtását. A kód a program a következő:
Behozatala az irányelv azt jelzi, hogy az általunk használt osztályok végrehajtani System névtér. Az egyik ilyen osztályok Console osztályban. WriteLine nevû eljárás ebben az osztályban, használjuk a soros kijelző. Mi lefordítani ezt a programot (2. ábra) A szakaszos fordító VB.NET:
Miután összeállítása kapunk egy futtatható fájl CONS.EXE, ami egy fájl SOFF / PE formátum további szakaszok információkat tartalmazó szükséges Common Language Runtime. Ellenőrizni tudjuk ezt végrehajtó DUMPBIN:
1. listában látható az fragmentumot a végrehajtható fájl lerakó (csak a fő komponensek).
Dump a futtatható fájl NET kezdődik a szokásos fejlécek az MS-DOS és COFF-fejléc, a szabvány minden Windows-alapú programok. Ezután látni fogjuk, hogy a programunk - egy 32 bites program, Windows (PE32). Az adatok rész # 1 vannak elrendezve CLR-fejléc és az adat. Megjegyzendő, hogy ez a rész attribútumokat kód futtatása Read, rámutatva, hogy a rakodó, amely tartalmaz egy kódot rész, amely végrehajtja a futás során.
Miután áttekintettük a tartalmát egy futtatható fájlt, olvassa el a azok, ahol a kód és a metaadatok kerülnek.
Segítségével ILDASM lehet menteni egy szöveges fájlt lerakó a végrehajtható. Ennek eredményeképpen kapunk egy részletesebb leírást a címet, már volt szó, valamint további információk által használt CLR. 2. kódrészlet egy részét a kiírási tartalmazó részben, amit az alábbiakban ismertetett.
Amint a lerakó pályán, ez tartalmazza az összes szükséges információt a programot. Az első utasítás a nyelven IL (.assembly) hivatkozást tartalmaz egy külső szerelvény - mscorlib. A következő állítás is hivatkozik, hogy egy külső egységet. Ez egy sor osztályok programok támogatására a Visual Basic, a Microsoft az egységben megvalósított, - Microsoft.VisualBasic. Tovább a nyilatkozat leírja a programot (az összeállítás) és a tényleges kódot. Megjegyezzük, hogy a programot egy egyedi globális azonosítót (GUID).
Felhívjuk figyelmét, hogy az osztály egy alosztálya Cons System.Object - alap osztály .NET Framework osztálykönyvtárat. Mint látható a kódot a programunk, mi nem adja meg ezt öröklés közvetlenül - ezt a tényt automatikusan hozzáadja a fordító. Az osztály két módszer. Main () metódus egy statikus metódust, amely végre a kódot a programunk. A második módszer - ctor () konstruktor automatikusan hozzáadódik a fordító. Tervező lehetővé teszi más alkalmazások létrehozásához esetekben a kérelmet.
Microsoft Intermediate Language
A fenti lerakó szándékosan kihagyott egy fontos része - a kódot az IL nyelvet. Amikor összeállítjuk a kódot, az eredmény ez a folyamat nem a kód nyelven érthető egy adott platformra, és a kódot egy köztes nyelv úgynevezett Microsoft Intermediate Language (MSIL), amely egy sor utasítást, amelyek nem függnek egy adott processzor. Az alábbiakban egy IL-kódot a módszer Main ():
Ha kihagyja a prológus, a kód 8 cellamáglya áll 3 utasításokat. Az első állítás - ldstr - betölti a húr a verembe. call utasítást kéri ezt az összeszerelést, és átadja a paraméter. Végrehajtása befejeződik ret utasítást. Annak ellenére, hogy a nyelvi IL elég egyszerű írni programok nem sok értelme, de közös megegyezés utasítások segíthet megérteni a logikáját a programot, valamint a .NET-keretrendszer mag. (További információ a következő címen szerezhető specifikációja Common Language Infrastructure, a 3. partíciót CIL Instruction Set, elérhető a Microsoft weboldalán.)
Just-In-Time Compiler
Program IL nyelv változatlan marad, amíg nem hívja fel a teljesítményt a fájlt, amelyben tárolták. Akkor, amikor a vezérlés átadódik a végrehajtási környezet, az IL-kódot alakítjuk kódot egy adott platformon. Ezt a feladatot a fordító, az úgynevezett Just-In-Time Compiler (JIT). Elméletileg csak egy részét képezik az említett fordító .NET, függően az adott platformon. Valójában azonban a platform is függ, és egy jelentős része az osztály könyvtár és számos egyéb komponensek, például a következő komponensek a .NET platform:
- mscorlib
- rendszer
- System.Design
- System.Drawing
- System.Windows.Forms
Mindazonáltal van egy igazi lehetősége .NET nem-Windows-platformon, és esetleg a közeljövőben látni fogjuk végrehajtását .NET Linuxra.
Azt is meg kell figyelni, hogy a tény, miszerint a .NET-programok közvetlenül hívja a Windows API funkciók. Ebben az esetben, a program lesz kötve, hogy egy adott platform, és átadják megváltoztatása nélkül a kód nem lesz lehetséges.
Érdekes, hogy a JIT-fordító nem teljesít összeállítása a teljes IL-kódot először a programot. Ehelyett minden módszert össze az első utalás, és így a nem használt kód nem fordul le. A lefordított kód van tárolva a memóriában, és az azt követő hívások elvégzése a program már lefordított kód. A Microsoft egy speciális fordító CLR Native Image Generator (NGEN), amely összeállítja a teljes IL-kódot, és tárolja azt a lemezen (4. ábra):
Ábra. Az 5. ábra a magyarázata a ciklus futó alkalmazások .NET:
Amikor a történet a Common Language Runtime, már többször használta a „szerelvény» (összeszerelés). Szerelés gyűjteménye egy vagy több fájlt. Ezek a fájlok gyakran tartalmaznak kódot, de lehetnek grafikák és képek, és az erőforrások, és más bináris adatokat a kódhoz a szerelvény. Ilyen részegységek az úgynevezett statikus szerelvények, mivel a merevlemezre kerülnek. Dinamikus szerelvények jönnek létre a végrehajtása során a program és a lemez általában nem múlnak el.
Ábra. A 6. ábra a szerelvény, amely egy vagy több fájl:
Amint a rajzon, az nyilvánvaló az alábbi információkat tartalmazza a szerelvény:
- Íme a szerelvény;
- változata;
- fájlokat ebben a szerelvény;
- szerelvény által használt ez a szerelvény.
Amellett, hogy a standard mezők az nyilvánvaló járulékos mezők adott programozók lehet jelen.
Segítségével részegységek és verziószámok megoldani a problémát a kompatibilitást a különböző változatai a DLL, az úgynevezett DLL Hell. Most .NET-szerelvény programot keres a helyi könyvtárban, amely lehetővé teszi, hogy egyszerre futtatni több verzió ugyanazon szerelvény minden gond nélkül. (További információ a következő címen szerezhető elolvassa a Common Language Infrastructure leírás, Partíció 2 metaadatok meghatározása és szemantika, amely elérhető a Microsoft weboldalán.)
Global Assembly Cache
A következő részben nézzük meg az utolsó eleme a Common Language Runtime - közös rendszerrel. (További információ a Common Language Runtime áll rendelkezésre Common Language Infrastructure leírás, Partíció 1 Concepts and Architecture Microsoft weboldalán.)