Dajbych.net


Přehled rozhraní .NET Framework

, 8 minut čtení

net2010 logo

.NET framework je velmi rozsáhlý a někdy je těžké se rozhodnout, zda něco kódovat nebo použít existující komponentu frameworku. Někdy je psaní kódu rychlejší, ale když do hry vstoupí produkční vytížení a spolehlivost, perspektiva je jiná. Přehled toho, co .NET nabízí, jsou základní znalosti. Je těžké to sledovat, protože .NET se vyvíjí velmi rychle. Tento článek popisuje základy, ze kterých je rozhraní .NET Framework vytvořeno.

.NET 1.0

Modul CLR (Common Language Runtime)

Nejvýznamnější charakteristikou rozhraní .NET Framework je jeho schopnost používat třídy a volat metody napříč různými jazyky. Téměř vše je nyní napsáno v C#, ale až tento jazyk překoná něco revolučního, nebude nutné přepisovat veškerý kód a knihovny v C#.

Všechny jazyky jsou zkompilovány do jazyka CIL (Common Intermediate Language), který je poté zkompilován do nativního kódu pro architekturu procesoru, kde kód běží. Proto se jazyk C# nazývá spravovaný jazyk. Běhové prostředí .NET je ve srovnání s ostatními nejrychlejší. Je jen asi o 5 % pomalejší než nativní kód, ale výhody jsou obrovské.

Popelář

Garbage collector nás osvobozuje od starého světa C++, kde je nutné spravovat paměť ručně. O to se stará .NET framework. Od verze .NET 4 je garbage collection zpracováván v samostatném vlákně, takže výkon je více než dostatečný.

ADO.NET

ADO (ActiveX Data Objects) bylo součástí COM (Component Object Model) pro přístup k datovým zdrojům. ADO.NET sdílí s ADO pouze název a jinak je zcela odlišný. Jedná se o framework ve jmenném prostoru System.Data pro přístup k hlavním databázím. Každý významný výrobce databází poskytuje pro ADO.NET poskytovatele, což znamená, že je podporován rozhraním .NET Framework.

Řetězec

V rozhraní .NET Framework existuje pouze jeden typ string, který se používá k reprezentaci řetězcových hodnot. Interně je řetězec reprezentován ve formátu UTF-16, nikoli UTF-8, a každá jedinečná hodnota řetězce existuje v paměti jako jedna instance kvůli stáži řetězců. To se může zdát jednoduché, ale je to zcela odlišné od ruční správy paměti vyžadované ve světě C++.

.NET 1.1

Regulární výrazy

Regulární výrazy poskytují výkonnou, flexibilní a efektivní techniku pro zpracování řetězců. Pokud potřebujete něco extrahovat z řetězce, zvažte použití regulárních výrazů. Přestože je teorie, která za nimi stojí, poměrně složitá, stojí za to se ji naučit. Implementace .NET je kompatibilní s Perlem 5 a podporuje porovnávání zprava doleva a kompilaci za běhu.

1. Zpracování XML

Třída XmlDocument v oboru názvů System.Xml poskytuje funkce pro analýzu a procházení dokumentů XML. Podporuje jazyk XPath pro extrakci dat.

Nástroj HttpUtility

Třída HttpUtility je velmi důležitá statická třída používaná pro kódování a dekódování argumentů URL při zpracování webových požadavků. Jednou z obzvláště užitečných metod je HtmlDecode, která nahrazuje entity HTML jejich ekvivalentními znaky Unicode.

Tvůrce řetězců

Ani nepřemýšlejte o zřetězení několika řetězců ve smyčce bez použití třídy StringBuilder. Interně používá pole znaků a je extrémně optimalizovaný. Samozřejmě, že zápis řetězců přímo do datového proudu, pokud je to možné, zabraňuje vysoké spotřebě paměti.

.NET 2.0

Generik

C# je velmi typově bezpečný jazyk. Obecné algoritmy jsou abstrahované a vyžadují specifické vlastnosti typu. Tyto vlastnosti mohou být popsány rozhraním nebo abstraktní třídou. Nejběžnější je například IEnumerable<T>, který představuje kolekci objektů.

Protokol událostí

EventLog je jednotný protokolovací systém pro Windows. Namísto ručního vytváření a zkracování souborů protokolu nebo filtrování a kategorizace dat zpracovává tyto úlohy třída EventLog.

Správce konfigurace

Třída ConfigurationManager obsahuje připojovací řetězce a další konstanty, které můžete chtít změnit bez nutnosti opětovné kompilace. Odkazované sestavení DLL má také přístup ke konfiguračnímu souboru hlavního spustitelného sestavení. V ASP.NET je konfiguračním souborem soubor web.config.

SQL Server

Uložené procedury SQL Server můžete psát v jazycích .NET. To může být někdy užitečné, ale sestavení .NET musí být uloženo v databázi pomocí příkazu T-SQL. Není však omezena na verzi 2.0; Podporovány jsou také novější verze .NET.

Typy s možnou hodnotou null

Existují odkazové typy a typy hodnot. Tento rozdíl je velmi důležitý ve světě C++, ale v C# je méně často problémem. Odkazové typy jsou objekty, zatímco hodnotové typy zahrnují int, long, byte, bool, short, char atd. Ve výchozím nastavení lze přiřadit pouze odkazové typy null, protože odkazují na umístění v paměti. Hodnotové typy jsou na druhé straně inicializovány s výchozí hodnotou, což může být někdy nepříjemné. To je místo, kde se hodí typy s možnou hodnotou null.

.NET 3.0

Jazyk XAML

XAML umožňuje vytvořit uživatelské rozhraní v jazyce podobném HTML. Tento deklarativní přístup má mnoho výhod. Jednou z nich je datová vazba, která je nezbytná pro návrhový vzor MVVM. XAML je také akcelerován grafickou kartou, díky čemuž je velmi rychlý.

Webové služby

Webové služby jsou užitečné pro vyvolání vzdálených metod na serveru z klienta. Jsou standardizované, takže jsou ideální pro scénáře interoperability. Tyto služby se často označují jako služby WCF (Windows Communication Foundation).

Pracovní postup

Pracovní postup je model aktivity, který může představovat cokoli od obchodního procesu až po sestavení Team Foundation Server. Výhodou je, že aktivity jsou definovány deklarativně pomocí XAML namísto kódu. To umožňuje provádět úpravy stejně snadno jako změnu konfiguračního souboru, aniž by bylo nutné je znovu kompilovat.

Zpracování krmiv

Třída SyndicationFeed poskytuje podporu pro syndikační formáty RSS 2.0 a Atom 1.0.

.NET 3.5

Jazykově integrovaný dotaz

LINQ je zabijácká funkce pro jiné jazyky a jakmile si na ni zvyknete, musíte ji mít. LINQ je jako SQL pro objektově orientované programování. Operace jako třídění, přebírání horních položek n a hledání položek, které splňují určité podmínky, lze pomocí LINQ provádět velmi snadno a elegantně na jednom řádku.

Entity Framework

Když se naučíte LINQ a uvědomíte si, že je mnohem pohodlnější než SQL, budete chtít používat LINQ pro databázové dotazy. K tomu je Entity Framework vytvořen. Od verze 4 můžete své třídy psát tak, aby odpovídaly databázovým tabulkám a používaly je místo databázového schématu. Můžete z nich také vygenerovat schéma databáze, které se nazývá přístup Code-First. Pokud budete později potřebovat aktualizovat schéma databáze, můžete použít migraci databází. Tato jednoduchá metoda popisuje změny schématu a automaticky spravuje migrace na nejnovější schéma pomocí Entity Frameworku.

Zpracování XML

Třída XDocument v oboru názvů System.Xml.Linq je navržena pro použití s LINQ. XDocument poskytuje rozhraní API v paměti namísto streamovaných.

Reaktivní rozšíření

Rx je knihovna pro vytváření asynchronních programů a programů založených na událostech pomocí pozorovatelných kolekcí a operátorů dotazů ve stylu LINQ. Zatím není integrován do .NET Frameworku, ale je dostatečně významný, aby zde byl uveden. Na rozdíl od TPL, které bylo představeno později, je Rx navržen pro práci s datovými toky, zatímco TPL je obeznámen se vzorcem výrobce-spotřebitel.

.NET 4.0

Spravovaný rámec rozšiřitelnosti

MEF je integrován do rozhraní .NET Framework v oboru názvů System.ComponentModel.Composition. Umožňuje používat assemblies jako moduly. Když potřebujete vytvořit modulární systém, MEF se postará o sestavení všech modulů.

Paralelní rozšíření

Mezi paralelní rozšíření patří Parallel LINQ (PLINQ) a Task Parallel Library (TPL). Když máte hodně práce, vyplatí se použít přístup založený na úkolech. Rozdělte práci na mnoho malých úloh a spusťte je podle potřeby. Spouštějte je postupně nebo paralelně, bez ruční správy vláken. Třída Parallel se stará o počet procesorů a efektivní počet souběžných vláken. Při programování na této úrovni byste měli používat vhodné třídy kolekcí, jako jsou například souběžné kolekce v oboru názvů System.Collections.Concurrent.

Dynamické jazykové běhové prostředí

Typ dynamic můžete použít, když potřebujete pracovat s prostředím s chybějícím typem, dynamickými jazyky nebo jinými scénáři. Je velmi užitečný při interakci s prostředím modelu COM, protože neposkytuje technologii IntelliSense.

Opožděná inicializace

Pokud program obsahuje něco časově náročného na inicializaci, co nemusí být použito během životnosti programu, je použití líné inicializace velmi dobrý nápad. Objekt Lazy<T> je inicializován při prvním přístupu.

.NET 4.5

Asynchronní vzor

Asynchronní programování bylo v .NET vždy možné, ale až do .NET 4.5 bylo těžkopádné. Tato verze zavedla klíčové slovo await, podobné operátoru F# pro dopředné potrubí. Když vlákna pouze čekají na odpověď serveru, nedělají nic jiného, než že spotřebovávají prostředky stroje. Samostatná vlákna jsou vhodná pro velké výpočetní úlohy, ale ne pro čekání a blokování. Klíčové slovo await znamená: „Hej, to bude chvíli trvat, mezitím udělej něco užitečného.“

Jednoduché webové programovací rozhraní

Protokol HTTP se stal rozšířeným standardem pro výměnu dat díky svým užitečným funkcím, které jiné protokoly postrádají. Používejte metody, které k manipulaci s daty přebírají jeden argument Uri. Například:

Zápis objektů JavaScript

JSON se ve srovnání s XML stal odlehčeným formátem serializace univerzálních objektů. Třída JsonObject je protějškem velmi robustní knihovny Json.NET používané ve starších verzích .NET.

Formát AtomPub

Třída AtomPubClient umožňuje přístup HTTP CRUD k webovým prostředkům pomocí protokolu AtomPub.

Zpracování krmiv

Stejně jako její předchůdce poskytuje třída SyndicationClient podporu pro syndikační formáty RSS 2.0 a Atom 1.0.

Zpracování XML

Třída XmlDocument v oboru názvů Windows.Data.Xml.Dom poskytuje snadnější manipulaci s dokumenty XML než dříve. Je inspirován objektovým modelem HTML dokumentu jazyka JavaScript a obsahuje metody GetElementById a GetElementsByTagName. Weboví vývojáři pravděpodobně ocení přístup, který tento kurz poskytuje.

Tok dat TPL

Tok dat TPL (TDF), který se nachází v oboru názvů System.Threading.Tasks.Dataflow, je základní vrstvou pro asynchronní a souběžné programování pomocí Task poskytovaného v knihovně Task Parallel Library. Poskytuje přístup na vysoké úrovni, který je nezbytný pro správu velkého množství dat.