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

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       16 429×

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

Reklama
Reklama

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 Hackerský kongres přiveze v září do Prahy špičky světové kryptoanarchie

Hackerský kongres přiveze v září do Prahy špičky světové kryptoanarchie

Hackerský kongres HCPP16 pořádá od 30. září do 2. října nezisková organizace Paralelní Polis již potřetí, a to ve stejnojmenném bitcoinovém prostoru v pražských Holešovicích. Letos přiveze na třídenní konferenci přes 40 většinou zahraničních speakerů – lídrů z oblastí technologií, decentralizované ekonomiky, politických umění a aktivismu. Náměty jejich přednášek budou také hacking, kryptoměny, věda, svoboda nebo kryptoanarchie.

Reklama
Reklama
Obrázek ke článku ICT PRO školení zaměřené nejenom na ICT

ICT PRO školení zaměřené nejenom na ICT

Dovolte, abychom se představili. Jsme zaměstnanci společnosti ICT Pro, profesionálové v oblasti poskytování komplexních ICT služeb. Neboli služeb spojených s informačními a komunikačními technologiemi, které dnes - ve 21. století - tvoří  nedílnou součást běžného provozu všech moderních firem.

loadingtransparent (function() { var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; po.src = 'https://apis.google.com/js/plusone.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); })();
Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý