Co je .NET? Úvod a přehled

.NET je bezplatná open source vývojová platforma pro vytváření mnoha druhů aplikací, jako jsou:

Sdílení funkcí mezi různými aplikacemi a typy aplikací pomocí knihoven tříd

S .NET vypadají soubory kódu a projektu stejně bez ohledu na to, jaký typ aplikace chcete. U každé aplikace máte přístup ke stejnému modulu runtime, rozhraní API a jazyku.

Pro více platforem

Aplikace .NET můžete vytvářet pro mnoho operačních systémů, včetně:

  • Windows
  • macOS
  • Linux
  • Android
  • iOS
  • tvOS
  • watchOS

Mezi podporované architektury procesorů patří:

  • x64
  • x86
  • ARM32
  • ARM64

.NET umožňuje používat funkce specifické pro platformu, jako jsou rozhraní API operačního systému. Příklady jsou Windows Forms a WPF na Windows a nativní vazby na každou mobilní platformu z Xamarinu.

Další informace najdete v tématu Podporované zásady životního cyklu operačního systému aKatalog .NET RID.

Zdarma a open source

.NET je bezplatné a open source s využitím licencí MIT a Apache 2. .NET je projekt . NET Foundation.

Další informace najdete v seznamu úložišť projektů na GitHub.com.

Podpora

.NET podporuje Microsoft na Windows, macOS a Linuxu. Druhé úterý v měsíci se pravidelně aktualizuje z bezpečnostních a kvalitních.

Binární distribuce .NET od Microsoftu se sestavují a testují na serverech v Azure udržovaných Microsoftem a dodržují technické a bezpečnostní postupy Microsoftu.

Red Hat podporuje .NET v Red Hat Enterprise Linuxu (RHEL). Red Hat a Microsoft spolupracují, aby zajistili, že .NET Core funguje dobře na RHEL.

Tizen podporuje .NET na platformách Tizen.

Další informace najdete v tématu Verze a podpora pro .NET Core a .NET 5.

.NET Core, .NET Framework, Mono, UPW

.NET má různé varianty, formálněji označované jako implementace. .NET 5+ (včetně .NET Core) je nejnovější implementace a běží na libovolné platformě. .NET Framework je původní implementace rozhraní .NET a běží pouze na Windows. Mono se používá, když se vyžaduje malý modul runtime. Univerzální Windows platformy (UPW) se používá k vytváření moderních Windows aplikací.

Každá implementace zahrnuje modul runtime a knihovnu tříd. Může také zahrnovat aplikační architektury a vývojové nástroje.

.NET Standard není implementace rozhraní .NET, ale specifikace rozhraní API, která umožňuje vývoj knihoven tříd pro více implementací rozhraní .NET.

Další informace najdete v tématu Implementace .NET.

Nástroje a produktivita

.NET nabízí výběr jazyků, integrovaných vývojových prostředí (ICE) a dalších nástrojů.

Programovací jazyky

.NET podporuje tři programovací jazyky:

  • C#

    C# (vyslovuje se "See Sharp") je moderní, objektově orientovaný a typově bezpečný programovací jazyk. Jazyk C# má své kořeny v rodině jazyků C a programátorům v jazyce C, C++, Javě a JavaScriptu je hned povědomé.

  • F#

    F# je open source, více platforem, interoperabilní programovací jazyk pro psaní stručných, robustních a výkonných kódů. Místo podrobností o programování se soustředíte na doménu vašeho problému. Programování v F# je orientované na data, kde kód zahrnuje transformaci dat pomocí funkcí.

  • Visual Basic

    V jazycích .NET je syntaxe jazyka Visual Basic nejblíže běžnému lidskému jazyku, což usnadňuje učení. Na rozdíl od jazyků C# a F#, pro které Microsoft aktivně vyvíjí nové funkce, je Visual Basic stabilní. Visual Basic nepodporuje webové aplikace, ale podporuje se pro webová rozhraní API.

Tady jsou některé možnosti, které jazyky .NET podporují:

Prostředí IDE

Mezi integrovaná vývojová prostředí pro .NET patří:

  • Visual Studio

    Spouští se pouze Windows počítači. Má rozsáhlou integrovanou funkci určenou pro práci s .NET. Edice Community je zdarma pro studenty, open source přispěvatele a jednotlivce.

  • Visual Studio Code

    Běží na Windows, macOS a Linuxu. Free a open source. Rozšíření jsou k dispozici pro práci s jazyky .NET.

  • Visual Studio pro Mac

    Spustí se jenom v systému macOS. Pro vývoj aplikací a her .NET pro iOS, Android a web.

  • GitHub Codespaces

    Online prostředí Visual Studio Code, aktuálně v beta verzi.

Sada SDK a moduly runtime

Sada .NET SDK je sada knihoven a nástrojů pro vývoj a spouštění aplikací .NET.

Když si stáhnete .NET, můžete zvolit sadu SDK nebo modul runtime, jako je modul runtime .NET nebo ASP.NET Core runtime.

  • Nainstalujte modul runtime, což je prostředí pro spouštění spravovaného programu, na počítač, na který se chcete připravit na spouštění aplikací .NET.
  • Nainstalujte sadu SDK na počítač, který chcete použít pro vývoj. Když si stáhnete sadu SDK, automaticky s ní získáte moduly runtime.

Stažení sady SDK zahrnuje následující komponenty:

  • Rozhraní příkazového řádku .NET Nástroje příkazového řádku, které můžete použít pro místní vývoj a skripty kontinuální integrace.
  • dotnetdotnet. Příkaz rozhraní příkazového řádku, který spouští aplikace závislé na rozhraní.
  • Kompilátory programovacího jazykaRoslyn a F#.
  • Modul MSBuild sestavení.
  • Modul runtime .NET. Poskytuje systém typů, načítání sestavení, systém uvolňování paměti, nativní interoperabilitu a další základní služby.
  • Knihovny modulu runtime. Poskytuje primitivní datové typy a základní nástroje.
  • Modul ASP.NET Core runtime. Poskytuje základní služby pro aplikace připojené k internetu, jako jsou webové aplikace, aplikace IoT a mobilní back-endy.
  • Desktopový modul runtime. Poskytuje základní služby pro Windows desktopové aplikace, včetně Windows Forms a WPF.

Stažení modulu runtime zahrnuje následující komponenty:

  • Volitelně můžete desktop nebo ASP.NET Core runtime.
  • Modul runtime .NET. Poskytuje systém typů, načítání sestavení, systém uvolňování paměti, nativní interoperabilitu a další základní služby.
  • Knihovny modulu runtime. Poskytuje primitivní datové typy a základní nástroje.
  • dotnetdotnet. Příkaz rozhraní příkazového řádku, který spouští aplikace závislé na rozhraní.

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

Project systému a MSBuild

Aplikace .NET je sestavená ze zdrojového kódu pomocí MSBuild. Soubor projektu (.csproj, .fsproj nebo .vbproj) určuje cíle a přidružené úlohy, které jsou zodpovědné za kompilaci, balení a publikování kódu. Existují identifikátory sady SDK, které odkazují na standardní kolekce cílů a úloh. Použití těchto identifikátorů pomáhá udržovat soubory projektu malé a snadno se s ním pracuje. Tady je například soubor projektu pro konzolovou aplikaci:

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

A tady je jeden pro webovou aplikaci:

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>net6.0</TargetFramework>
  </PropertyGroup>
</Project>

V těchto příkladech atribut Sdk elementu Project určuje sadu cílových MSBuild úkolů, které sestaví projekt. Element TargetFramework určuje verzi rozhraní .NET, na které aplikace závisí. Soubor projektu můžete upravit a přidat další cíle a úkoly specifické pro projekt.

Další informace najdete v tématu Přehled sady .NET Project SDK aCílová rozhraní.

CI/CD

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 a nástrojů v kontinuální integraci (CI).

NuGet

NuGet je open source správce balíčků určený pro .NET. Balíček NuGet je soubor .zips příponou , který obsahuje zkompilovaný kód (knihovny DLL), další soubory související s tímto kódem a popisný manifest, který obsahuje informace, jako je číslo verze balíčku. Vývojáři s kódem, který umožňuje vytvářet balíčky a publikovat je nuget.org nebo privátním hostiteli. Vývojáři, kteří chtějí použít sdílený kód, přidávají do svého projektu balíček a potom volají rozhraní API zveřejněné balíčkem v kódu projektu.

Další informace najdete v NuGet dokumentaci.

.NET Interactive

.NET Interactive je skupina nástrojů rozhraní příkazového řádku a rozhraní API, která uživatelům umožňují vytvářet interaktivní prostředí napříč webem, markdownem a poznámkovými bloky.

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

Modely spouštění

Aplikace .NET spouštěné spravovaný kód v prostředí runtime označované jako Common Language Runtime (CLR).

CLR

.NET CLR je modul runtime pro více platforem, který zahrnuje podporu pro Windows, macOS a Linux. MODUL CLR zpracovává přidělování a správu paměti. MODUL CLR je také virtuální počítač, který nejen spouští aplikace, ale také generuje a kompiluje kód pomocí kompilátoru JIT (Just-in-Time).

Další informace najdete v tématu Přehled modulu CLR (Common Language Runtime).

Kompilátor JIT a IL

Jazyky .NET vyšší úrovně, například C#, se kompilují do sady instrukcí bez hardwaru, která se nazývá Intermediate Language (IL). Při spuštění aplikace kompilátor JIT přeloží IL na strojový kód, který procesor rozumí. Kompilace JIT probíhá na stejném počítači, na které se kód bude spouštět.

Vzhledem k tomu, že kompilace JIT probíhá během provádění aplikace, je doba kompilace součástí běhu. Proto musí kompilátory JIT vyvážit čas strávený optimalizací kódu proti úsporám, které může výsledný kód vytvořit. Kompilátor JIT ale zná skutečný hardware a může vývojářům zabránit v dodání různých implementací pro různé platformy.

Kompilátor JIT .NET může provést vrstvené kompilace, což znamená, že může překompilovat jednotlivé metody za běhu. Tato funkce umožňuje rychle kompilovat, zatímco je stále schopná vytvořit vysoce vyladěnou verzi kódu pro často používané metody.

Další informace najdete v tématu Spravovaný proces spouštění aVrstvená kompilace.

Kompilátor AOT

Výchozí prostředí pro většinu úloh .NET je kompilátor JIT, ale .NET nabízí dvě formy dopředné kompilace (AOT):

  • Některé scénáře vyžadují 100% kompilaci AOT. Příkladem je iOS.
  • V jiných scénářích je většina kódu aplikace zkompilovaná pomocí AOT, ale některé zkompilovány jitem. Některé vzory kódu nejsou pro AOT vhodné (například obecné typy). Příkladem této formy kompilace AOT je možnost publikování připraveno ke spuštění. Tato forma AOT nabízí výhody AOT bez nevýhod.

Automatická správa paměti

Uvolňování paměti (GC) spravuje přidělování a uvolňování paměti pro aplikace. Pokaždé, když váš kód vytvoří nový objekt, modul CLR přidělí paměť pro objekt ze spravované haldy. Dokud je ve spravované haldě k dispozici adresní prostor, modul runtime bude pokračovat v přidělování prostoru pro nové objekty. Pokud nezůstane dostatek volného adresního prostoru, gc vyhledá objekty ve spravované haldě, které už aplikace nevyuží používaná. Pak znovu získá paměť.

Uvolňování paměti je jednou ze služeb CLR, které pomáhají zajistit bezpečnost paměti. Program je bezpečný pro paměť, pokud přistupuje pouze k přidělené paměti. Modul runtime například zajišťuje, že aplikace nepřistupuje k nepřidělené paměti mimo hranice pole.

Další informace najdete v tématu Automatická správa paměti aZáklady uvolňování paměti.

Práce s nespravovanými prostředky

Někdy kód potřebuje odkazovat na nespravované prostředky. Nespravované prostředky jsou prostředky, které modul runtime .NET automaticky neudržuje. Například popisovač souboru je nespravovaný prostředek. Objekt FileStream je spravovaný objekt, ale odkazuje na popisovač souboru, který není spravován. Až budete hotovi s používáním FileStream, musíte popisovač souboru explicitně uvolnit.

V rozhraní .NET implementují objekty, které odkazují na nespravované prostředky, IDisposable rozhraní . Až budete s používáním objektu hotovi, Dispose() zavoláte metodu objektu , která zodpovídá za uvolnění nespravovaných prostředků. Jazyky .NET poskytují pohodlný příkaz using (using, F#, VB), který zajišťuje volání metody.

Další informace najdete v tématu Vyčištění nespravovaných prostředků.

Modely nasazení

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

  • Publikování aplikace jako samostatného vytvoří spustitelný soubor, který obsahuje modul runtime a knihovny . NET, aplikaci a její závislosti. Uživatelé aplikace ji mohou spustit na počítači, na který není nainstalovaný modul runtime .NET. Samostatné aplikace jsou specifické pro platformu a volitelně je možné je publikovat pomocí kompilace AOT.

  • Publikování aplikace jako závislé na rozhraní vytvoří spustitelný soubor a binární soubory (.dll soubory), které obsahují pouze samotnou aplikaci a její závislosti. Uživatelé aplikace musí modul runtime .NET nainstalovat samostatně. Spustitelný soubor je specifický pro platformu, ale .dll soubory aplikací závislých na rozhraní jsou pro více platforem.

    Můžete nainstalovat několik verzí modulu runtime vedle sebe a spouštět aplikace závislé na rozhraní, které cílí na různé verze modulu runtime. Další informace najdete v tématu Cílová rozhraní.

Spustitelné soubory jsou vytvářeny pro konkrétní cílové platformy, které zadáte pomocí identifikátoru modulu runtime (RID).

Další informace najdete v tématu Přehled publikování aplikací .NET aÚvod do .NET a Dockeru.

Knihovny modulu runtime

.NET má rozsáhlou standardní sadu knihoven tříd označované jako knihovny modulu runtime, knihovny architektury nebo knihovna základních tříd (BCL). Tyto knihovny poskytují implementace pro mnoho typů a nástrojů pro obecné účely a specifické pro úlohy.

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

Další informace najdete v přehledu knihoven modulu runtime. Zdrojový kód knihoven je v úložišti GitHub dotnet/runtime.

Rozšíření knihoven modulu runtime

Knihovny pro některé běžně používané funkce aplikací nejsou zahrnuté v knihovnách modulu runtime, ale jsou k dispozici v NuGet, jako jsou například následující:

Balíček NuGet Dokumentace
Microsoft.Extensions.Hosting Správa životnosti aplikací (obecný hostitel)
Microsoft.Extensions.DependencyInjection Injektáž závislostí (DI)
Microsoft.Extensions.Configuration Konfigurace
Microsoft.Extensions.Logging Protokolování
Microsoft.Extensions.Options Vzor možností

Další informace najdete v úložišti dotnet/extensions v GitHub.

Přístup k datům

.NET poskytuje objektový/relační mapovač (ORM) a způsob, jak SQL dotazy v kódu.

Entity Framework Core

Entity Framework (EF) Core je open source technologie pro přístup k datům pro více platforem, která může sloužit jako ORM. EF Core umožňuje pracovat s databází odkazem na objekty .NET v kódu. Zmenšuje množství kódu pro přístup k datům, který byste jinak potřebovali napsat a otestovat. EF Core podporuje mnoho databázových strojů.

Další informace najdete v tématu Entity Framework Corea poskytovatelé databází.

LINQ

Jazykově integrovaný dotaz (LINQ) umožňuje psát deklarativní kód pro provoz s daty. Data mohou být v mnoha podobách (například objekty v paměti, databáze SQL nebo dokument XML), ale kód LINQ, který píšete, se obvykle neliší od zdroje dat.

Další informace najdete v tématu Přehled LINQ (Language Integrated Query).

Terminologie

Pokud chcete porozumět dokumentaci k .NET, pomůže vám to zjistit, jak se používání některých termínů v průběhu času změnilo.

.NET Core a .NET 5+

V roce 2002 společnost Microsoft vydala .NET Framework, vývojovou platformu pro vytváření Windows aplikací. V současné .NET Framework verze 4.8 a Microsoft ho stále podporuje.

V roce 2014 microsoft představil .NET Core jako nástupce open source pro více platforem .NET Framework. Tato nová implementace .NET uchová název .NET Core až do verze 3.1. Další verze za .NET Core 3.1 měla název .NET 5. Proto .NET 5+ (znaménko plus znamená "a novější verze") a .NET Core odkazují na jednu a stejnou implementaci .NET.

Verze číslo 4 se přeskočila, aby nedocházelo k nejasnostem mezi .NET Framework a .NET Core/5+. Název Core byl vyřazen z .NET Core, aby bylo zřejmé, že tato implementace .NET je teď hlavní. "Core" zůstává ve verzích 5 a novějších ASP.NET Corea Entity Framework Core.

Dokumentace také odkazuje na .NET Standard. .NET Standard je specifikace rozhraní API, která umožňuje vývoj knihoven tříd pro více implementací rozhraní .NET.

Přetížené termíny

Některá terminologie pro .NET může být matoucí, protože stejné slovo se používá různými způsoby v různých kontextech. Tady je několik nejvýznamnějších instancí:

  • .NET

    .NET je zastřešující termín pro celou vývojovou platformu, včetně všech implementací .NET. Termín . NET může v poslední době také odkazovat konkrétně na implementaci .NET, která zahrnuje všechny verze .NET Core (1.0–3.1) a novější verze, které z názvu vypustí "Core", například .NET 5 a 6.

  • Runtime

    Kontext Význam pojmu "runtime"
    Common Language Runtime (CLR) Prostředí pro spouštění spravovaného programu. Operační systém je součástí běhového prostředí, ale není součástí modulu runtime .NET.
    Modul runtime .NET na stránce pro stažení .NET Knihovny modulu CLRa modulu runtime, které společně poskytují podporu pro spouštění aplikací závislých na rozhraní . Stránka také nabízí možnosti modulu runtime pro ASP.NET Core serverové aplikace a Windows desktopové aplikace.
    Identifikátor modulu runtime (RID) Platforma operačního systému a architektura procesoru, na které běží aplikace .NET. Příklad: Windows x64, Linux x64.
  • architektura

    Kontext Význam pojmu "framework"
    .NET Framework původní Windows pouze implementace rozhraní .net. "Architektura" je velkými písmeny.
    Cílová architektura Kolekce rozhraní API, na kterých závisí aplikace .NET nebo knihovna Příklady: .NET Core 3,1, .NET Standard 2,0
    Moniker cílového rozhraní (TFM) TFM je standardizovaným formátem tokenu pro určení cílové architektury aplikace nebo knihovny .NET. příklad: net462 pro .NET Framework 4.6.2.
    aplikace závislá na rozhraní Aplikace, která se dá spustit jenom na počítači, na kterém jste nainstalovali modul runtime ze stránky pro stažení v .NET. "Architektura" v tomto použití je stejná jako "modul runtime", který stáhnete ze stránky pro stažení v rozhraní .NET.
    knihovny architektury Někdy slouží jako synonymum pro běhové knihovny.
  • Sada SDK

    Kontext To znamená "SDK"
    Sada SDK na stránce pro stažení rozhraní .NET Kolekce nástrojů a knihoven, které stáhnete a nainstalujete pro vývoj a spouštění aplikací .NET. obsahuje rozhraní příkazového řádku, MSBuild, modul runtime .net a další komponenty.
    Projekt ve stylu sady SDK sada MSBuild cíle a úlohy, které určují, jak sestavit projekt pro konkrétní typ aplikace. Sada SDK v tomto smyslu je určena pomocí Sdk atributu Project elementu v souboru projektu.
  • platformy

    Kontext význam "platformy"
    různé platformy v tomto termínu znamená "platforma" operační systém a hardware, na kterém běží, například Windows, macOS, Linux, iOS a Android.
    Platforma .NET Použití se liší. odkaz může být jedna implementace rozhraní .net (například .NET Framework nebo .net 5 +) nebo k předanému konceptu rozhraní .net, včetně všech implementací.
  • Rozhraní příkazového řádku

    Akronym pro Význam
    Rozhraní příkazového řádku Sada nástrojů pro vývoj, sestavování, spouštění a publikování aplikací .NET pro různé platformy.
    Common Language Infrastructure Specifikace, kterou modul CLR implementuje.

Další informace o terminologii rozhraní .NET naleznete v glosáři rozhraní .NET.

Pokročilé scénáře

Následující části vysvětlují některé funkce rozhraní .NET, které jsou užitečné v pokročilých scénářích.

Nativní spolupráce

Každý operační systém obsahuje aplikační programovací rozhraní (API), které poskytuje systémové služby. Rozhraní .NET poskytuje několik způsobů, jak tato rozhraní API volat.

Hlavní způsob, jak pracovat s nativními rozhraními API, je prostřednictvím "vyvolání platformy" nebo volání nespravovaného kódu pro krátké. volání nespravovaného volání jsou podporovaná na platformách Linux a Windows. pouze Windows způsob spolupráce je známý jako zprostředkovatel komunikace s objekty com, který pracuje s komponentami com ve spravovaném kódu. Je postavená na infrastruktuře volání nespravovaného systému, ale funguje v nestejném počtu různých způsobů.

Další informace najdete v tématu nativní interoperabilita.

Nebezpečný kód

V závislosti na jazykové podpoře vám modul CLR umožní přístup k nativní paměti a provádění aritmetického ukazatele pomocí unsafe kódu. Tyto operace jsou potřeba pro určité algoritmy a interoperabilitu systému. I když výkonná, použití nebezpečného kódu se nedoporučuje, pokud není nutné pracovat s rozhraními API systému ani implementovat nejúčinnější algoritmus. Nezabezpečený kód nesmí provádět stejný způsob v různých prostředích a také ztratí výhody uvolňování paměti a bezpečnosti typů. Doporučuje se co nejvíc a centralizace nezabezpečeného kódu a testování kódu.

Další informace naleznete v tématu nezabezpečený kód a ukazatele.

Další kroky