Was ist .NET? Einführung und Übersicht
.NET ist eine kostenlose, plattformübergreifende Open-Source-Entwicklerplattform für die Erstellung vieler verschiedener Arten von Anwendungen. .NET basiert auf einer leistungsstarken Runtime, die in der Produktion von vielen anspruchsvollen Apps verwendet wird.
Cloud-Apps
- Cloudnative Apps
- Konsolen-Apps
- serverlose Funktionen in der Cloud
- Web-Apps, Web-APIs und Microservices
Plattformübergreifende Client-Apps
Windows-Apps
Andere App-Typen
Funktionen
.NET-Features ermöglichen Entwicklern, produktiv zuverlässigen und leistungsfähigen Code zu schreiben.
- Asynchroner Code
- Attribute
- Reflexion
- Codeanalysetools
- Delegaten und Lambdas
- Ereignisse
- Ausnahmen
- Garbage Collection
- Generische Typen
- LINQ (Language Integrated Query).
- Parallele Programmierung und verwaltetes Threading
- Typrückschluss: C#, F#, Visual Basic.
- Typsystem
- Unsicherer Code
Verwenden von .NET
.NET-Apps und -Bibliotheken werden aus Quellcode und einer Projektdatei erstellt, wobei die .NET CLI oder eine integrierte Entwicklungsumgebung (Integrated Development Environment, IDE) wie Visual Studio verwendet wird.
Das folgende Beispiel ist eine minimale .NET-App:
Projektdatei:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net7.0</TargetFramework>
</PropertyGroup>
</Project>
Quellcode:
Console.WriteLine("Hello, World!");
Die App kann mit der .NET CLI erstellt und ausgeführt werden:
dotnet run
Hello, World!
Binärverteilungen
- .NET SDK: Eine Reihe von Tools, Bibliotheken und Runtimes für die Entwicklung, das Erstellen und Testen von Apps
- .NET Runtimes: Eine Reihe von Runtimes und Bibliotheken für die Ausführung von Apps
Hier können Sie .NET herunterladen:
Kostenlos und Open Source
.NET ist kostenlos, Open-Source-Software und ein .NET Foundation-Projekt. .NET wird von Microsoft und der Community auf GitHub in mehreren Repositorys verwaltet.
.NET-Quell- und Binärdateien werden mit der MIT-Lizenz lizenziert. Für Binärverteilungen gelten unter Windows zusätzliche Lizenzen.
Support
Microsoft unterstützt .NET auf Android-, Apple-, Linux- und Windows-Betriebssystemen. Es kann in Arm64-, x64- und x86-Architekturen verwendet werden. Es wird auch in emulierten Umgebungen wie macOS Rosetta 2 unterstützt.
Neue Versionen von .NET werden jährlich im November veröffentlicht. .NET-Releases in ungeraden Jahren sind Long-Term Support-Releases (LTS) und werden drei Jahre lang unterstützt. Releases in geraden Jahren sind Standard-Term Support-Releases (STS) und werden 18 Monate lang unterstützt. Qualitätsniveau, Breaking Change-Richtlinien und alle anderen Aspekte der Releases sind identisch. Weitere Informationen finden Sie unter Releases und Support.
Das .NET-Team bei Microsoft arbeitet mit anderen Organisationen zusammen, um .NET auf unterschiedliche Weise zu verteilen und zu unterstützen.
Red Hat unterstützt .NET unter Red Hat Enterprise Linux (RHEL).
Samsung unterstützt .NET auf Tizen-Plattformen.
Laufzeit
Die Common Language Runtime (CLR) ist die Grundlage, auf der alle .NET-Apps basieren. Die grundlegenden Features der Runtime sind:
- Garbage Collection.
- Arbeitsspeichersicherheit und Typsicherheit.
- Allgemeine Unterstützung für Programmiersprachen.
- Plattformübergreifendes Design.
.NET wird manchmal als Runtime für „verwalteten Code“ bezeichnet. Es wird in erster Linie als verwaltet bezeichnet, weil es einen Garbage Collector für die Arbeitsspeicherverwaltung verwendet und die Typ- und Speichersicherheit erzwingt. Die CLR virtualisiert (oder abstrahiert) verschiedene Betriebssystem- und Hardwarekonzepte wie Arbeitsspeicher, Threads und Ausnahmen.
Die CLR wurde von Anfang an als plattformübergreifende Runtime konzipiert. Sie wurde auf mehrere Betriebssysteme und Architekturen portiert. Plattformübergreifender .NET-Code muss in der Regel nicht neu kompiliert werden, um in neuen Umgebungen ausgeführt zu werden. Stattdessen müssen Sie nur eine andere Runtime installieren, um Ihre App auszuführen.
Die Runtime macht verschiedene Diagnosedienste und APIs für Debugger, Dumps und Ablaufverfolgungstools sowie Einblick verfügbar. Die Einblickimplementierung basiert in erster Linie auf OpenTelemetry und ermöglicht eine flexible Anwendungsüberwachung und Sitezuverlässigkeits-Entwicklung (Site Reliability Engineering, SRE).
Die Runtime bietet Low-Level-Interopfunktionen im C-Stil über eine Kombination aus P/Invoke, Werttypen und der Möglichkeit zum Blitting von Werten über die Grenze für nativen/verwalteten Code hinaus.
Sprachen
Die Runtime ist so konzipiert, dass sie mehrere Programmiersprachen unterstützt. Die Sprachen C#, F# und Visual Basic werden von Microsoft unterstützt und in Zusammenarbeit mit der Community entwickelt.
C# ist eine moderne, objektorientierte und typsichere Programmiersprache. Ihre Wurzeln liegen in der C-Sprachenfamilie, und sie ist Programmierern, die mit C, C++, Java und JavaScript arbeiten, sofort vertraut.
F# ist eine interoperable Programmiersprache zum Schreiben prägnanten, stabilen und leistungsfähigen Codes. F#-Programmierung ist datenorientiert, wobei Code die Transformation von Daten mit Funktionen beinhaltet.
Visual Basic verwendet eine ausführlichere Syntax, die der gewöhnlichen menschlichen Sprache näher kommt. Für Einsteiger in die Programmierung ist sie möglicherweise leichter zu erlernen.
Kompilierung
.NET-Apps (wie in einer High-Level-Sprache wie C# geschrieben) werden in eine Zwischensprache (IL) kompiliert. IL ist ein kompaktes Codeformat, das unter jedem Betriebssystem oder jeder Architektur unterstützt werden kann. Die meisten .NET-Apps verwenden in mehreren Umgebungen unterstützte APIs, sodass nur die .NET-Runtime ausgeführt werden muss.
IL muss zur Ausführung auf einer CPU in nativen Code wie Arm64 oder x64 kompiliert werden. .NET unterstützt sowohl AOT-Kompilierungsmodelle (Ahead-Of-Time) als auch JIT-Kompilierungsmodelle (Just-In-Time).
- Auf Android, macOS und Linux ist die JIT-Kompilierung die Standardeinstellung, und AOT ist optional (z. B. mit ReadyToRun).
- Auf iOS ist AOT obligatorisch (Ausführung im Simulator ausgenommen).
- In WebAssembly-Umgebungen (Wasm) ist AOT obligatorisch.
JIT hat den Vorteil, dass je nach Betriebssystem und Hardware eine App (ungeändert) für die CPU-Anweisungen und Aufrufkonventionen in einer bestimmten Umgebung kompiliert werden kann. Es kann auch Code mit höherer oder niedrigerer Qualität kompiliert werden, um eine bessere Durchsatzleistung beim Start und im Dauerbetrieb zu ermöglichen.
Die Vorteile von AOT sind der beste App-Start und (in einigen Fällen) kleinere Bereitstellungen. Der primäre Nachteil ist, dass für jedes separate Bereitstellungsziel Binärdateien erstellt werden müssen (wie jeder andere native Code). AOT-Code ist mit einigen Reflexionsmustern nicht kompatibel.
Runtimebibliotheken
.NET verfügt über eine umfassende Gruppe von Standardklassenbibliotheken. Diese Bibliotheken bieten Implementierungen für viele allgemeine und workloadspezifische Typen und Hilfsprogrammfunktionen.
Im Folgenden finden Sie einige Beispiele für Typen, die in den .NET-Runtimebibliotheken definiert sind:
- Jeder .NET-Typ ist vom System.Object-Typ abgeleitet.
- Primitive Werttypen, z. B. System.Boolean und System.Int32.
- Sammlungen, z.B. System.Collections.Generic.List<T> und System.Collections.Generic.Dictionary<TKey,TValue>.
- Datentypen, z. B. System.Data.DataSet und System.Data.DataTable
- Netzwerkhilfsprogrammtypen, z. B. System.Net.Http.HttpClient
- Datei- und Stream-E/A-Hilfsprogrammtypen, z. B. System.IO.FileStream und System.IO.TextWriter
- Serialisierungshilfsprogrammtypen, z. B. System.Text.Json.JsonSerializer und System.Xml.Serialization.XmlSerializer
- Hochleistungstypen, z. B. System.Span<T>, System.Numerics.Vector und Pipelines.
Weitere Informationen finden Sie in der Übersicht über Runtimebibliotheken.
NuGet-Paket-Manager
NuGet ist der Paket-Manager für .NET. Dies ermöglicht Entwicklern, kompilierte Binärdateien miteinander zu teilen. NuGet.org bietet viele beliebte Pakete aus der Community.
Tools
Das .NET SDK besteht aus mehreren Bibliotheken und Tools zum Entwickeln und Ausführen von .NET-Anwendungen. Es umfasst die MSBuild-Build-Engine, den Roslyn-Compiler (C# und Visual Basic) und den F#- Compiler. Die meisten Befehle werden mithilfe des dotnet
-Befehls ausgeführt. Die CLI-Tools können für die lokale Entwicklung und Continuous Integration verwendet werden.
Die Visual Studio-Familie von IDEs bietet hervorragende Unterstützung für .NET und die Sprachen C#, F# und Visual Basic.
GitHub Codespaces und GitHub-Sicherheitsfeatures unterstützen .NET.
Notebooks
.NET Interactive ist eine Gruppe von CLI-Tools und APIs, die Benutzern das Erstellen interaktiver Funktionen für das Web, Markdown und Notebooks ermöglicht.
Weitere Informationen finden Sie in den folgenden Ressourcen:
- .NET-Tutorial im Browser
- Verwenden von .NET-Notebooks mit Jupyter auf dem Computer
- .NET Interactive-Dokumentation
CI/CD
MSBuild und die .NET-CLI können mit verschiedenen Continuous-Integration-Tools und -Umgebungen verwendet werden. Beispiele:
Weitere Informationen finden Sie unter Verwenden des .NET SDK in CI-Umgebungen (Continuous Integration).
Bereitstellungsmodelle
.NET-Apps können in zwei verschiedenen Modi veröffentlicht werden:
- Eigenständige Apps umfassen die .NET-Runtime und abhängige Bibliotheken. Sie können aus einer oder mehreren Dateien bestehen. Benutzer der Anwendung können diese auf einem Computer ausführen, auf dem die .NET-Runtime nicht installiert ist. Eigenständige Apps sind immer für eine einzelne Betriebssystem- und Architekturkonfiguration bestimmt.
- Frameworkabhängige Apps erfordern eine kompatible, in der Regel global installierte Version der .NET-Runtime. Frameworkabhängige Apps können für eine einzelne Betriebssystem- und Architekturkonfiguration oder als „portabel“, für alle unterstützten Konfigurationen geltend, veröffentlicht werden.
.NET-Apps werden standardmäßig mit einer nativen ausführbaren Datei gestartet. Die ausführbare Datei ist sowohl betriebssystem- als auch architekturspezifisch. Apps können auch mit dem dotnet
-Befehl gestartet werden.
Apps können in Containern bereitgestellt werden. Microsoft stellt Containerimages für verschiedene Zielumgebungen bereit.
.NET-Verlauf
Microsoft veröffentlichte im Jahr 2002 mit .NET Framework eine Entwicklungsplattform zum Erstellen von Windows-Apps. Die aktuelle, von Microsoft vollständig unterstützte Version von .NET Framework ist 4.8.
Im Jahr 2014 hat Microsoft .NET Core als plattformübergreifenden Open-Source-Nachfolger von .NET Framework eingeführt. Diese neue Implementierung von .NET hat den Namen .NET Core bis Version 3.1 beibehalten. Die nächste Version nach .NET Core 3.1 hieß .NET 5.
Neue .NET-Versionen mit jeweils höherer Hauptversionsnummer werden weiterhin jährlich veröffentlicht. Sie enthalten wichtige neue Features und ermöglichen häufig neue Szenarien.
.NET-Ökosystem
Es gibt mehrere Varianten von .NET, die jeweils einen anderen App-Typ unterstützen. Der Grund für mehrere Varianten ist teils historisch, teils technisch.
.NET-Implementierungen (historische Reihenfolge):
- .NET Framework: Es bietet Zugriff auf die umfassenden Funktionen von Windows und Windows Server. Wird auch häufig für Windows-basiertes Cloud Computing verwendet. Das ursprüngliche .NET.
- Mono: Eine plattformübergreifende Implementierung von .NET Framework. Das ursprüngliche Community- und Open-Source-.NET. Wird für Android-, iOS- und Wasm-Apps verwendet.
- .NET (Core): Eine plattformübergreifende und Open-Source-Implementierung von .NET, für das Cloudzeitalter überarbeitet und dabei weiterhin ganz klar kompatibel mit .NET Framework. Wird für Linux-, macOS- und Windows-Apps verwendet.
Nächste Schritte
.NET feedback
The .NET documentation is open source. Provide feedback here.
Feedback
Feedback senden und anzeigen für