CLR
- common language runtime
Ide v podstate o podobnu zaležitosť akou je Java runtime. Runtime
environment poskytuje menežovanému kódu možnosti ako:
spolupráca kódu napísaneho v rôznych
programovacích jazykoch, cross-language spracovanie
výnimiek, zvýšená bezpečnosť, verzionovanie
kódu a podpora nasadenia, zjednodušený model interakcie
komponentov, vylaďovacieovacie a profilovacie služby.
Aby bolo možné pre runtime environment poskytnúť tieto
služby menežovanému kódu, jednotlivé
kompilátory programovacích jazykov musia do
kompilovaného kódu pridať metadáta, ktoré
popisujú typy, členy a referencie v kóde. Tieto
metadáta sú uložené spolu s
kódom.Každý nahraťeľný súbor (PE) obsahuje
tieto metadta. Runtime využíva metadáta na nyhľadanie a
nahratie tried, usporiadanie inštancií v pamäti, volanie
metód, generovanie natívneho kódu a nastavenie
hraníc runtime kontextu pre daný zdrojový
súbor.
Assemblies
Assemblies sú jednou zo základných častí
programovania s .NET Framework. Assembly má za
úlohunasledovné veci :
- Obsahuje kód, ktorývykonaáva CLR. MSIL
kód nebude vykonaný pokiaľ nemá asociovaný
assembly manifest.
- Vykonáva bezpečnostnú hranicu. Na tejto
úrovni sú požadované a pridelované
bezpečnostné granty pre zdrojový kód.
- Tvorí hranicu typov. Každá entita určitého
typu obsahuje názov assembly v ktorom sa nachádza jej
zdrojový kód. Assembly tvorí namedomain pre typy.
- Tvorí reference scope hranicu.
- Assmebly je najmenšia verziovateľná entita v CLR. všetky
typy a zdroje v jednom assembly sú verzionované ako unit.
Manifest zdrojového súboru popisuje závislosť
verzií, ktorá sa dá určiť pre ľubovoľné
závislé zdrojové súbory.
- Tvorí deployment unit. Keď je spustená
aplikácia, iba inicializačné assemblies sú
nahraté do pamäte, ostatné sú
vyhľadané na požiadavku. Tento prístup umožňuje
aplikáciám byť napríklad tenkími, keď
sú sťahované cez sieť.
- Je to jednotka, na ktorej úrovni je povolená
súčasné spúšťanie.
Application Domains
Z pohľadu histórie, hranice procesu boli využívané
na izolovanie aplikkácií bežiacich na jednom
počítači. Každá aplikácia je spustená ako
separátny proces, ktorý izoluje aplikáciu od
ostatných bežiacich na tom istom počítači.
Aplikácie sú izolované, pretože
pamäťové odkazy sú relatívne k procesu.
Smerník odovzdaný z jedného procesu druhému
nemäže byť nijako zmysluplne využitý v cieľovom procese. A
naviac nieje možné robiť priame volania medzi dvoma procesmi.
Namiesto toho sú aplikácie odkázané na
proxies, ktoré poskytujú túto úroveň
indirekcie.
Menežovaný kód musí prejsť overovacím
procesom, predtým ako mäže byť spustený. Vtedy sa
skontoluje, či sú prístupy do pamäte v povolenom
rozsahu, alebo nie. Kód, ktorý prejde verifikáciou
je považovaný za type-safe. Schopnosť otestovať kód ako
type-safe poskytuje pre runtime veľmi dobrú izoláciu
precesu za veľmi malú cenu výkonu.
Application domains poskytujú bezpečnú a
verzatilnú jednotku spracovania, ktorú CLR môže
použiť na poskytnutie izolácie medzi aplikáciami.
Môžete spustiť vicero application domains v jednom procese s
takou istou úrovňou izolácie aká by existovala v
separátnych procesoch, ale bez prídavných overhead
využívania proxies na medziprocesové volania a
prepínania kontextov procesu. Schopnosť spúštať viacero
aplikácií v jednom spoločnom procese dramaticky zvyšuje
scalability servra.
Runtime Hosts
CLR bolo dizajnované na podporu mnoťstva rôznych typov
aplikácií, od Web servra po aplikácie s
tradičným Windows rozhraním. Každý typ
aplikácie požaduje runtime host na ktorom môže byť
spustená. Runtime host spustí runtime ako proces,
vytvorí application domains v tomto procese a natiahne
používateľov kód do application domains.
.NET Framework je dodávaný s viacerými runtime
hostmi, zahrňujúc nasledovných hostov:
- ASP .NET - Natiahne
runtime do procesu, ktorý je pripravený obsluhovať web
požiadavky. ASP. NET tiež vytvorí application domain pre
každú web aplikáciu, ktorá beží na web
servri.
- Microsoft Internet Explorer
- vytvára application domains v ktorých sa
spúšťajú menežované ovládacie prvky.
.NET Framework podporuje stiahnutie a vykonanie ovladacích
prvkov závislých na internetovom prehliadači. Runtime
prostredie komunikuje s MSIE cez mime filter na vytvorenie
aplikačných domén v ktorých sa
spúšťajú menežované ovládacie prvky.
Implicitne je pre každú web stránku vytvorená
jedna aplikačná doména.
- Shell executables -
zavolá runtime host kontrol kód zo súboru
ktorý je spúšťaný zakaždým, keď je
vykonateľný súbor spustený cez shell.
Common Type System
Zavádza šturktúrované aj jednoduché typy
premenných, ktoré sú spoločné pre
väčšinu programovacích jazykov.Typy delíme na 2
základné druhy: na value types a reference types. V
podstate CLR pozná (zavádza) vcelku klasické typy
ako integer, pole, trieda,.... ktorých vlastnosti sú
akýmsi prienikom schopností jednotlivých objektovo
orientovaných jazykov, ktoré podporuje :NET Framework.
Cross-Language
Interoperability
Aby sa zaručilo, že objekty vytvorené v rôznych jazykoch
budu plne kompatibilné, musia mať verejné iba tie
vlastnosti ( rozumej aj metódy ) , ktoré sú
spoločné úre všetky jazyky s ktrorými musí
spolupracovať. Z tohoto dôvodu bola deifnovaná Common
Language Specification (CLS), ktorá je množinou
základných vlastností jazyka potrebných
mnohými aplikáciami. CLS pravidlá definujú
podmnožinu Common Type Systému, tj. všetky pravidlá,
ktoré platia pre Common Type System platia aj pre CLS, okrem
tých ktoré sú v CLS ešte reštriktívnejšie.
CLS pomáha zlepšiť a zaručiť interoperabilitu jazykov
definovaním množiny vlastností na ktoré sa
môžu vývojári spoľahnúť, že budú
dostupné v širokej škále jazykov. CLS tiež nastoľuje
požiadavky na CLS konformitu. tieto pomahajú
vývojárom určiť či ich menežovaný kód
je v súlade s CLS a do akej miery daný
vývojový nástroj podporuje vývoj
menežovaného kódu, ktorý používa CLS
vlastnosti.
Komponenty, ktoré vyhovujú CLS požiadavkám a
využívajú iba vlastnosti definované v CLS
sú nazývané CLS-compliant komponenty.
.NET Framework Security
.NET Framework poskytuje viacero mechanizmov na ochranu zdrojov a
kódu od neautorizovaného kódu a
používateľov:
- ASP .NET Web Application Security
ponúka možnosť na kontrolu prístupu pomocou
porovnávania autentikovaných kreditov (alebo ich
reprezentantov) na práva MSWin NT súborového
systému alebo k XML súboru, ktoré obsahujú
zoznam autorizovaných používateľov, autorizovaných
rôľ alebo autorizovaných HTTP verbs.
- Code Access security
použiva permissions na kontrolu prístupu, ktorý ma
kód k chráneným zdrojom a
operáciám. Pomáha chrániť
počítačové systémy od záškodného
mobilného kódu a ponúka spôsob ako
môže mobilný kód byť bezpečne spustený.
- Role-based Security
ponúka informáciu potrebnú k rozhodovaniu o tom,
čo je používateľ oprávnený urobiť. Tieto
rozhodnutia môžu byť založrné alebo na
používateľovej identite alebo jeho roli, alebo obidvoch
súčasne.
Introduction
to the .NET Framework Class Library
.NET Framework zahŕňa triedy, rozhrania a value typy, ktoré
zrýchľujú a optimizujú proces vývoja a
poskytujú prístup k funkčným vlastnostiam
systému. Na uľahčenie spolupráce medzi jazykmi,
typy .NET Framework sú CLS kompliantné a teda môžu
byť použité z ľubovoľného jazyka, ktorého
prekladač je konformný CLS.
.NET Framework typy sú základom na ktorom sú
postavené .NET aplikácie, komponenty a controlls. .NET
Framwork zahŕňa typy, ktoré vykonávajú
nasledovné funkcie:
- reprezentujú základné dátové
typy a výnimky
- zaobaľujú dátové štruktúry
- vykonávajú vstup/výstup
- Pristupujú k informáciám o
natiahnutých typoch
- Volajú .NET Framework bezpečnostné funkcie
- poskytujú data access, GUI na strane klienta ako aj
servrrom kontrolované client-side GUI.
.NET Framework poskytuje bohatú množinu interfaceov, rovnako ako
abstrakné aj konkrétne (implementované) triedy.
Môžete používať konkrétne triedy či už v podobe v
akej sú predkladané, alebo v mnohých
prípadoch z nich môžete dediť. Na použitite funkčnosti
interfaceu môžete alebo vytvoriť triedu, ktorá tento
interface implementuje alebo derivovať z jednej z tried
ponúkaných .NET Frameworkom, ktorá tento interface
implementuje.