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       17 783×

  • 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 NVIDIA shrnuje přehled novinek na E3 2018

NVIDIA shrnuje přehled novinek na E3 2018

Společnost NVIDIA si u příležitosti E3 2018 připravila řadu novinek, které uvádí v kompletním přehledu, Například nové hry s podporou NVIDIA Highlights, která je součástí aplikace GeForce Experience, i nadále nabírá na obrátkách. Kromě výše zmíněné Shadow of the Tomb Raider získaly podporu také hry Dirty Bomb a Switchblade.

Reklama
Reklama
Obrázek ke článku SODAT vidí budoucnost datové bezpečnosti ve strojovém učení

SODAT vidí budoucnost datové bezpečnosti ve strojovém učení

Firmy chrání svá citlivá data často nedostatečně. Podle průzkumu společnosti SODAT se v minulém roce setkalo až 80 % z nich s bezpečnostním incidentem ztráty nebo úniku dat. Jedna z pilotních firem, která testovala novou verzi řešení SODAT Protection & Analytics 2.0pro bezpečností analýzu a monitoring dat díky novince zjistila, kdo z disku smazal důležité výkresy a mohla na incident včas reagovat.

Obrázek ke článku Kontrolujete pracovní emaily i na dovolené? 7 tipů odborníka, jak nepřijít o data

Kontrolujete pracovní emaily i na dovolené? 7 tipů odborníka, jak nepřijít o data

Letní měsíce jsou pro většinu zaměstnanců spojené s každoroční dovolenou. Z údajů Českého statistického úřadu vyplývá, že v roce 2017 podnikli Češi přes 13 milionů delších cest (tzn. s více než čtyřmi noclehy). Přitom právě na období července, srpna a září připadá více než 7,5 milionů z nich. Nicméně tradiční představu o dovolené jako o čase, kdy má práci na starost někdo jiný, Češi boří. 

Obrázek ke článku 10 SEO mýtů, které už nemusíte v roce 2018 řešit

10 SEO mýtů, které už nemusíte v roce 2018 řešit

„Kolik má být na stránce klíčových slov?“, „Nemáš vyplněný meta tag keywords, to nebude fungovat.“, „Katalogy jsou mrtvý“. Také jste už slyšeli některé z těchto otázek? Pojďme si na ně konečně jednou provždy odpovědět.

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