Einführung in .NET
.NET ist eine kostenlose, plattformübergreifende Open-Source-Entwicklerplattform für die Erstellung vieler verschiedener Arten von Anwendungen. Es kann Programme ausführen, die in mehreren Sprachen geschrieben wurden, wobei C# am beliebtesten ist. Es basiert auf einer leistungsstarken Runtime, die in der Produktion von vielen anspruchsvollen Apps verwendet wird.
Informationen zum Herunterladen von .NET und zum Schreiben Ihrer ersten App finden Sie unter Erste Schritte.
Die .NET-Plattform wurde entwickelt, um Produktivität, Leistung, Sicherheit und Zuverlässigkeit zu gewährleisten. Sie stellt die automatische Speicherverwaltung über einen Garbage Collector (GC) bereit. Sie ist aufgrund der Verwendung eines GC und strengen Sprachcompilers typsicher und speichersicher. Sie bietet Parallelität über async
/await
und Task
Primitives. Sie enthält eine große Anzahl von Bibliotheken, die über eine breite Funktionalität verfügen und für die Leistung auf mehreren Betriebssystemen und Chiparchitekturen optimiert wurden.
.NET verfügt über die folgenden Entwurfspunkte:
- Die Produktivität ist ganzheitlich: Laufzeit, Bibliotheken, Sprache und Tools tragen alle zur Benutzerfreundlichkeit der Entwickler bei.
- Sicherer Code ist das primäre Computemodell, während unsicherer Code zusätzliche manuelle Optimierungen ermöglicht.
- Statischer und dynamischer Code werden beide unterstützt und ermöglichen eine breite Palette unterschiedlicher Szenarien.
- Interoperabilität mit nativem Code und Hardwareinterna sind kostengünstig und hochgradig zuverlässig (roher API- und Anweisungszugriff).
- Code ist plattformübergreifend portierbar (Betriebssystem- und Chiparchitektur), während die Plattformadressierung Spezialisierung und Optimierung ermöglicht.
- Die Anpassungsfähigkeit in verschiedenen Programmierdomänen (Cloud, Client, Spiele) wird durch spezialisierte Implementierungen des allgemeinen Programmiermodells ermöglicht.
- Branchenstandards wie OpenTelemetry und gRPC werden gegenüber maßgeschneiderten Lösungen bevorzugt.
.NET wird von Microsoft und der Community verwaltet. Es wird regelmäßig aktualisiert, um sicherzustellen, dass Benutzer in der Produktion sichere und zuverlässige Anwendungen bereitstellen.
Komponenten
.NET enthält jetzt die folgenden Komponenten:
- Laufzeit: führt Anwendungscode aus.
- Bibliotheken: stellen Hilfsfunktionen wie die JSON-Analyse bereit.
- Compiler: kompiliert C#-Quellcode (und andere Sprachen) in ausführbaren Code (Laufzeit).
- SDK und andere Tools: ermöglichen das Erstellen und Überwachen von Apps mit modernen Workflows.
- App-Stapel: z. B. ASP.NET Core und Windows Forms, die das Schreiben von Apps ermöglichen.
Die Laufzeit, Bibliotheken und Sprachen sind die Säulen des .NET-Stapels. Komponenten höherer Ebene wie .NET-Tools und App-Stapel wie ASP.NET Core bauen auf diesen Säulen auf. C# ist die primäre Programmiersprache für .NET, und ein Großteil von .NET wird in C# geschrieben.
C# ist objektorientiert und die Laufzeit unterstützt die Objektausrichtung. C# erfordert Garbage Collection und die Laufzeit stellt einen Garbage Collector für die Ablaufverfolgung bereit. Die Bibliotheken (und auch die App Stacks) formen diese Fähigkeiten zu Konzepten und Objektmodellen, die es Entwicklern ermöglichen, Algorithmen in intuitiven Arbeitsabläufen produktiv zu schreiben.
Die Kernbibliotheken stellen Tausende von Typen zur Verfügung, von denen viele in die C#-Sprache integriert sind und diese bereichern. Mit der C#-Anweisung foreach
können Sie beispielsweise beliebige Auflistungen aufzählen. Durch musterbasierte Optimierungen können Sammlungen wie List<T>
einfach und effizient verarbeitet werden. Sie können die Ressourcenverwaltung der Garbage Collection überlassen, aber eine sofortige Bereinigung ist über IDisposable
und die direkte Sprachunterstützung in der using
-Anweisung möglich.
Die Möglichkeit, mehrere Dinge gleichzeitig zu tun, ist für praktisch alle Workloads von grundlegender Bedeutung. Dies könnte Clientanwendungen sein, die Hintergrundverarbeitung durchführen, während die Benutzeroberfläche reaktionsfähig bleibt, Dienste, die viele Tausend gleichzeitige Anforderungen verarbeiten, Geräte, die auf eine Vielzahl gleichzeitiger Reize reagieren, oder leistungsstarke Maschinen, die die Verarbeitung rechenintensiver Vorgänge parallelisieren. Die Unterstützung der asynchronen Programmierung ist ein erstklassiges Merkmal der Programmiersprache C#, die mit den Schlüsselwörtern async
und await
das Schreiben und Zusammenstellen asynchroner Operationen erleichtert, während Sie gleichzeitig alle Vorteile der Ablaufsteuerungskonstrukte der Sprache nutzen können.
Das Typsystem bietet eine beträchtliche Bandbreite, die Sicherheit, Beschreibbarkeit, Dynamik und native Interoperabilität gleichermaßen berücksichtigt. In erster Linie ermöglicht das Typsystem ein objektorientiertes Programmiermodell. Es umfasst Typen, Vererbung (einer einzelnen Basisklasse), Schnittstellen (einschließlich Standardmethodenimplementierungen) und virtuelles Methoden-Dispatch, um ein sinnvolles Verhalten für alle Typschichten zu bieten, die die Objektorientierung ermöglicht. Generische Typen sind ein weit verbreitetes Feature, mit dem Sie Klassen auf einen oder mehrere Typen spezialisieren können.
Die .NET-Runtime stellt die automatische Speicherverwaltung über einen Garbage Collector bereit. Für jede Sprache ist das Speicherverwaltungsmodell wahrscheinlich das wichtigste Merkmal. Dies gilt auch für .NET-Sprachen. .NET verfügt über einen selbstoptimierenden GC mit Ablaufverfolgung. Es zielt darauf ab, im allgemeinen Fall einen „Hands-off“-Betrieb zu ermöglichen und gleichzeitig Konfigurationsoptionen für extremere Arbeitslasten zu bieten. Der aktuelle GC ist das Ergebnis vieler Jahre Investitionen und Erkenntnisse aus einer Vielzahl von Arbeitslasten.
Wertetypen und dem Stapel zugewiesene Speicherblöcke bieten im Gegensatz zu den GC-verwalteten Typen von .NET eine direktere, niedrigere Kontrolle über Daten und native Plattform-Interoperabilität. Die meisten Grundtypen in .NET, z. B. ganzzahlige Typen, sind Werttypen, und Benutzer können ihre eigenen Typen mit ähnlicher Semantik definieren. Wertetypen werden durch das generische System von .NET vollständig unterstützt. Das bedeutet, dass generische Typen wie List<T>
flache, speicherschonende Repräsentationen von Wertetypsammlungen bieten können.
Reflexion ist ein „Programme als Daten“-Paradigma, das es einem Teil eines Programms ermöglicht, einen anderen dynamisch abzufragen und aufzurufen, und zwar in Form von Assemblies, Typen und Membern. Es ist besonders nützlich für spät gebundene Programmiermodelle und -tools.
Ausnahmen sind das primäre Fehlerbehandlungsmodell in .NET. Ausnahmen haben den Vorteil, dass Fehlerinformationen nicht in Methodensignaturen dargestellt oder von jeder Methode behandelt werden müssen. Die ordnungsgemäße Ausnahmebehandlung ist für die Anwendungssicherheit unerlässlich. Um zu verhindern, dass Ihre App abstürzt, können Sie in Ihrem Code erwartete Ausnahmen absichtlich behandeln. Eine abgestürzte App ist zuverlässiger und diagnosefähiger als eine App mit nicht definiertem Verhalten.
App-Stapel, z. B. ASP.NET Core und Windows Forms, bauen auf Bibliotheken, Sprachen und Laufzeit auf niedriger Ebene auf und nutzen diese. Die App-Stapel definieren die Art und Weise, wie Apps erstellt werden, ebenso wie ihren Ausführungslebenszyklus.
Das SDK und andere Tools ermöglichen eine moderne Entwicklerumgebung, sowohl auf einem Entwicklerdesktop als auch für Continuous Integration (CI). Die moderne Entwicklerumgebung umfasst die Möglichkeit, Code zu erstellen, zu analysieren und zu testen. .NET-Projekte können häufig durch einen einzigen dotnet build
-Befehl erstellt werden, der das Wiederherstellen von NuGet-Paketen und das Erstellen von Abhängigkeiten koordiniert.
NuGet ist der Paket-Manager für .NET. Es enthält Hunderte von Tausenden von Paketen, die Funktionen für viele Szenarien implementieren. Ein Großteil der Apps verlässt sich für einige Funktionen auf NuGet-Pakete. Der NuGet-Katalog wird von Microsoft gepflegt.
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. Zusätzliche Lizenzen sind für Windows erforderlich.
Unterstützung
.NET wird von mehreren Organisationen unterstützt, die sicherstellen, dass .NET auf mehreren Betriebssystemen ausgeführt werden kann und auf dem neuesten Stand gehalten wird. Es kann in Arm64-, x64- und x86-Architekturen verwendet werden.
Neue Versionen von .NET werden entsprechend unseren Versions- und Supportrichtlinien jährlich im November veröffentlicht. Es wird monatlich am Patch-Dienstag (zweiter Dienstag) aktualisiert, in der Regel um 10:00 Pazifische Zeit.
.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:
- .NET Framework – das originale .NET. Es bietet Zugriff auf die umfassenden Funktionen von Windows und Windows Server. Es wird in der Wartung aktiv unterstützt.
- Mono – das ursprüngliche Community- und Open-Source-.NET. Eine plattformübergreifende Implementierung von .NET Framework. Wird für Android, iOS und WebAssembly aktiv unterstützt.
- .NET (Core) – Modernes .NET. 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 aktiv unterstützt.