Architektura Microsoft .NET Framework – 1. díl
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Architektura Microsoft .NET Framework – 1. dílArchitektura Microsoft .NET Framework – 1. díl

 

Architektura Microsoft .NET Framework – 1. díl

Google       Google       3. 5. 2006       20 443×

  • Kompilace zdrojového kódu do řízených modulů
  • Slučování řízených modulů do Assembly

Platforma .NET Framework přináší mnoho nových konceptů, technologií a pojmů. Cílem tohoto mini-seriálu je podat přehled o architektuře .NET Framework, seznámit vás s novými technologiemi.


Kompilace zdrojového kódu do řízených modulů

Předpokládám, že jste se rozhodli vyvíjet pro tuto platformu. První věcí je se rozhodnout, jaký typ aplikace nebo komponenty chcete vyvíjet. Předpokládejme, že v tomto máte jasno, aplikace je navržená, dokumentace napsaná. Nezbývá nic jiného než začít vyvíjet.

Dalším krokem je vybrat si programovací jazyk, což je samo o sobě složité rozhodnutí, neboť každý jazyk má rozdílné schopnosti. Když se např. rozhodnete pro řízený C++ , získáte velice dobrý přístup k nízkoúrovňovým funkcím. Můžete se starat o paměť přesně jak chcete, vytvářet vlákna jednoduše, když je potřebujete atd. Na druhou stranu, Visual Basic 6 vám poskytne možnost pohodlného vytváření GUI a jednoduchý přístup ke COM objektům či databázím.

Jestliže používáte .NET Framework, CLR (Common Language Runtime) vám poskytne velký výběr programovacích jazyků. Nezáleží na tom, v jakém jazyce tedy pracujete, všechny mají přístup ke všem klíčovým vlastnostem CLR. Např. CLR používá výjimky k detekování chybných stavů, takže každý jazyk má k těmto výjimkám přístup. To samé platí pro vytvářením vláken apod.

Nezáleží na tom, v jakém jazyce tedy pracujete, všechny mají přístup ke všem klíčovým vlastnostem CLR.

Ve skutečnosti CLR nemá ani ponětí o tom, jaký programovací jazyk používáte. Znamená to, že si jednoduše vyberete takový jazyk, jaký vám vyhovuje. Musí však být platformou podporován.

Microsoft podporuje v této platformě tyto nejrozšířenější jazyky: C++ s řízenou nástavbou, C#, Visual Basic.NET, JScript, Java a takový „prostředník“ (IL) Assembler. Není problém nalézt kompilátory pro Alice, APL, COBOL, Component Pascal, Eiffel, Fortran, Haskell, Mercury, ML, Mondrian, Oberon, Perl, Python, RPG, Scheme a Smalltalk.

Následující schéma zobrazuje proces kompilace zdrojového kódu:

Jak je patrné ze schématu, zdrojový kód můžete vytvořit v jakémkoliv podporovaném jazyce. Pak použijeme příslušný kompilátor, který zkontroluje syntaxi a analyzuje kód. Výsledkem bude řízený (managed) modul, který je standardním Windows přenositelným PE (portable executable) souborem. Tyto soubory pak CLR spouští.

Řízený modul se skládá z těchto částí:

PE hlavička
Jedná se o standardní Windows PE hlavičku, která je podobná hlavičce formátu COFF (Common Object File Format). PE hlavička udává typ souboru – GUI (formulář), CUI (konzole) nebo DLL – a také čas, kdy byl modul sestaven. U modulů obsahujících jen IL kód je velké množství těchto informací ignorováno. Moduly obsahující nativní CPU kód zde udávají informace o nativním CPU kódu.
Hlavička CLR
Zde jsou informace, kterými jsou charakteristické řízené moduly. Je zde požadovaná verze CLR, několik příznaků, umístění vstupního bodu modulu (metoda Main), lokalizace či velikost metadat, zdroje (resources), tzv. srong name a několik dalších informací.
Metadata
Každý řízený modul obsahuje tabulku metadat, kde jsou 2 hlavní typy: ty, které popisují typy a členy definované ve zdrojovém kódu, a ty, které popisují typy a členy, na které je odkazováno ve zdrojovém kódu.
Intermediate Language (IL)
Toto je kód vyprodukovaný kompilátorem. Později ho CLR zkompiluje do nativního CPU kódu.

Většina kompilátorů kompilovala zdrojový kód pro specifickou architekturu procesoru, jako např. x86, Sloha nebo PowerPC. Kompilátory pro platformu .NET Framework produkují IL kód, který bude probrán později.

CLR požaduje od každého řízeného modulu metadata. Metadata jsou tabulky dat, která popisují, co je v modulu (typy a členy). Dále mají tabulku obsahující informace o referencích (importované typy a členy). Metadata jsou dokonalejším typem knihovny než IDL a na rozdíl od IDL, metadata jsou vždy pevně svázána s IL kódem, který modul obsahuje.

Metadata mají mnoho využití. Zde jsou některá z nich:

  • Díky metadatům nepotřebujeme při kompilaci hlavičkové soubory ani knihovny, protože všechny informace o typech/členech jsou obsaženy přímo u místa, kde jsou v IL kódu implementovány. Kompilátor si tyto informace jednoduše přečte přímo z řízeného modulu.
  • Visual Studio používá metadata v technologii IntelliSence. Ta vám pomáhá při psaní kódu, poskytne vám veškeré informace o třídách a jejich členech.
  • CLR používá metadata k ověřování všech operací, aby byla zachována typová bezpečnost.
  • Díky metadatům můžeme daný objekt serializovat a zpět deseriliazovat na jiném počítači.
  • Také garbage collector používá tyto informace. Jednoduše tak zjistí, o jaký objekt se jedná – včetně jeho členů a referencí.

V další části si metadata popíšeme podrobněji. Dále si v této části představíme intermediate language (IL kód).

Kompilátory platformy .NET Framework produkují pouze řízené moduly, které požadují CLR ke svému běhu. Znamená to, že koncoví uživatelé potřebují mít nainstalovanou CLR. Tato situace je podobná jako u MFC nebo VB 6 aplikací, kde je také potřeba MFC nebo VB knihoven.

Microsoft C++ kompilátor produkuje nativní EXE či DLL soubory bez potřeby CLR. Avšak přidáním nového parametru může kompilátor produkovat plnohodnotný řízený kód, který již CLR vyžaduje. C++ kompilátor vám jako jediný umožňuje vyvíjet nativní i řízené moduly. Umožňuje také to, že do řízeného modulu umístíme jak řízený, tak i nativní kód. Můžete pak využívat výhod řízeného kódu a pokračovat v již rozpracovaném nativním kódu.


Slučování řízených modulů do Assembly

CLR nepracuje přímo s řízenými moduly, pracuje s Assembly. Assembly je logicky uspořádaná skupina řízených modulů nebo resource souborů. Dále je Assembly nejmenší jednotkou, která se používá, chrání a čísluje verzemi. V závislosti na kompilátoru či dalších nástrojů můžete vytvářet jednosouborové assembly nebo vícesouborové assembly.

Assembly je nejmenší jednotkou, která se používá, chrání a čísluje verzemi.

Schéma by mělo pomoci pochopit, co to assembly je:

Jak vyplývá ze schématu, nástroji poskytneme soubory řízených modulů a zdrojů (data). Ten vyprodukuje jediný PE soubor, který reprezentuje skupinu těchto modulů a zdrojů. Tento PE soubor obsahuje blok dat nazvaný manifest, což není nic jiného než kolekce tabulek s metadaty. Tyto tabulky pak popisují celou assembly: jaké soubory ji tvoří, exportované či implementované typy, zdroje atd.

Moduly v aseembly s sebou nesou informace také o verzi a referencích na jiné assembly. Tyto informace dělají assembly samo popisující. Jinými slovy, CLR ví o assembly vše, co potřebuje k jejímu spuštění.

Co nás čeká přístě

Příště si vysvětlíme proces načítání assembly a jak pracuje JIT (just in time) kompilace.

×Odeslání článku na tvůj Kindle

Zadej svůj Kindle e-mail a my ti pošleme článek na tvůj Kindle.
Musíš mít povolený příjem obsahu do svého Kindle z naší e-mailové adresy kindle@programujte.com.

E-mailová adresa (např. novak@kindle.com):

TIP: Pokud chceš dostávat naše články každé ráno do svého Kindle, koukni do sekce Články do Kindle.

2 názory  —  2 nové  
Hlasování bylo ukončeno    
0 hlasů
Google
Autor má rád programování, čtení, spaní a špagety. Nemá rád dechovku, rajskou.

Nové články

Obrázek ke článku Stavebnice umělé inteligence 1

Stavebnice umělé inteligence 1

Článek popisuje první část stavebnice umělé inteligence. Obsahuje lineární a plošnou optimalizaci.  Demo verzi je možné použít pro výuku i zájmovou činnost. Profesionální verze je určena pro vývojáře, kteří chtějí integrovat popsané moduly do svých systémů.

Obrázek ke článku Hybridní inteligentní systémy 2

Hybridní inteligentní systémy 2

V technické praxi využíváme často kombinaci různých disciplín umělé inteligence a klasických výpočtů. Takovým systémům říkáme hybridní systémy. V tomto článku se zmíním o určitém typu hybridního systému, který je užitečný ve velmi složitých výrobních procesech.

Obrázek ke článku Jak vést kvalitně tým v IT oboru: Naprogramujte si ty správné manažerské kvality

Jak vést kvalitně tým v IT oboru: Naprogramujte si ty správné manažerské kvality

Vedení týmu v oboru informačních technologií se nijak zvlášť neliší od jiných oborů. Přesto však IT manažeři čelí výzvě v podobě velmi rychlého rozvoje a tím i rostoucími nároky na své lidi. Udržet pozornost, motivaci a efektivitu týmu vyžaduje opravdu pevné manažerské základy a zároveň otevřenost a flexibilitu pro stále nové výzvy.

Obrázek ke článku Síla týmů se na home office může vytrácet. Odborníci radí, jak z pracovních omezení vytěžit maximum

Síla týmů se na home office může vytrácet. Odborníci radí, jak z pracovních omezení vytěžit maximum

Za poslední rok se podoba práce zaměstnanců změnila k nepoznání. Především plošné zavedení home office, které mělo být zpočátku jen dočasným opatřením, je pro mnohé už více než rok každodenní realitou. Co ale dělat, když se při práci z domova ztrácí motivace, zaměstnanci přestávají komunikovat a dříve fungující tým se rozpadá na skupinu solitérů? Odborníci na personalistiku dali dohromady několik rad, jak udržet tým v chodu, i když pracovní podmínky nejsou ideální.

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý