Ú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 v 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

rozhraní .net podporuje Microsoft na Windows, macOS a Linux. Pravidelně se aktualizuje z hlediska zabezpečení a kvality v druhém úterý v měsíci.

Distribuce binárních souborů .NET od Microsoftu se sestavuje a testuje na serverech spravovaných Microsoftem v Azure a řídí se postupy Microsoftu pro vývoj a zabezpečení.

Red Hat podporuje .net v Red Hat Enterprise Linux (RHEL). Red Hat a Microsoft spolupracují, aby se zajistilo, že .NET Core dobře funguje 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í možnost výběru jazyků, integrovaných vývojových prostředí (IDEs) a dalších nástrojů.

Programovací jazyky

Rozhraní .NET podporuje tři programovací jazyky:

  • C#

    C# (vyslovit "viz Sharp") je moderní, objektově orientovaný programovací jazyk, který je typově bezpečný. Jazyk C# má své kořeny v řadě jazyků C a bude okamžitě známý programátorům jazyka C, C++, Java a JavaScriptu.

  • F#

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

  • Visual Basic

    mezi jazyky .net je syntaxe Visual Basic nejblíže běžnému lidskému jazyku, což usnadňuje seznámení s nimi. na rozdíl od jazyka C# a F #, pro který společnost Microsoft aktivně vyvíjí nové funkce, je Visual Basic jazyk stabilní. Visual Basic se pro webové aplikace nepodporuje, ale podporuje se pro webová rozhraní api.

Tady jsou některé funkce, které podporují jazyky .NET:

Prostředí IDE

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

  • Visual Studio

    spouští se jenom na 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 buildu 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 Windows desktopové aplikace, 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:

Project systém a MSBuild

Aplikace .NET je sestavena ze zdrojového kódu pomocí 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>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 Sdk atribut Project elementu určuje sadu MSBuildch cílů a úloh, 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

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 .zip soubor s .nupkg 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 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 NuGet.

.NET Interactive

.NET Interactive je skupina nástrojů CLI a rozhraní API, které uživatelům umožňují vytvářet interaktivní prostředí v rámci webu, Markdownu a poznámkových bloků.

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

Modely spuštění

Aplikace .NET spouští spravovaný kód v běhovém prostředí známém jako modul CLR (Common Language Runtime).

CLR

.net CLR je modul runtime pro různé platformy, který zahrnuje podporu pro Windows, macOS a Linux. Modul CLR zpracovává přidělování a správu paměti. CLR je také virtuálním počítačem, který nespouští pouze aplikace, ale také generuje a kompiluje kód pomocí kompilátoru JIT (just-in-time).

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

Kompilátor JIT a IL

Jazyky vyšší úrovně .NET, jako je C#, se zkompiluje do nezávislá sady instrukcí pro hardware, která se označuje jako Intermediate Language (IL). Když aplikace běží, kompilátor JIT překládá IL na strojový kód, který procesor rozumí. Kompilace JIT proběhne na stejném počítači, na kterém se spouští kód.

Vzhledem k tomu, že během provádění aplikace dojde k kompilaci JIT, doba kompilace je součástí doby běhu. Kompilátory JIT proto musí vyvážit čas strávený optimalizací kódu proti úsporám, které může výsledný kód vyvolat. Kompilátor JIT ale ví skutečný hardware a může vývojářům zdarma dodávat různé implementace pro různé platformy.

Kompilátor JIT .NET může provést vrstvenou kompilaci, což znamená, že může v době běhu překompilovat jednotlivé metody. 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é nejsou automaticky spravovány modulem runtime .NET. Například popisovač souboru je nespravovaný prostředek. FileStreamObjekt je spravovaný objekt, ale odkazuje na popisovač souboru, který je nespravovaný. Až budete hotovi s použitím FileStream , musíte explicitně uvolnit popisovač souboru.

V rozhraní .NET objekty, které odkazují na nespravované prostředky, implementují IDisposable rozhraní. Po dokončení používání objektu zavoláte Dispose() metodu objektu, která je zodpovědná za uvolnění 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 Vymazání nespravovaných prostředků.

Modely nasazení

Aplikace .NET se dají publikovat ve dvou různých režimech:

  • Publikování aplikace jako samostatného nástroje vytvoří spustitelný soubor, který obsahuje modul runtime a knihovny.NET, a aplikaci a její závislosti. Uživatelé aplikace ji mohou spustit na počítači, ve kterém není nainstalován modul .NET Runtime. Samostatné aplikace jsou specifické pro platformu a mohou být volitelně publikovány pomocí formuláře kompilace AOT.

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

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

Spustitelné soubory se vytvářejí pro konkrétní cílové platformy, které zadáte s identifikátorem modulu runtime (RID).

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

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 je v úložišti GitHub dotnet/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 NuGetch balíčcích, jako je třeba následující:

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 naleznete v části dotnet/rozšíření úložiště na GitHub.

Přístup k datům

rozhraní .net poskytuje objekt/relační mapovač (ORM) a způsob, jak zapisovat SQL dotazy v kódu.

Entity Framework Core

Jádro Entity Framework (EF) je Open Source technologie pro přístup k datům pro různé platformy, která může sloužit jako ORM. EF Core umožňuje pracovat s databází pomocí odkazů na objekty .NET v kódu. Snižuje množství kódu přístupu k datům, které byste jinak museli zapisovat a testovat. EF Core podporuje mnoho databázových strojů.

Další informace najdete v tématu poskytovatelé Entity Framework Core a databáze.

LINQ

LINQ (Language-Integrated Query) umožňuje psát deklarativní kód pro práci s daty. data mohou být v mnoha formách (například objekty v paměti, SQL databázi nebo dokumentu XML), ale kód jazyka LINQ, který napíšete, obvykle nezávisí na zdroji dat.

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

Terminologie .NET

Pro pochopení dokumentace rozhraní .NET může vám porozumět tomu, jak se používání některých podmínek v průběhu času mění.

.NET Core a .NET 5 +

v 2002 společnost Microsoft vydala .NET Framework, vývojovou platformu pro vytváření aplikací Windows. dnešní .NET Framework je ve verzi 4,8 a pořád ho podporuje Microsoft.

V 2014 společnost Microsoft představila .NET Core jako .NET Frameworkho Open Source nástupce pro různé platformy. Tato nová implementace rozhraní .NET zachová název .NET Core až do verze 3,1. Další verze po rozhraní .NET Core 3,1 s názvem .NET 5. Takže rozhraní .NET 5 + (znaménko plus znamená "a novější verze") a .NET Core odkazuje na jednu a stejnou implementaci rozhraní .NET.

číslo verze 4 bylo vynecháno, aby nedošlo k nejasnostem mezi .NET Framework a .net Core/5 +. Název "Core" byl vynechán z ".NET Core", aby bylo jasné, že tato implementace rozhraní .NET je teď hlavní. "Core" zůstává ve verzích 5 a 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 modulu runtime pro aplikace ASP.NET Core server a Windows desktopové aplikace.
    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í 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