Úvod do technologie .NET

.NET je bezplatná Open Source vývojová platforma pro vytváření mnoha druhů aplikací, jako například:

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

V rozhraní .NET se soubory kódu a projektu hledají a chovají se stejně, bez ohledu na typ aplikace, kterou vytváříte. Pro každou aplikaci máte přístup ke stejnému běhovému prostředí, rozhraní API a jazykovým funkcím.

Různé platformy

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

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

Mezi podporované architektury procesoru patří:

  • x64
  • x86
  • ARM32
  • ARM64

.NET umožňuje používat funkce specifické pro platformu, například rozhraní API operačního systému. Příklady jsou model Windows Forms a WPF ve Windows a nativní vazby ke každé mobilní platformě z Xamarin.

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

Open source

.NET je open source pomocí licencí MIT a Apache 2. .NET je projekt rozhraní .NET Foundation.

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

Podpora

Technologie .NET je podporovaná Microsoftem v systémech Windows, macOS a Linux. 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 na Red Hat Enterprise Linux (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.

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#

    Jazyk F# podporuje funkční, objektově orientované a imperativní programovací modely.

  • 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 jenom v systému Windows. Má rozsáhlou integrovanou funkcionalitu, která je navržena 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 Linux. Bezplatný a open source. Rozšíření jsou k dispozici pro práci s jazyky .NET.

  • Visual Studio pro Mac

    Spouští se pouze v macOS. Pro vývoj aplikací a her .NET pro iOS, Android a Web.

  • GitHub Codespaces

    Prostředí online Visual Studio Code v současnosti ve verzi beta.

Sada SDK a moduly runtime

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

Když stáhnete rozhraní .NET, můžete zvolit sadu SDK nebo modul runtime, například modul runtime .net nebo modul runtime ASP.NET Core. Nainstalujte modul runtime na počítač, který chcete připravit na spouštění aplikací .NET. Nainstalujte sadu SDK na počítač, který chcete použít pro vývoj. Při stažení sady SDK automaticky získáte moduly runtime.

Stažení sady SDK obsahuje 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ývojové a průběžné skripty.
  • dotnet Ovladač. Příkaz CLI, který spouští aplikace závislé na rozhraní.
  • Kompilátory programovacích jazyků Roslyn a F # .
  • Modul sestavení MSBuild .
  • Modul runtime .NET. Poskytuje systém typů, načítání sestavení, systém uvolňování paměti, nativní spolupráci a další základní služby.
  • Běhové knihovny. Poskytuje primitivní datové typy a základní nástroje.
  • Modul runtime ASP.NET Core. Poskytuje základní služby pro aplikace připojené k Internetu, jako jsou webové aplikace, aplikace IoT a mobilní back-endy.
  • Modul runtime plochy. Poskytuje základní služby pro desktopové aplikace pro Windows, včetně model Windows Forms a WPF.

Stažení za běhu zahrnuje tyto komponenty:

  • Volitelně můžete použít 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í spolupráci a další základní služby.
  • Běhové knihovny. Poskytuje primitivní datové typy a základní nástroje.
  • dotnet Ovladač. Příkaz CLI, který spouští aplikace závislé na rozhraní.

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

Systém projektů a MSBuild

Aplikace .NET je sestavena ze zdrojového kódu pomocí nástroje MSBuild. Soubor projektu (. csproj, . fsproj nebo . vbproj) Určuje cíle a přidružené úkoly , které jsou zodpovědné za kompilování, 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žet soubory projektu v malém a snadnou práci s. Například zde je soubor projektu pro konzolovou aplikaci:

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

A tady je jeden pro webovou aplikaci:

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

V těchto příkladech Sdk atribut Project prvku určuje sadu cílů a úloh MSBuild, které sestaví projekt. TargetFrameworkElement určuje verzi rozhraní .NET, na které aplikace závisí. Můžete upravit soubor projektu a přidat další cíle a úkoly, které jsou specifické pro projekt.

Další informace naleznete v tématu Přehled a cílové architektury sady .NET SDK .

CI/CD

Nástroj MSBuild a rozhraní .NET CLI lze použít s různými nástroji a prostředími průběžné integrace, jako je například:

Další informace najdete v tématu používání sady .NET SDK a nástrojů v článku průběžná integrace (CI) .

NuGet

NuGet je open source správce balíčků navržený pro .NET. Balíček NuGet je soubor . zip s .nupkg příponou, která obsahuje zkompilovaný kód (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 ke sdílení vytváření balíčků a jejich publikování na NuGet.org nebo privátním hostiteli. Vývojáři, kteří chtějí použít sdílený kód, do svého projektu přidají balíček a potom můžou volat rozhraní API vystavené balíčkem ve svém kódu projektu.

Další informace najdete v dokumentaci k NuGetu.

.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 znovu zkompilovat jednotlivé metody za běhu. Tato funkce umožňuje snadnou kompilaci a stále je schopna vytvořit vysoce vyladěnou verzi kódu pro často používané metody.

Další informace naleznete v tématu proces spravovaného spuštění a vrstvená kompilace.

Kompilátor AOT

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

  • Některé scénáře vyžadují kompilaci stromu AOT 100. Příkladem je iOS.
  • V jiných scénářích je většina kódu aplikace kompilována z AOT, ale některé jsou kompilovány JIT. Některé vzory kódu nejsou popisné pro AOT (například obecné typy). Příkladem této formy kompilace AOT je možnost publikování připravená k spuštění . Tato forma stromu 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, CLR přidělí paměť objektu 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 není k dispozici dostatek volného místa, vyhledá GC objekty ve spravované haldě, které již aplikace nepoužívá. Pak uvolní tuto paměť.

GC je jednou ze služeb CLR, které pomůžou 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 nemá přístup k nepřidělené paměti mimo hranice pole.

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

Práce s nespravovanými prostředky

Kód někdy musí 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 je spravovaný objekt, ale odkazuje na popisovač FileStream 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é IDisposable prostředky, rozhraní . Až budete s používáním objektu hotovi, zavoláte metodu objektu , která zodpovídá za uvolnění Dispose() nespravovaných prostředků. Jazyky .NET poskytují pohodlný using příkaz (C#, F#, VB), který zajišťuje Dispose 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 .NET a knihovny aaplikaci 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 (soubory DLL), 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 soubory .dll 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é architektury.

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á obsáhlém standardní sadu knihoven tříd, označované jako běhové knihovny, knihovny rozhranínebo Knihovna základních tříd (BCL). Tyto knihovny poskytují implementace pro mnoho typů a funkcí, které jsou specifické pro obecné účely a úlohy.

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

Další informace najdete v tématu Přehled knihoven za běhu. Zdrojový kód knihoven se nachází v úložišti GitHub nebo modul runtime.

Rozšíření knihoven běhového prostředí

Knihovny pro některé běžně používané funkce aplikace nejsou zahrnuté v knihovnách modulu runtime, ale jsou dostupné v balíčcích NuGet, jako jsou třeba tyto:

Balíček NuGet Dokumentace
Microsoft. Extensions. hosting Správa životního cyklu aplikací (obecný hostitel)
Microsoft. Extensions. DependencyInjection Vkládání 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 na GitHubu.

Přístup k datům

.NET poskytuje objektový/relační mapovač (ORM) a způsob psaní dotazů SQL 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 Core a 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 .NET

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, což je vývojová platforma pro vytváření aplikací pro Windows. V současné .NET Framework verze 4.8 a microsoft ho stále podporuje.

V roce 2014 začal Microsoft psát nástupce open source pro více platforem, který .NET Framework. Tato nová implementace .NET měla název .NET Core, dokud nedosáhl verze 3.1. Další verze po .NET Core 3.1 je .NET 5.0, která je aktuálně ve verzi Preview. Verze číslo 4 se přeskočila, aby nedocházelo k nejasnostem mezi touto implementací .NET a .NET Framework 4.8. Název Core byl vyřazen, aby bylo zřejmé, že se teď jedná o hlavní implementaci .NET.

Tento článek se týká .NET 5, ale většina dokumentace k rozhraní .NET 5 má stále odkazy na rozhraní .NET Core nebo .NET Framework. "Core" navíc zůstane v názvech ASP.NET Core a Entity Framework Core.

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

Další informace najdete v tématu komponenty architektury .NET.

Přetížené výrazy

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

  • Runtime

    Kontext "runtime" znamená
    Common Language Runtime (CLR) Spouštěcí prostředí pro spravovaný program. Operační systém je součástí běhového prostředí, ale není součástí modulu .NET Runtime.
    .NET runtime na stránce pro stažení rozhraní .NET Knihovny CLR a modul runtime, které společně poskytují podporu pro spouštění aplikací závislých na rozhraní . Stránka také nabízí volby za běhu pro aplikace ASP.NET Core Server a desktopové aplikace pro Windows.
    Identifikátor modulu runtime (RID) Platforma operačního systému a architektura procesoru, na kterých běží aplikace .NET. Například: Windows x64, Linux x64.
  • architektura

    Kontext význam "rozhraní"
    .NET Framework Původní implementace .NET jenom pro Windows. "Framework" je velkými písmeny.
    cílová rozhraní Kolekce rozhraní API, na která aplikace nebo knihovna .NET spoléhá. Příklady: .NET Core 3.1, .NET Standard 2.0
    Moniker cílové architektury (TFM) TFM je standardizovaný formát tokenu pro určení cílové architektury aplikace nebo knihovny .NET. Příklad: net462 .NET Framework 4.6.2.
    Aplikace závislá na rozhraní Aplikace, která se může spustit jenom na počítači, na kterém jste nainstalovali modul runtime ze stránky pro stažení .NET. "Framework" v tomto použití je totéž jako modul runtime, který si stáhnete ze stránky pro stažení .NET.
    knihovny architektury Někdy se používá jako synonymum pro knihovny modulu runtime.
  • Sada SDK

    Kontext Význam sady SDK
    SDK na stránce pro stažení .NET Kolekce nástrojů a knihoven, které si stáhnete a nainstalujete pro vývoj a spouštění aplikací .NET. Zahrnuje rozhraní příkazového řádku, nástroj MSBuild, modul runtime .NET a další komponenty.
    Projekt ve stylu sady SDK Sada cílů a úloh nástroje MSBuild, které určuje, jak sestavit projekt pro konkrétní typ aplikace. Sada SDK se v tomto smyslu určuje pomocí Sdk atributu Project elementu v souboru projektu.
  • Platforma

    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í.

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. Způsob, jakým se používá pouze Windows, se označuje 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íce omezit a centralizovat nebezpečný kód a důkladně ho otestovat.

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

Další kroky