Je to začátek nové éry tvorby softwaru v ekosystému Microsoftu. Toto restartování posune .NET tam, kde bylo původně zamýšleno. Jeho účel je jednoduchý – dosáhnout každé platformy a každého operačního systému pomocí jazyka C# od Visual Studia. Tak proč to trvalo tak dlouho? No, tento cíl je všechno, jen ne jednoduchý. To dokázal pouze jazyk C++. .NET je evolucí světa C++ a COM . Dnes .NET konečně podporuje nativní kompilaci.
Předchozí éra .NET: C++ & COM
Svět C++ má několik nevýhod. Neexistuje žádná vestavěná správa paměti, žádný společný systém typů a MFC není multiplatformní. Žádná knihovna není přenosná na jinou architekturu procesoru, než pro kterou byla zkompilována.
Éra .NET Frameworku: JIT & GC
Rozhraní .NET Framework bylo určeno k odstranění nevýhod světa C++ a COM. Původně se jmenovala COM 2.0. V tom je velmi úspěšná. Kompilace just-in-time zajišťuje přenositelnost knihoven mezi více architekturami procesorů. Systém garbage collector výrazně usnadňuje programování. A konečně, asynchronní programovací vzor založený na úlohách vytváří vrstvu abstrakce vláken, takže plýtvání vlákny již není nutné (a nedochází k vybíjení baterie).
Někdo by řekl, že .NET Framework nebyl multiplatformní. Ve skutečnosti to tak bylo – SSCLI (pro systémy Windows, OS X a FreeBSD), DotGNU (pro systémy Linux, Windows, Solaris, BSD a OS X a pro architektury x86, s390, SPARC, HPPA, StrongARM a PowerPC) a Mono (pro systémy Android, Linux, BSD, OS X, Windows a Solaris a architektury x86, x64, s390, SPARC, PowerPC, MIPS, ARM a IA-64). Pouze jedna věc byla špatně – Windows SDK byly integrovány do .NET Frameworku. Bylo velmi obtížné portovat modely vykreslování Windows (GDI+ a DirectX) nebo API webového serveru (ISAPI) na jiné operační systémy. Navíc Microsoft nepomohl, ale spíše zažaloval za porušení softwarových patentů.
.NET Framework podporuje mnoho platforem (mikrokontroléry, chytré telefony, počítače nebo servery); proto již neexistuje jediné rozhraní .NET Framework. Vzhledem k tomu, že existují různé profily, nebylo možné vytvořit jedinou knihovnu, na kterou by mohly odkazovat všechny profily rozhraní .NET Framework. (První pokus – Přenosné knihovny tříd – tento problém ve skutečnosti nikdy nevyřešil.)
Éra .NET Core: nativní a multiplatformní
.NET Core je plnohodnotný .NET Framework bez sad SDK systému Windows a několika skvělých funkcí. Co nabízí?
- Společný typový systém
- Běžné zpracování výjimek
- Společný balicí systém
- Správa paměti
- Kompilace do bytecode (se závislostí na runtime)
- Kompilace do nativního kódu (bez přenositelnosti)
Pojďme si ujasnit, co znamená přenositelnost v kontextu .NET:
- Kompilátor JIT (Just-in-time) může spustit libovolné sestavení bajtového kódu. To znamená, že cílení na Any CPU umožňuje spuštění sestavení v libovolném operačním systému nebo architektuře procesoru, pro kterou je implementováno rozhraní .NET Core (běhové prostředí).
- Nativní aplikace je jeden spustitelný soubor. Nezávisí na žádném běhovém prostředí. To znamená, že nemusíte kontrolovat existenci .NET Core (běhového prostředí) na cílovém počítači. Kompromisem je přenositelnost na jiné platformy.
- Sestavení může odkazovat na jiné sestavení původně napsané v jiném jazyce .NET. To znamená, že aplikace v jazyce C# může odkazovat na knihovnu napsanou v jazyce F# a naopak.
Které skvělé funkce jsem zmínil?
- Kompilátor jako služba (Roslyn)
- Vestavěný webový server pro ASP.NET Core aplikace (Kestrel)
- Vývoj softwaru s otevřeným zdrojovým kódem (přes GitHub)
- Podpora společností Microsoft a Red Hat
Vizuální studio
Visual Studio je integrované vývojové prostředí (IDE), které je k dispozici zdarma pro všechny uživatele. Existují dvě hlavní verze – Visual Studio (pro Windows) a Visual Studio Code (pro Linux, macOS a Windows). Zatímco Visual Studio je velmi složitý nástroj s vlastní správou zdrojů, sledováním chyb a systémem plánování projektů, Visual Studio Code je mnohem jednodušší. Jedná se o textový editor se zvýrazňováním syntaxe, IntelliSense, laděním a správou verzí Git. Všechny sady SDK od Microsoftu rozšiřují Visual Studio o šablony projektů, knihovny a nástroje.
.NET Standard
Bytecode – CIL – je standardizován ve standardu ECMA 355. Podobně jsou knihovny – BCL – standardizovány v sadě rozhraní API CoreFX. Například síťový zásobník je společný pro mnoho zařízení a platforem, ale všechny operační systémy mají různá síťová systémová volání. Třída HttpClient poskytuje nezbytnou abstrakci. Rozhraní .NET Standard definuje metody, které má HttpClient. V dokumentaci je popsáno jeho správné chování.
Vývoj webových aplikací
Klasické ASP.NET webové aplikace běží na IIS (webový server), který je součástí Windows Serveru. Společnost Microsoft nepodporovala spouštění aplikací ASP.NET v jiných operačních systémech než Windows. To se změnilo. Závislost na službě IIS byla nahrazena webovým serverem Kestrel.
Kestrel je součástí ASP.NET Core. ASP je (v kontextu .NET Core) webová sada SDK. Je napsaný v .NET Core a je optimalizovaný pro vysoký výkon, protože uvolňování paměti a neměnnost řetězců se obtížně přizpůsobí výkonným sítím. Kestrel běží všude, kde běží .NET Core (běhové prostředí) (Windows, Windows Server, macOS, RHEL, Ubuntu, Debian, Fedora, CentOS a openSUSE). V současné době je podporována pouze kompilace bytekódu. Nativní kompilace bude podporována později.
Vývoj pro Windows
Tradiční rozhraní .NET Framework bude stále podporováno. Implementuje také .NET Standard, takže můžete snadno vytvořit knihovnu, která cílí na .NET Framework i .NET Core. Zatímco .NET Framework se aktualizuje prostřednictvím služby Windows Update, .NET Core se aktualizuje pomocí aplikace (v případě nativní kompilace) nebo správcem systému aktualizací balíčku .NET Core (v případě kompilace bajtkódu).
V současné době nejsou k dispozici žádné sady SDK pro .NET Core, které by cílily na stolní počítače se systémem Windows, protože tyto sady SDK jsou součástí rozhraní .NET Framework (Windows Forms a WPF). Sada SDK pro aplikace pro Windows Store se nazývá Universal Windows App Development Tools.
Budoucí vývoj
První patch (1.0.1) by měl dorazit v srpnu 2016. Zaměří se na vylepšení výkonu a opravy chyb.
První dílčí aktualizace (1.1.0) změní systém sestavení z DNX na MSBuild, který se portuje do .NET Core. Tato aktualizace je naplánována na Q4 2016 / Q1 2017.
První velká aktualizace (2.0) by mohla být vydána v polovině roku 2017. Sjednotí všechna běžná rozhraní API a třídy napříč .NET Framework, UPW, Xamarin.iOS a Xamarin.Android do .NET Standard 2.0.