Prost°edφ .NET

Platforma .NET framework je, jak jist∞ vφte, nadstavba operaΦnφho systΘmu Windows, kterß se mß v budoucnu stßt jeho nedφlnou souΦßstφ. Programovßnφ pro toto prost°edφ mß °adu zajφmav²ch rys∙, s nimi₧ jsme se p°i programovßnφ pro Win32 nesetkali. V tomto Φlßnku se na n∞ podφvßme blφ₧e.

ZejmΘna se podrobn∞ zastavφme u pojmu sestavenφ (assembly) a ukß₧eme si, jakΘ mßme p°i jeho vytvß°enφ a pou₧φvßnφ mo₧nost.

P°φklady budou vychßzet z jazyka C#, kter² se pro ·Φely progrmovßnφ pro .NET hodφ asi nejlΘpe û koneckonc∙ byl navr₧en a implementovßn stejn²m t²mem jako prost°edφ .NET. Budeme pou₧φvat prakticky v²hradn∞ p°ekladaΦ csc.exe spouÜt∞n² z p°φkazovΘ °ßdky, nebo¥ ten poskytuje zdaleka nejvφce mo₧nostφ.

Prvnφ p°iblφ₧enφ

Na zaΦßtek si zopakujeme zßkladnφ fakta o platform∞.NET Framework. Jejφ oficißlnφ schΘma, jak ho publikovala firma Microsoft, ukazuje nßsledujφcφ obrßzek 1.


Struktura platformy .NET Framework

Programy, napsanΘ. pro platformu NET Framework v jakΘmkoli programovacφm jazyce, se p°eklßdajφ do mezijazyka IL (Intermediate Language) a p°ed spuÜt∞nφm se z IL p°eklßdajφ do strojovΘho k≤du p°ekladaΦem JIT (Just In Time). Na IL se m∙₧eme dφvat jako na typick² bajtov² k≤d, tedy jazyk jakΘhosi virtußlnφho procesoru. V tomto p°φpad∞ se ovÜem neinterpretuje, jak tomu je nap°. u Javy, ale p°eklßdß p°ed spuÜt∞nφm do nativnφho k≤du. (Ostatn∞ tento postup, oznaΦovan² jako technologie HotSpot, se dnes pou₧φvß i v Jav∞.)

Jßdrem platformy .NET Framework je spoleΦnΘ b∞hovΘ prost°edφ, anglicky oznaΦovanΘ Common Language Runtime (CLR). CLR zajiÜ¥uje b∞h program∙ p°elo₧en²ch z r∙zn²ch programovacφch jazyk∙ do mezijazyka IL. CLR umo₧≥uje jejich vzßjemnou spoluprßci, tak₧e r∙znΘ souΦßsti programu mohou b²t napsßny v r∙zn²ch programovacφch jazycφch. Starß se mj. o automatickou sprßvu pam∞ti, o °φzenφ doby ₧ivota objekt∙ a o dalÜφ v∞ci nezbytnΘ pro sprßvn² b∞h program∙ v tomto prost°edφ.

Podrobn∞ji ukazuje strukturu CLR obrßzek 2, kter² op∞t pochßzφ z oficißlnφ dokumenatce.

 


Struktura spoleΦnΘho b∞hovΘho systΘmu (CLR)

SouΦßstφ CLR je i spoleΦn² typov² systΘm (Common Type System, CTS). To je v podstat∞ specifikace po₧adavk∙, kter²m musφ vyhovovat datovΘ typy, aby je mohl systΘm CLR zp°φstupnit program∙m napsan²m v jin²ch programovacφch jazycφch.

P°ekladaΦ jazyka C# (nebo jinΘho jazyka pro .NET Framework) vytvß°φ tzv. °φzen² k≤d (managed code; n∞kdy se takΘ hovo°φ o zabezpeΦenΘm k≤du , safe code). To je k≤d, kter² b∞₧φ pod dozorem CLR a vyu₧φvß jeho slu₧eb û automatickΘ sprßvy pam∞ti, nßstroj∙ pro prßci s v²jimkami atd., metadat a nßstroj∙ pro p°φstup k nim atd.

D∙le₧itou souΦßstφ prost°edφ .NET Framework je knihovna, naz²vanß souhrnn∞ Zßkladnφ knihovna t°φd (Base Class Library, BCL). Pokr²vß tΘm∞° vÜe, naΦ si lze vzpomenout û od vstupnφch a v²stupnφch operacφ po kontejnery (t°φdy slou₧φcφ pro uklßdßnφ r∙zn²ch druh∙ dat), nßstroje pro prßci se sφtφ, nßstroje pro zabezpeΦenφ atd. To znamenß, ₧e programovacφ jazyky pro prost°edφ .NET nepot°ebuje svΘ vlastnφ knihovny.

Nad knihovnou BCL jsou jeÜt∞ knihovny pro programovßnφ grafickΘho u₧ivatelskΘho rozhranφ program∙ a knihovny pro webovΘ slu₧by.

NejvyÜÜφ vrstvu prost°edφ .NET Framework tvo°φ p°ekladaΦe z r∙zn²ch programovacφch jazyk∙.

Metadata

Prost°edφ .NET Framework podporuje prßci s tzv. metadaty . To jsou dodateΦnΘ informace, kterΘ se uklßdajφ do IL v dob∞ p°ekladu a kterΘ umo₧≥ujφ zφskßvat z p°elo₧enΘho programu velmi podrobnΘ informace o t°φdßch, kterΘ tento program obsahuje, o jejich metodßch atd. Tomuto mechanizmu se °φkß reflexe. (Na metadata se m∙₧eme dφvat jako na alternativy k tzv. typov²m knihovnßm ( type library ), s nimi₧ jsme se setkßvali p°i programovßnφ komponent COM.)

Prost°edφ .NET Framework ovÜem umo₧≥uje spolupracovat i s tzv. ne°φzen²m k≤dem (unmanaged code). To je k≤d, kter² neb∞₧φ v rßmci CLR; jde o klasick² k≤d pro Win32. Ne°φzen² k≤d lze psßt i v C#, i kdy₧ to nenφ standardnφ postup. (Ne°φzenΘ ovÜem mohou b²t v C# pouze jednotlivΘ metody, nikoli cel² program.)

SouΦßstφ prost°edφ .NET Framework jsou takΘ mechanizmy, kterΘ se starajφ o zabezpeΦenφ distribuovan²ch aplikacφ.

P°ekladaΦ jazyka C# a vÜechny zßkladnφ nßstroje pot°ebnΘ pro v²voj aplikacφ pro .NET Framework, tj. . NET Framework SDK Version 1.1 , lze zφskat zdarma, a to na webov²ch strßnkßch firmy Microsoft na http://www.microsoft.com/downloads . P°ed instalacφ je ovÜem t°eba stßhnout a instalovat tzv. . NET Framework Redistributable Package version 1.1 . Tento balφk musφ b²t instalovßn na ka₧dΘm poΦφtaΦi, na n∞m₧ majφ b∞₧et aplikace pro .NET Framework.

Tento p°ekladaΦ vyu₧φvajφ i v²vojovΘ nßstroje t°etφch firem (nap°. Borland C#Builder).

Prostory jmen

Knihovny platformy.NET jsou hierarchicky uspo°ßdßny do tzv. prostor∙ jmen. JmΘno t°φdy z knihovny je p°i pou₧itφ t°eba kvalifikovat jmΘnem prostoru jmen. K tomu se v C# pou₧φvß operßtor ä . ô (teΦka). Zßkladnφ prostor jmen se jmenuje System , vÜechny ostatnφ standardnφ prostory jmen jsou do n∞j vno°eny.

Prostory jmen lze samoz°ejm∞ definovat i v naÜich vlastnφch programech.  

DatovΘ typy v prost°edφ .NET

Jazyk IL, do n∞ho₧ se vÜechny programy pro .NET p°eklßdajφ, je Φist∞ objektov². Tomu odpovφdß i typov² systΘm tohoto jazyka (a odrß₧φ se to i ve vyÜÜφch programovacφch jazykφch, kterΘ se pro vytvß°enφ program∙ pro .NET pou₧φvajφ).

V prost°edφ .NET û tedy v IL û se rozliÜujφ dv∞ zßkladnφ skupiny datov²ch typ∙: Do prvnφ pat°φ tzv. hodnotovΘ typy, co₧ jsou nap°. Φφsla, znaky, logickΘ hodnoty, v²ΦtovΘ typy nebo struktury, a do druhΘ pat°φ tzv. referenΦnφ typy û to jsou t°φdy, rozhranφ, pole a delegßty.

Mezi hodnotov²mi typy se jeÜt∞ vyΦle≥uje skupina tzv. atomick²ch (primitivnφch) typ∙. To jsou celß Φφsla (v C# jde o typy typy sbyte , short , int , long , byte , ushort , uint , ulong ), znaky (typ char ), reßlnß Φφsla (typy float a double ) a logickΘ hodnoty (typ bool ).

DatovΘ typy, kterΘ se v C#, J# a dalÜφch jazycφch jevφ jako atomickΘ (Φφsla, znaky atd.), jsou ve skuteΦnosti v IL definovßny jako struktury (tj. t°φdy, od nich₧ nelze odvozovat potomky a kterΘ se chovajφ jako hodnotovΘ typy). V d∙sledku toho m∙₧eme i pro instance hodnotov²ch typ∙ volat odpovφdajφcφ metody. Je-li nap°. v C# prom∞nnß i typu int , m∙₧eme bez problΘm∙ napsat

string s = i.ToString();

a p°ekladaΦ zavolß odpovφdajφcφ metodu t°φdy string .

Poznamenejme, ₧e ve v∞tÜin∞ programovacφch jazyk∙ v prost°edφ .NET m∙₧eme pou₧φvat bu∩ obvyklΘ oznaΦenφ atomick²ch typ∙, nap°. int , nebo alternativnφ oznaΦenφ, je₧ se odvolßvß na odpovφdajφcφ t°φdu û nap°. System.Int32 .

SpoleΦn²m p°edkem vÜech datov²ch typ∙ v IL je t°φda System.Object , v C# dostupnß takΘ pomocφ klφΦovΘho slova object .  

T°φda object

U₧ jsme si °ekli, ₧e vÜechny t°φdy v IL tvo°φ jednu hierarchii, tj. jsou odvozeny od spoleΦnΘho p°edka û t°φdy System.Object . V tΘto hierarchii le₧φ nejen p°eddefinovanΘ t°φdy, ale i t°φdy, kterΘ ve svΘm programu definujeme my. Jestli₧e v deklaraci novΘ t°φdy neuvedeme p°edka, doplnφ si p°ekladaΦ jako p°edka t°φdu System.Object . To znamenß, ₧e vÜechny t°φdy obsahujφ urΦitΘ zßkladnφ metody, a tedy u vÜech instancφ vÜech t°φd lze oΦekßvat jistΘ zßkladnφ spoleΦnΘ chovßnφ. Tyto metody lze v odvozen²ch t°φdßch samoz°ejm∞ p°edefinovat.

TakΘ hodnotovΘ typy jsou odvozeny od t°φdy System.Object , tak₧e pro jejich prom∞nnΘ m∙₧eme volat metody zd∞d∞nΘ od t°φdy System.Object . HodnotovΘ typy ovÜem nepodporujφ d∞d∞nφ (°eΦeno terminologiφ platformy .NRT jsou zapeΦet∞nΘ ).

Poznamenejme, ₧e prost°edφ .NET Framework podporuje pouze jednoduchou d∞diΦnost. T°φda m∙₧e mφt jen jednoho p°edka, m∙₧e ale implementovat libovoln² poΦet rozhranφ.

SpoleΦn² typov² systΘm (CTS)

SouΦßstφ platformy .NET je specifikace spoleΦnΘho typovΘho systΘmu (Common Type Specification û CTS). Je to specifikace po₧adavk∙, kterΘ musφ spl≥ovat datovΘ typy, pokud majφ b²t pou₧itelnΘ v prost°edφ platformy .NET Framework. Nap°.:

Specifikace spoleΦnΘho jazyka (CLS)

Vedle spoleΦnΘho typovΘho systΘmu, kter² urΦuje vlastnosti vÜech datov²ch typ∙, kterΘ lze pou₧φvat v prost°edφ .NET, je t°eba v∞d∞t i o tzv. specifikaci spoleΦnΘho jazyka (Common Language Specification û CLS). Ta vyjad°uje n∞co jako pr∙nik û spoleΦnΘ minimum û, kterΘ obsahujφ vÜechny programovacφ jazyky pro .NET, i kdy₧ je mohou vyjad°ovat r∙zn²mi zp∙soby.

Smyslem tΘto specifikace je definovat pravidla, kterß zajistφ, ₧e t°φdu napsanou v jednom programovacφm jazyce pro .NET budeme moci pou₧φt v kterΘmkoli jinΘm jazyce pro tuto platformu. P°itom pou₧itφm zde rozumφme nejen vytvß°enφ instancφ a volßnφ metod, ale i odvozovßnφ potomk∙ atd.

Pravidla CLS se vztahujφ pouze na souΦßsti typ∙, kterΘ lze pou₧φvat mimo seskupenφ, v n∞m₧ je tento typ definovßn. To znamenß, ₧e se nevztahujφ na soukromΘ (private) souΦßsti. (Lze jφzliv∞ poznamenat, ₧e hlavnφm smyslem CLS je udr₧et ve h°e Visual Basic.)  

P°ehled zßkladnφch datov²ch typ∙ v .NET

Nßsledujφcφ tabulka obsahuje p°ehled zßkladnφch datov²ch typ∙ pou₧φvan²ch v prost°edφ .NET a jejich reprezentacφ v nejpou₧φvan∞jÜφch jazycφch pro platformu .NET.

.NET

C#

C++

VB .NET

Je v CLS?

System.Byte

byte

char

Byte

Ano

System.SByte

sbyte

signed char

ù

Ne

System.Int16

short

short

Short

Ano

System.Int32

int

int

Integer

Ano

System.Int64

long

__int64

Long

Ano

System.UInt16

ushort

unsigned short

ù

Ne

System.UInt32

uint

unsigned int

ù

Ne

System.UInt64

ulong

unsigned __int64

ù

Ne

System.Single

float

float

Single

Ano

System.Double

double

double

Double

Ano

System.Object

object

Object*

Object

Ano

System.Char

char

__wchar_t

Char

Ano

System.String

String

String*

String

Ano

System.Decimal

decimal

Decimal

Decimal

Ano

System.Boolean

bool

bool

Boolean

Ano

K tomu je t°eba doplnit, ₧e ve sloupci C++ je uvedena reprezentace odpovφdajφcφho datovΘho typu ve Visual C++ .NET se °φzen²mi rozÜφ°enφmi (managed extensions). To znamenß, ₧e nemusφ odpovφdat standardnφm typ∙m v C++ podle ISO 14882.

VÜimn∞te si, ₧e n∞kterΘ typy nelze pou₧φvat ve Visual Basicu.

Assembly neboli seskupenφ

P°eklad zdrojovΘho k≤du vytvo°φ tzv. assembly (seskupenφ, sestavenφ, komplet û se vÜemi t∞mito termφny se lze v ΦeskΘ literatu°e o prost°edφ .NET setkat). To je spustiteln² soubor, dynamickß knihovna apod. pro platformu .NET. Obsahuje IL ve formßtu PE (Portable Executable). Tento soubor PE obsahuje krom∞ zavad∞Φe (nativnφho k≤du, kter² obstarß spuÜt∞nφ), k≤du v IL a prost°edk∙ (resource) takΘ tzv. manifest, soubor s dodateΦn²mi informacemi o datov²ch typech v tomto seskupenφ.

Seskupenφ jsou zßkladem program∙ pro platformu .NET. Jejich nejd∙le₧it∞jÜφ funkce lze shrnout do nßsledujφcφho p°ehledu:

Seskupenφ mohou b²t statickß nebo dynamickß.

Pro vytvo°enφ seskupenφ lze pou₧φt v²vojovΘ nßstroje (p°ekladaΦ), lze ale takΘ vyu₧φt nßstroje z CLR API, kterΘ jsou nap°. v prostoru jmen Reflection.Emit .

Vedle toho se rozliÜujφ soukromß a sdφlenß seskupenφ.

Logickou strukturu seskupenφ ukazuje obrßzek 3.


Logickß struktura seskupenφ (assembly)

╪φzenφ p°φstupu ke slo₧kßm v .NET (p°φstupovß prßva)

Platforma .NET podporuje 6 ·rovnφ p°φstupu ke slo₧kßm datov²ch typ∙; programovacφ jazyky je ale nemusφ vyu₧φt vÜechny. V nßsledujφcφm p°ehledu si uvedeme jejich nßzvy v prost°edφ .NET (tj. v CLR), v C# a ve VB.

Private (private, Private)
P°φstup je dovolen pouze metodßm typu, jeho₧ je danß slo₧ka souΦßstφ.

Family (protected, Protected)
P°φstup je dovolen pouze metodßm definujφcφho typu nebo typ∙ od n∞j odvozen²ch (potomk∙), a to bez ohledu na seskupenφ, v n∞m₧ se nachßzejφ.

Family & assembly (C# ani VB nepodporuje)
P°φstup je dovolen pouze metodßm definujφcφho typu nebo typ∙ od n∞j odvozen²ch (potomk∙), avÜak pouze v seskupenφ, v n∞m₧ se definujφcφ typ nachßzφ.

Assembly (internal, Friend)
P°φstup je dovolen pouze metodßm typ∙ definovan²ch v seskupenφ, v n∞m₧ se definujφcφ typ nachßzφ.

Assenbly or family (protected internal, Protected Friend)
P°φstup je dovolen metodßm definujφcφho typu nebo typ∙ od n∞j odvozen²ch (potomk∙), a to bez ohledu na seskupenφ, v n∞m₧ se nachßzejφ, a takΘ metodßm typ∙ definovan²ch v tΘm₧e seskupenφ bez ohledu na d∞dickou hierarchii.

Public (public, Public)
P°φstup ke dovolen vÜem metodßm vÜech typ∙ ve vÜech seskupenφch.

Nßstroje v .NET

Nynφ se krßtce zastavφme u nßstroj∙ pro v²voj program∙, kterΘ platforma .NET dßvß v²vojß°∙m k dispozici a kterΘ budeme v dalÜφm povφdßnφ pot°ebovat. Bezpochyby nejd∙le₧it∞jÜφm z nich je p°ekladaΦ csc.exe , kter² najdeme v adresß°i s instalacφ prost°edφ .NET Framework; na mΘm poΦφtaΦi to je C:\Winnt\Microsoft.NET\Framework\v1.1.4322 . Jeho zßkladnφ pou₧itφ je

csc jmΘno_souboru

Tφmto p°φkazem p°elo₧φme zdrojov² soubor jmΘno_souboru . Pokud nep°ikß₧eme n∞co jinΘho, zavolß p°ekladaΦ i sestavovacφ program a vytvo°φ spustiteln² soubor s p°φponou .exe . Poznamenejme, ₧e jmΘno souboru musφ obsahovat p°φponu .cs . P°ed jmΘno souboru (resp. jmΘna soubor∙) lze uvΘst °adu p°epφnaΦ∙, kterΘ shrnuje nßsledujφcφ tabulka. S pou₧itφm n∞kter²ch z nich se seznßmφme v p°φÜtφm dφlu tohoto Φlßnku.

V²stupnφ soubory

/out : jmΘno_souboru

UrΦuje jmΘno v²stupnφho souboru.

/target:exe
/t:exe

Tato volba je implicitnφ. Vytvo°φ spustiteln²
soubor pro konzolovou aplikaci.

/target:winexe
/t:winexe

Vytvo°φ spustiteln² soubor pro okennφ aplikaci.

/target:library
/t:library

Vytvo°φ dynamickou knihovnu pro prost°edφ .NET Framework.

/target:module
/t:module

Vytvo°φ modul, kter² lze p°ipojit k jinΘmu
seskupenφ.

/define: seznam_symbol∙
/d: seznam_symbol∙

Definuje v p°eklßdan²ch zdrojov²ch souborech podmφn∞nΘ symboly. V seznamu se odd∞lujφ
st°ednφkem, bez mezer.

/doc: soubor

JmΘno XML souboru, do kterΘho se ulo₧φ
dokumentace generovanß na zßklad∞
dokumentaΦnφch komentß°∙.

Vstupnφ soubory

/recurse: ₧olφk

Pou₧ije vÜechny soubory v aktußlnφm adresß°i a vÜechny podadresß°e specifikovanΘ ₧olφkem.

/reference: sezn _ soubor∙
/r: s eznam_soubor∙

Odkaz na metadata specifikovan²ch seskupenφ.

/addmodule: sezn _ soubor∙

P°ipoj k tomuto seskupenφ specifikovanΘ soubory.

Prost°edky (resources)

/win32res: soubor

Specifikuje soubor .res s prost°edky pro Win32.

/win32icon: soubor

Pou₧ije pro v²stup uvedenou ikonu.

/resource: resinfo
/ res : resinfo

Vlo₧φ specifikovanΘ prost°edky.

/linkresource: resinfo
/linkres: resinfo

P°ipojφ specifikovanΘ prost°edky do tohoto
seskupenφ.

Generovan² k≤d

/debug[+|-]

P°elo₧en² program bude obsahovat ladicφ
informace.

/debug:{full|pdbonly}

Specifikuje zp∙sob lad∞nφ. Volba full je implicitnφ a dßvß mo₧nost p°ipojenφ ladicφho nßstroje k b∞₧φcφmu programu.

/optimize[+|-]
/o[+|-]

Povoluje nebo zakazuje optimalizace.

/incremental[+|-]
/incr [+|-]

Povoluje p°φr∙stkovou kompilaci.

Chyby a varovßnφ

/warnaserror[+|-]

Varovßnφ se poklßdajφ za chyby.

/warn: Φφslo
/w: Φφslo

Nastavuje ·rove≥ varovßnφ ( Φφslo je v rozmezφ
0û4).

/nowarn: sez_varovßnφ

Zakß₧e uvedenß varovßnφ.

Jazyk

/checked[+|-]

Nastavφ nebo zakß₧e kontrolu celoΦφselnΘho
p°eteΦenφ.

/unsafe[+|-]

Nastavφ nebo zakß₧e nezabezpeΦen² k≤d.

DalÜφ mo₧nosti

@ soubor

Odkaz na soubor s dalÜφmi volbami (response file).

/help

/?

VypφÜe nßpov∞du.

/nologo

PotlaΦφ hlßÜenφ p°ekladaΦe o autorsk²ch prßvech.

/noconfig

Zakazuje automatickΘ pou₧itφ souboru CSC.RSP

/baseaddress: adresa

Bßzovß adresa vytvß°enΘ knihovny.

/bugreport: soubor

Vytvo°φ soubor s chybov²mi hlßÜenφmi.

/codepage: n

Specifikuje k≤dovou strßnku, kterß se pou₧ije p°i Φtenφ zdrojov²ch soubor∙.

/utf8output

V²stup p°ekladaΦe v k≤dovßnφ UTF-8.

/main: typ

Specifikuje t°φdu, kterß obsahuje metodu Main() , od nφ₧ mß program zaΦφt. (P°ikazuje ignorovat jinΘ mo₧nΘ vstupnφ body programu.)

/fullpaths

P°ekladaΦ generuje pln∞ kvalifikovanΘ cesty.

/filealign: n

UrΦuje zarovnßnφ pou₧itΘ ve v²stupnφm souboru.

/nostdlib[+|-]

Zakazuje automaticky pou₧φt odkaz na standardnφ knihovnu mscorlib.dll

/lib: seznam_soubor∙

Zadßvß dodateΦnΘ adresß°e, v nich₧ se budou
hledat typy, na n∞₧ program odkazuje.

Poznamenejme, ₧e tento p°ekladaΦ existuje v °ad∞ lokalizovan²ch verzφ, mezi jin²m i v ΦeskΘ verzi. (To znamenß, ₧e vypisyje ΦeskΘ chybovΘ zprßvy).

DalÜφ nßstroje

Pokud neuvedeme nic jinΘho, instalujφ se tyto nßstroje do stejnΘho adresß°e jako p°ekladaΦ csc.exe .

Al.exe
Linker, kter² vytvo°φ seskupenφ ze zadan²ch modul∙ a soubor∙ s prost°edky (resources).

CorDbg.exe
Nßstroj pro lad∞nφ program∙ v MSIL z p°φkazovΘ °ßdky. Najdeme ho v adresß°i s instalacφ SDK pro .NET Framework; na mΘm poΦφtaΦi to je C:\Program Files\Microsoft Visual Studio .NET 2003\SDK\bin .

Gacutil.exe
Slou₧φ k instalaci a odinstalovßnφ sdφlen²ch seskupenφ. Najdeme ho v adresß°i s instalacφ SDK pro .NET Framework.

Ilasm.exe
P°ekladaΦ jazyka IL. (Vytvo°φ seskupenφ ze zdrojovΘho textu napsanΘho v IL.)

Ildasm.exe
Disasembler jazyka IL. Je vybaven grafick²m u₧ivatelsk²m rozhranφm, umo₧≥uje i v²pis do souboru. Najdeme ho v adresß°i s instalacφ SDK pro .NET Framework (tedy v jinΘm adresß°i ne₧ ilasm.exe .)

Nmake.exe
Microsoftskß analogie znßmΘ utility Make pro °φzenφ p°ekladu a sestavenφ programu pomocφ textov²ch soubor∙. Najdeme ho v adresß°i s instalacφ SDK pro .NET Framework.

Sn.exe
Slou₧φ ke generovßnφ äsdφlen²ch jmenô (shared name, takΘ strong name) pro sdφlenß seskupenφ. Najdeme ho v adresß°i s instalacφ SDK pro .NET Framework.

Tlbexp.exe
Na zßklad∞ ve°ejn∞ p°φstupn²ch typ∙ v seskupenφ vytvo°φ a exportuje typovou knihovnu pro COM. Najdeme ho v adresß°i s instalacφ SDK pro .NET Framework.

Tlbimp.exe
Na zßklad∞ dodanΘ typovΘ knihovny pro COM vytvo°φ °φzenΘ seskupenφ (managed assembly); p°itom zobrazφ (ämapujeô) typy z typovΘ knihovny na typy v prost°edφ .NET. Vytvo°enΘ seskupenφ je t°eba importovat do programu v C#. Najdeme ho v adresß°i s instalacφ SDK pro .NET Framework.

Xsd.exe
Nßstroj pro definici schΘmat XML. Jako vstup pou₧ije soubory XML nebo XDR. Najdeme ho v adresß°i s instalacφ SDK pro .NET Framework.

Aspnet_regiis.exe
Tento program slou₧φ k registraci serveru IIS. Budeme jej pot°ebovat, jestli₧e si IIS instalujeme pozd∞ji ne₧ prost°edφ .NET.

Prostory jmen

V ·vodnφm povφdßnφ nelze pochopiteln∞ projφt celou rozmanitost prost°edφ .NRT. Pro zßkladnφ orientaci m∙₧e poslou₧it p°ehled prostor∙ jmen a nßstroj∙, kterΘ jsou v nich k dispozici.

Prßce s textem

System.Text
System.Text.RegularExpressions

Zßkladem prßce s textem je t°φda string . Pot°ebujeme-li t°φdu, kterß umo₧≥uje m∞nit znakov² °et∞zec ulo₧en² v instanci, pou₧ijeme System.Text.String¡Builder . DalÜφ nßstroje najdeme v uveden²ch prostorech jmen.

Regulßrnφ v²razy

System.Text.RegularExpressions

Jako regulßrnφ v²razy se oznaΦujφ v²razy pro vyhledßvßnφ a nahrazovßnφ v textov²ch souborech. Knihovna BCL podporuje prßci s regulßrnφmi v²razy na ·rovni jazyka Perl 5, vΦetn∞ ₧olφk∙ ( ?? , *? , +? a dalÜφch). Prost°edky pro prßci s regulßrnφmi v²razy najdeme v u₧ zmφn∞nΘm prostoru jmen System.Text.RegularExpressions . Jejich zßkladem je t°φda Regex ; v²sledky vyhledßvßnφ reprezentuje t°φda Match , p°φpadn∞ MatchCollection . JednotlivΘ nalezenΘ shody p°edstavujφ instance t°φdy Capture , jejich soubor je ulo₧en v instanci t°φdy CaptureCollection .

Kontejnery (kolekce)

System.Collections

V prostoru jmen System.Collections najdeme beztypovΘ kontejnery pro vÜeobecnΘ pou₧itφ, jako je ArrayList (indexovan² seznam), Dictionary (slovnφk, asociativnφ pole), Hashtable (heÜovß tabulka), Queue (fronta), Stack (zßsobnφk), Bit¡Array (bitovΘ pole). V uvedenΘm prostoru jmen najdeme takΘ °adu rozhranφ a n∞kterΘ pomocnΘ t°φdy.

Vstupy a v²stupy, datovΘ proudy

System.IO
System.IO.IsolatedStorage
System.Net.Sockets

Zßkladnφ nßstroje jsou v prostoru jmen System.IO , dalÜφ v prostoru jmen System.IO.IsolatedStorage . Proudy pro prßci se sφtφ najdeme v prostoru jmen System.Net.Sockets . Pro operace s konzolou slou₧φ t°φda System.Console .

Prßce se sφtφ

System.Net

Zßkladem prßce se sφtφ je generickß architektura po₧adavku a odezvy (generic request/response architecture). Pro vytvo°enφ po₧adavku vΦetn∞ vytvo°enφ zßhlavφ odpovφdajφcφho pou₧itΘmu protokolu na zßklad∞ anal²zy URI slou₧φ t°φda WebRequestFactory .

Abstraktnφ t°φdy WebRequest a WebResponse p°edstavujφ obecn² po₧adavek, resp. odezvu. T°φda WebRequest poskytuje proud typu NetworkStream , umo₧≥ujφcφ Φφst data z odezvy. Tyto t°φdy najdeme v prostoru jmen System.Net . Zde najdeme i specifickΘ nßstroje pro pou₧itφ protokolu HTTP û HttpWebRequest a Http¡WebResponse . (T°φda WebRequestFactory ve skuteΦnosti vytvo°φ instanci odvozenΘ t°φdy v zßvislosti na pou₧itΘm protokolu.)

VφcevlßknovΘ aplikace

System.Threading
System.Timers

Nßstroje pro tvorbu vφcevlßknov²ch aplikacφ zahrnujφ mechanizmy pro synchronizaci, jako jsou monitory, mutexy, udßlosti, zßmky pro Φtenφ a zßpis atd. Vedle toho se p°i tvorb∞ vφcevlßknov²ch aplikacφ uplatnφ takΘ atribut System.Thread¡StaticAttribute .

BezpeΦnost

System.Security
System.Security.Cryptography
System.Security.Cryptography.X509Certificates
System.Security.Permissions
System.Security.Policy
System.Security.Principal

Knihovna BCL poskytuje nßstroje pro manipulaci se vÜemi souΦßstmi modelu b∞hovΘho zabezpeΦenφ (Code Access Security Model), vΦetn∞ nßstroj∙ pro Üifrovßnφ.

Reflexe

System.Reflection
System.Reflection.Emit

Reflexe je nßstroj pro pokroΦilΘ manipulace s datov²mi typy, pro vytvß°enφ nov²ch datov²ch typ∙ za b∞hu programu atd

Serializace

System.Runtime.Serialization
System.Runtime.Serialization.Formatters
System.Runtime.Serialization.Formatters.Soap
System.Runtime.Serialization.Formatters.Binary

Serializace p°edstavuje nßstroj pro uklßdßnφ objekt∙ do datov²ch proud∙ a pro Φtenφ objekt∙ z datov²ch proud∙.

DistribuovanΘ aplikace

System.Runtime.Remoting
System.Runtime.Remoting.Channels
System.Runtime.Remoting.Channels.Http
System.Runtime.Remoting.Channels.Tcp
System.Runtime.Remoting.Services

Nßstroje pro tvorbu distribuovan²ch aplikacφ zahrnujφ podporu sφ¥ov²ch protokol∙, pro volßnφ vzdßlen²ch procedur a dalÜφ.

WebovΘ slu₧by

System.Web.Services
System.Web.Services.Discovery
System.Web.Services.Protocols

WebovΘ slu₧by jsou svΘrßzn²m druhem distribuovan²ch aplikacφ, kterΘ vyu₧φvajφ zprßv posφlan²ch v jazyce XML. Nßstroje, kterΘ prost°edφ .NET Framework poskytuje, zahrnujφ podporu tvorby, vyhledßvßnφ a vyu₧φvßnφ webov²ch slu₧eb.

Databßze

System.Data
System.Data.OleDb
System.Data.SqlClient
System.Data.SqlTypes

Podpora databßzov²ch aplikacφ v knihovn∞ BCL vychßzφ z ADO .NET.

XML

System.Xml
System.Xml.Serialization
System.Xml.Serialization.Schema
System.Xml.XPath
System.Xml.Xsl

Knihovna BCL podporuje XML 1.0, schΘmata XML, prostory jmen XML, implementace XSL/T, XPath a SOAP 1.1. Nabφzφ takΘ dva modely anal²zy (DOM-2 a jednu z variant SAX2).

Grafika

System.Drawing
System.Drawing.Design
System.Drawing.Drawing2D
System.Drawing.Imaging
System.Drawing.Printing
System.Drawing.Text

Tyto nßstroje v knihovn∞ BCL p°edstavujφ GDI+, tedy zabezpeΦen² ekvivalent GDI z Win32.

GUI

System.Windows.Forms
System.ComponentModel
System.Windows.Forms.ComponentModel
System.Windows.Forms.Design
System.Windows.Forms.PropertyGridInternal

Spoluprßce s ne°φzen²m k≤dem

System.Runtime.InteropServices
System.Runtime.InteropServices.CustomMarshaller
System.Runtime.InteropServices.Expando

B∞hov² systΘm prost°edφ .NET podporuje obousm∞rnou spoluprßci s ne°φzen²m k≤dem prost°ednictvφm COM, COM+ a volßnφ knihoven DLL. BCL k tomu ·Φelu poskytuje °adu t°φd a atribut∙, vΦetn∞ °φzenφ doby ₧ivota objekt∙ nebo vytvß°enφ u₧ivatelsk²ch marshaller∙.

 

Literatura

•  Jeffrey Richter: Applied Microsoft .NET Framework Programmig . Microsoft Press 2002.
ISBN 0-7356-1422-9. (╚esky: .NET Framework û programovßnφ aplikacφ , Grada Publishing 2002, ISBN 80-247-0450-1.)

  1. Andrew Troelsen: C# and the .NET Framework Platform . Apress, 2002. ISBN 1-893115-59-3.

•  International standard ISO/IEC 23270:2003 . Programming languages û C#.

  1. J. Gough: Compiling for the . NET Common Language Runtime . Prentice Hall, 2002,
    ISBN 0-13-062296-6.

  2. D. KaΦmß°: Programujeme .NET aplikace . Computer Press, Praha 2001. ISBN 80-7226-569-5

P°φÜt∞

Po tomto obecnΘm ·vodu se zaΦneme zab²vat problematikou prßce se seskupenφm: Jak vytvo°it a jak instalovat soukromΘ seskupenφ, jak vytvo°it a jak instalovat sdφlenΘ seskupenφ, kde ho b∞hov² systΘm prost°edφ .NET hledß, jak je to se zabezpeΦenφm, jak vytvo°it konfiguraΦnφ soubor atd.

Miroslav Virius