Co je .NET? Úvod a přehled

.NET je bezplatná multiplatformní open source vývojářská platforma pro vytváření mnoha druhů aplikací. Platforma .NET je postavená na vysoce výkonném modulu runtime , který v produkčním prostředí používá mnoho aplikací s vysokým škálováním.

Cloudové aplikace

Klientské aplikace pro různé platformy

Aplikace pro Windows

Jiné typy aplikací

Funkce

Funkce .NET umožňují vývojářům produktivně psát spolehlivý a výkonný kód.

Pomocí .NET

Aplikace a knihovny .NET se vytvářejí ze zdrojového kódu a souboru projektu pomocí rozhraní příkazového řádku .NET nebo integrovaného vývojového prostředí (IDE), jako je Visual Studio.

Následující příklad je minimální aplikace .NET:

Soubor projektu:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net7.0</TargetFramework>
  </PropertyGroup>
</Project>

Zdrojový kód:

Console.WriteLine("Hello, World!");

Aplikaci je možné sestavit a spustit pomocí .NET CLI:

% dotnet run
Hello, World!

Dá se také sestavit a spustit jako dva samostatné kroky. Následující příklad je pro aplikaci s názvem app:

% dotnet build
% ./bin/Debug/net6.0/app 
Hello, World!

Binární distribuce

  • .NET SDK – sada nástrojů, knihoven a modulů runtime pro vývoj, sestavování a testování aplikací.
  • Moduly runtime .NET – sada modulů runtime a knihoven pro spouštění aplikací.

.NET si můžete stáhnout z:

Zdarma a open source

.NET je zdarma, open source a je projekt .NET Foundation. .NET spravuje Microsoft a komunita na GitHubu v několika úložištích.

Zdrojové a binární soubory .NET jsou licencované s licencí MIT. Pro binární distribuce se ve Windows vztahují další licence .

Podpora

Microsoft podporuje .NET v operačních systémech Android, Apple, Linux a Windows. Dá se použít v architekturách Arm64, x64 a x86. Podporuje se také v emulovaných prostředích, jako je macOS Rosetta 2.

Nové verze .NET jsou vydávány ročně v listopadu. Verze .NET v lichých letech jsou Long-Term verze podpory (LTS) a jsou podporovány po dobu tří let. Verze v sudých letech jsou Standard-Term verzí podpory (STS) a podporují se po dobu 18 měsíců. Úroveň kvality, zásady zásadních změn a všechny ostatní aspekty vydaných verzí jsou stejné. Další informace najdete v tématu Verze a podpora.

Tým .NET ve společnosti Microsoft spolupracuje s dalšími organizacemi na distribuci a podpoře platformy .NET různými způsoby.

Red Hat podporuje .NET v Red Hat Enterprise Linuxu (RHEL).

Samsung podporuje .NET na platformách Tizen.

Runtime (Modul runtime)

Modul CLR (Common Language Runtime) je základem všech aplikací .NET, na které jsou postaveny. Mezi základní funkce modulu runtime patří:

  • Uvolněné.
  • Bezpečnost paměti a bezpečnost typů.
  • Podpora vysoké úrovně pro programovací jazyky
  • Návrh pro různé platformy.

.NET se někdy označuje jako modul runtime spravovaného kódu. Nazývá se spravovaný hlavně proto, že používá systém uvolňování paměti pro správu paměti a protože vynucuje typ a bezpečnost paměti. ClR virtualizuje (nebo abstrahuje) různé koncepty operačního systému a hardwaru, jako je paměť, vlákna a výjimky.

Modul CLR byl od svého vzniku navržen tak, aby byl multiplatformním modulem runtime. Byl přenesen do několika operačních systémů a architektur. Multiplatformní kód .NET obvykle není nutné znovu zkompilovat, aby bylo možné spustit v nových prostředích. Místo toho stačí nainstalovat jiný modul runtime, abyste mohli aplikaci spustit.

Modul runtime zpřístupňuje různé diagnostické služby a rozhraní API pro ladicí programy, výpisy a nástroje pro trasování a pozorovatelnost. Implementace pozorovatelnosti je primárně založená na OpenTelemetry, která umožňuje flexibilní monitorování aplikací a SRE (Site Reliability Engineering).

Modul runtime nabízí funkce zprostředkovatele komunikace ve stylu jazyka C nízké úrovně prostřednictvím kombinace volání P/Invoke, hodnotových typů a možnosti blit hodnoty přes hranice nativního/spravovaného kódu.

Jazyky

Modul runtime je navržený tak, aby podporoval více programovacích jazyků. jazyky C#, F# a Visual Basic jsou podporovány Microsoft a jsou navrženy ve spolupráci s komunitou.

  • C# je moderní programovací jazyk orientovaný na objekty a typově bezpečný. Má své kořeny v rodině jazyků C a programátoři jazyka C, C++, Java a JavaScript ho okamžitě znají.

  • F# je interoperabilní programovací jazyk pro psaní stručného, robustního a výkonného kódu. Programování v F# je orientované na data, kde kód zahrnuje transformaci dat pomocí funkcí.

  • Jazyk Visual Basic používá podrobnější syntaxi, která je blíže běžnému lidskému jazyku. Může být jednodušším jazykem, který se naučíte lidem, kteří s programováním začíná.

Kompilace

Aplikace .NET (napsané v jazyce vysoké úrovně, jako je C#) se kompilují do jazyka IL (Intermediate Language). IL je kompaktní formát kódu, který může být podporován v jakémkoli operačním systému nebo architektuře. Většina aplikací .NET používá rozhraní API podporovaná ve více prostředích a vyžaduje pouze běh modulu runtime .NET.

Il se musí zkompilovat do nativního kódu, aby se mohl spustit na procesoru, například Arm64 nebo x64. .NET podporuje modely kompilace AHEAD-Of-Time (AOT) i JIT (Just-In-Time).

  • V Androidu, macOS a Linuxu je kompilace JIT výchozí a AOT volitelná (například s ReadyToRun).
  • V iOSu je AOT povinné (s výjimkou spuštění v simulátoru).
  • V prostředíCh WebAssembly (Wasm) je AOT povinné.

Výhodou jit je, že může kompilovat aplikaci (beze změny) na instrukce procesoru a konvence volání v daném prostředí podle základního operačního systému a hardwaru. Může také kompilovat kód na vyšších nebo nižších úrovních kvality a umožnit tak lepší spouštění a výkon propustnosti ve stabilním stavu.

Výhodou AOT je, že poskytuje nejlepší spuštění aplikace a v některých případech může vést k menším nasazením. Hlavní nevýhodou je, že binární soubory musí být sestaveny pro každý samostatný cíl nasazení (stejně jako jakýkoli jiný nativní kód). Kód AOT není kompatibilní s některými vzory reflexe.

Knihovny modulu runtime

.NET obsahuje komplexní standardní sadu knihoven tříd. Tyto knihovny poskytují implementace pro mnoho typů pro obecné účely a specifické pro úlohy a funkce nástrojů.

Tady je několik příkladů typů definovaných v knihovnách modulu runtime .NET:

Další informace najdete v tématu Přehled knihoven modulu runtime.

Správce balíčků NuGet

NuGet je správce balíčků pro .NET. Umožňuje vývojářům vzájemně sdílet kompilované binární soubory. NuGet.org nabízí mnoho oblíbených balíčků od komunity .

Nástroje

Sada .NET SDK je sada knihoven a nástrojů pro vývoj a spouštění aplikací .NET. Zahrnuje modul sestavení MSBuild , kompilátor Roslyn (C# a Visual Basic) a kompilátor jazyka F# . Většina příkazů se spouští pomocí příkazu .dotnet Nástroje rozhraní příkazového řádku je možné použít pro místní vývoj a průběžnou integraci.

Řada integrovaného vývojového prostředí (IME) sady Visual Studio nabízí vynikající podporu pro .NET a jazyky C#, F# a Visual Basic.

GitHub Codespaces a funkce zabezpečení GitHub podporují .NET.

Notebooks

.NET Interactive je skupina nástrojů a rozhraní API rozhraní příkazového řádku, která uživatelům umožňují vytvářet interaktivní prostředí na webu, markdownu a poznámkových blocích.

Další informace naleznete v následujících zdrojích:

CI/CD

Nástroj MSBuild a .NET CLI je možné používat s různými nástroji a prostředími pro kontinuální integraci, jako jsou:

Další informace najdete v tématu Použití sady .NET SDK v prostředích kontinuální integrace (CI).

Modely nasazení

Aplikace .NET je možné publikovat ve dvou různých režimech:

  • Samostatné aplikace zahrnují modul runtime .NET a závislé knihovny. Můžou být jednosouborové nebo vícesouborové. Uživatelé aplikace ji můžou spustit na počítači, který nemá nainstalovaný modul runtime .NET. Samostatné aplikace vždy cílí na jeden operační systém a konfiguraci architektury.
  • Aplikace závislé na architektuře vyžadují kompatibilní verzi modulu runtime .NET, která se obvykle instaluje globálně. Aplikace závislé na architektuře je možné publikovat pro jeden operační systém a konfiguraci architektury nebo jako "přenosné" a cílit na všechny podporované konfigurace.

Aplikace .NET se ve výchozím nastavení spouští s nativním spustitelným souborem. Spustitelný soubor je specifický pro operační systém a architekturu. Aplikace je možné spustit také pomocí dotnet příkazu .

Aplikace je možné nasazovat v kontejnerech. Microsoft poskytuje image kontejnerů pro různá cílová prostředí.

Historie .NET

V roce 2002 Microsoft vydali rozhraní .NET Framework, což je vývojová platforma pro vytváření aplikací pro Windows. Rozhraní .NET Framework je dnes ve verzi 4.8 a je plně podporováno Microsoft.

V roce 2014 Microsoft představili .NET Core jako multiplatformní opensourcový nástupce rozhraní .NET Framework. Tato nová implementace .NET si zachovala název .NET Core až do verze 3.1. Další verze po .NET Core 3.1 měla název .NET 5.

Nové verze .NET budou vydávány ročně, každá o číslo vyšší. Zahrnují významné nové funkce a často umožňují nové scénáře.

Ekosystém .NET

Existuje několik variant .NET, z nichž každá podporuje jiný typ aplikace. Důvod pro více variant je částečně historický, částečně technický.

Implementace .NET (historické pořadí):

  • .NET Framework – poskytuje přístup k široké škále funkcí systémů Windows a Windows Server. Používá se také ve velkém rozsahu pro cloud computing založený na Windows. Původní rozhraní .NET.
  • Mono – multiplatformní implementace rozhraní .NET Framework. Původní komunita a open source .NET. Používá se pro aplikace pro Android, iOS a Wasm.
  • .NET (Core) – multiplatformní a open source implementace rozhraní .NET, přemýšlejte na stáří cloudu a přitom zůstává výrazně kompatibilní s rozhraním .NET Framework. Používá se pro aplikace pro Linux, macOS a Windows.

Další kroky