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í.
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ů.
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).
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.
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.
Instance tříd a ostatních referenčních typů lze vytvářet pouze dynamicky a o jejich rušení se stará garbage collector. Pracujeme s nimi pomocí referencí.
Proměnné hodnotových typů mohou být pouze složkami tříd (pak se vytvářejí v rámci těchto instancí dynamicky) nebo lokálními proměnnými v metodách (a v tomto případě se vytvářejí na zásobníku, jak se na lokální proměnné sluší).
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 .
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í.
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ř.:
Třídy smějí mít jediného předka,
struktury nesmějí mít konstruktor bez parametrů,
struktury musejí být odvozeny od typu System.ValueType ,
výčtové typy musejí být odvozeny od typu System.Enum .
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.)
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.
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í pochopitelně obsahuje kód, který bude CLR provádět. Aby ho bylo možno spustit, musí být k němu přidružen manifest. Poznamenejme, že seskupení může mít jen jeden vstupní bod představovaný typicky metodou Main() , DllMain() ,nebo WinMain() . (Nezapomínejme, že IL je čistě objektový jazyk – musí to být statická metoda.)
Seskupení tvoří jednotku zabezpečení. Různá přístupová oprávnění jsou udělována a vyžadována právě na úrovni seskupení.
Seskupení představují jednotku z hlediska práce s datovými typy. Součástí identifikace typu je i jméno seskupení, v němž je daný typ uložen.
Seskupení představuje jednotku z hlediska vyhledávání jmen. To je založeno na metadatech uložených v manifestu. Manifest obsahuje metadata seskupení, která slouží pro vyhledávání, objeví-li se v programu požadavky na prostředky. Manifest specifikuje, jaké prostředky seskupení dává k dispozici. Manifest také obsahuje informace o ostatních seskupeních, na nichž toto seskupení závisí.
Seskupení představuje jednotku z hlediska správy verzí. Je to nejmenší část programu v CLR, která může mít samostatné číslo verze. V manifestu mohou být specifikovány požadavky na verze seskupení, na nichž toto seskupení závisí.
Seskupení představuje jednotku z hlediska nasazení programu. Při startu programu musí být k dispozici pouze ta seskupení, která aplikace na počátku používá. Ostatní mohou být zavedena do paměti až na vyžádání.
Seskupení mohou být statická nebo dynamická.
Statická obsahují třídy a rozhraní, ale také prostředky (bitové mapy atd.). Jsou uložena na disku v souborech PE.
Dynamická seskupení se vytvářejí v paměti za běhu programu a přímo z ní se spouštějí, neukládají se před spuštěním na disk.
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í.
Soukromé seskupení je součástí pouze jedné aplikace. Typicky je instalováno v domovském adresáři aplikace. Nepoužívá číslo verze, nestará se o zabezpečení.
Sdílené seskupení slouží více aplikacím. Instaluje se v globální paměti seskupení (global assembly cache, GAC) pomocí programu gacutil.exe nebo pomocí Windows Exploreru. Používá číslo verze a musí být digitálně podepsáno. Potřebné nástroje jsou součástí instalace SDK pro .NET.
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.
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.
/out : jméno_souboru |
Určuje jméno výstupního souboru. |
/target:exe |
Tato volba je implicitní. Vytvoří spustitelný |
/target:winexe |
Vytvoří spustitelný soubor pro okenní aplikaci. |
/target:library |
Vytvoří dynamickou knihovnu pro prostředí .NET Framework. |
/target:module |
Vytvoří modul, který lze připojit k jinému |
/define: seznam_symbolů |
Definuje v překládaných zdrojových souborech podmíněné symboly. V seznamu se oddělují |
/doc: soubor |
Jméno XML souboru, do kterého se uloží |
/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ů |
Odkaz na metadata specifikovaných seskupení. |
/addmodule: sezn _ souborů |
Připoj k tomuto seskupení specifikované soubory. |
/win32res: soubor |
Specifikuje soubor .res s prostředky pro Win32. |
/win32icon: soubor |
Použije pro výstup uvedenou ikonu. |
/resource: resinfo |
Vloží specifikované prostředky. |
/linkresource: resinfo |
Připojí specifikované prostředky do tohoto |
/debug[+|-] |
Přeložený program bude obsahovat ladicí |
/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[+|-] |
Povoluje nebo zakazuje optimalizace. |
/incremental[+|-] |
Povoluje přírůstkovou kompilaci. |
/warnaserror[+|-] |
Varování se pokládají za chyby. |
/warn: číslo |
Nastavuje úroveň varování ( číslo je v rozmezí |
/nowarn: sez_varování |
Zakáže uvedená varování. |
/checked[+|-] |
Nastaví nebo zakáže kontrolu celočíselného |
/unsafe[+|-] |
Nastaví nebo zakáže nezabezpečený kód. |
@ 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 |
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).
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.
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.
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.StringBuilder . Další nástroje najdeme v uvedených prostorech jmen.
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 .
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), BitArray (bitové pole). V uvedeném prostoru jmen najdeme také řadu rozhraní a některé pomocné třídy.
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 .
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 HttpWebResponse . (Třída WebRequestFactory ve skutečnosti vytvoří instanci odvozené třídy v závislosti na použitém protokolu.)
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.ThreadStaticAttribute .
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í.
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
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ů.
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ší.
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.
System.Data
System.Data.OleDb
System.Data.SqlClient
System.Data.SqlTypes
Podpora databázových aplikací v knihovně BCL vychází z ADO .NET.
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).
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.
System.Windows.Forms
System.ComponentModel
System.Windows.Forms.ComponentModel
System.Windows.Forms.Design
System.Windows.Forms.PropertyGridInternal
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.)
- Andrew Troelsen: C# and the .NET Framework Platform . Apress, 2002. ISBN 1-893115-59-3.
• International standard ISO/IEC 23270:2003 . Programming languages – C#.
J. Gough: Compiling for the . NET Common Language Runtime . Prentice Hall, 2002,
ISBN 0-13-062296-6.D. Kačmář: Programujeme .NET aplikace . Computer Press, Praha 2001. ISBN 80-7226-569-5
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