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 903×

  • 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 Blockchain & Bitcoin konference

Blockchain & Bitcoin konference

V pátek 19. 5. 2017 se v pražském konferenčním centru Andel’s konala Blockchain & Bitcoin konference. Řada odborníků a podnikatelů v oboru blockchainu a kryptoměn představila možnosti budoucího směřování tohoto oboru. Speakeři většinou rusky mluvící provenience prezentovali řešení svých firem založená na technologii blockchainu.

Reklama
Reklama
Obrázek ke článku Malware KONNI se úspěšně skrýval 3 roky. Odhalil ho bezpečnostní tým Cisco Talos

Malware KONNI se úspěšně skrýval 3 roky. Odhalil ho bezpečnostní tým Cisco Talos

Bezpečnostní tým Cisco Talos odhalil celkem 4 kampaně dosud neobjeveného malwaru, který dostal jméno KONNI. Ten se dokázal úspěšně maskovat od roku 2014. Zpočátku se malware zaměřoval pouze na krádeže citlivých dat. Za 3 roky se ale několikrát vyvinul, přičemž jeho současná verze umožňuje útočníkovi z infikovaného počítače nejenom krást data, ale i mapovat stisky na klávesnici, pořizovat screenshoty obrazovky či v zařízení spustit libovolný kód. Pro odvedení pozornosti oběti zasílali útočníci v příloze také obrázek, zprávu a výhružkách severokorejského režimu či kontakty na členy mezinárodních organizací.

Obrázek ke článku Pouze jedna z deseti lokálních firem ví o pokutách plynoucích z GDPR

Pouze jedna z deseti lokálních firem ví o pokutách plynoucích z GDPR

Trend Micro, celosvětový lídr v oblasti bezpečnostních řešení a VMware, přední světový dodavatel cloudové infrastruktury a řešení pro podnikovou mobilitu, oznámily výsledky výzkumu mezi českými a slovenskými manažery zodpovědnými za ochranu osobních údajů, který zjišťoval, jak jsou připraveni na nové nařízení o ochraně osobních údajů (GDPR). Většina firem v České republice a na Slovensku nad 100 zaměstnanců je již s novým nařízením GDPR obeznámena. Výzkum provedený ve spolupráci s agenturou Ipsos ukázal, že téměř 8 firem z 10 o nařízení ví, přičemž jeho znalost je o něco vyšší na Slovensku (89 %) než v České republice (69 %).

Obrázek ke článku Vyděračský software Locky se vrací, tváří se jako potvrzení platby, odhalil tým Cisco Talos

Vyděračský software Locky se vrací, tváří se jako potvrzení platby, odhalil tým Cisco Talos

Jeden z nejznámějších ransomwarů, Locky, se vrací. Po většinu roku 2016 patřil mezi nejrozšířenější vyděračské softwary. Ke svému šíření využíval emailové kampaně s infikovanými přílohami. Ransomware Locky byl rozesílán prostřednictvím botnetu (internetový robot zasílající spamy) Necurs. Jeho aktivita na konci roku 2016 téměř upadla a spolu s ní i šíření ransomwaru Locky. Před několika týdny se Necurs opět probudil a začal posílat spamy nabízející výhodný nákup akcií. Dne 21. dubna zaznamenal bezpečnostní tým Cisco Talos první velkou kampaň ransomwaru Locky prostřednictvím botnetu Necurs za posledních několik měsíců.

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 © 20032017 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý