.NET im Vergleich zum .NET Framework für Server-Apps

Bei der Erstellung serverseitiger Apps werden zwei .NET-Implementierungen unterstützt.

Implementierung Enthaltene Versionen
.NET .NET Core 1.0 – 3.1, .NET 5 und neuere Versionen von .NET.
.NET Framework .NET Framework 1.0 – 4.8

Beide Implementierungen nutzen viele gemeinsame Komponenten, und auch ein Teil des Codes stimmt überein. Allerdings gibt es auch grundlegende Unterschiede. Daher richtet sich Ihre Entscheidung danach, was Sie erreichen möchten. Dieser Artikel stellt Anleitungen dazu bereit, welche Variante in welchen Fällen verwendet werden sollte.

Verwenden Sie in den folgenden Fällen .NET für Ihre Serveranwendung:

  • Es bestehen plattformübergreifende Anforderungen.
  • Sie möchten Microservices erstellen.
  • Sie verwenden Docker-Container.
  • Sie sind auf skalierbare Hochleistungssysteme angewiesen.
  • Sie benötigen pro Anwendung verschiedene parallele .NET-Versionen.

Verwenden Sie in folgenden Fällen .NET Framework für Ihre Serveranwendung:

  • Sie verwenden für Ihre Anwendung derzeit .NET Framework (empfohlen wird eine Erweiterung anstelle einer Migration).
  • Ihre App verwendet Drittanbieterbibliotheken oder NuGet-Pakete, die für .NET nicht verfügbar sind.
  • Ihre App verwendet .NET Framework-Technologien, die für .NET nicht verfügbar sind.
  • Ihre App verwendet eine Plattform, die .NET nicht unterstützt.

Anwendungsfälle für .NET

In den folgenden Abschnitten werden die zuvor genannten Gründe für die Entscheidung für .NET gegenüber dem .NET Framework ausführlicher erläutert.

Plattformübergreifende Anforderungen

Verwenden Sie .NET, wenn Ihre Web- oder Dienstanwendung auf mehreren Plattformen ausgeführt werden muss, z. B. Windows, Linux und macOS.

.NET unterstützt die zuvor genannten Betriebssysteme für Ihre Entwicklungsarbeitsstation. Visual Studio bietet eine integrierte Entwicklungsumgebung (Integrated Development Environment, IDE) für Windows und macOS. Sie können auch Visual Studio Code verwenden, das unter macOS, Linux und Windows ausgeführt werden kann. Visual Studio Code unterstützt .NET, einschließlich IntelliSense und Debuggen. Die meisten Editoren von Drittanbietern funktionieren mit .NET, z. B. Sublime, Emacs und VI. Diese Editoren von Drittanbietern rufen IntelliSense mit OmniSharp ab. Da Sie die .NET-CLI direkt verwenden können und diese für alle unterstützten Plattformen zur Verfügung steht, ist ein Code-Editor nicht erforderlich.

Microservicearchitektur

Durch eine Microservicearchitektur ist eine dienstübergreifende Kombination aus Technologien möglich. Diese Kombination aus Technologien ermöglicht eine sukzessive Integration von .NET für neue Microservices, die mit anderen Microservices oder Diensten funktionieren. Sie können z.B. Microservices oder Dienste kombinieren, die mit .NET Framework, Java, Ruby oder einer anderen monolithischen Technologie entwickelt wurden.

Es stehen viele verschiedene Infrastrukturplattformen zur Verfügung. Azure Service Fabric wurde für große und komplexe Microservicesysteme entwickelt. Azure App Service ist eine gute Wahl bei zustandslosen Microservices. Auf Docker basierende Alternativen zu Microservices sind – wie im Abschnitt Container erläutert – mit allen Microserviceimplementierungen kompatibel. All diese Plattformen unterstützen .NET und eignen sich daher ideal zum Hosten Ihrer Microservices.

Weitere Informationen zur Microservicearchitektur finden Sie unter NET Microservices: Architecture for Containerized .NET Applications (.NET Microservices: Architektur für .NET-Containeranwendungen).

Container

Container werden häufig in Verbindung mit einer Microservicearchitektur verwendet. Container können auch zur Containerisierung von Web-Apps und -Diensten verwendet werden, die einem Architekturmuster folgen. .NET Framework kann in Windows-Containern verwendet werden. Die Modularität und der schlanke Aufbau von .NET machen es jedoch zu einer besseren Wahl für Container. Das Image eines mit .NET erstellten und bereitgestellten Containers ist wesentlich kleiner als bei .NET Framework. Aufgrund der plattformübergreifenden Struktur können Sie Server-Apps in Linux-Docker-Containern bereitstellen.

Docker-Container können in Ihrer Linux- oder Windows-Infrastruktur oder in einem Clouddienst wie Azure Kubernetes Service gehostet werden. Azure Kubernetes Service kann containerbasierte Anwendungen in der Cloud verwalten, orchestrieren und skalieren.

Hochleistungssysteme und skalierbare Systeme

Wenn Ihr System die bestmögliche Leistung und Skalierbarkeit erfordert, eignen sich .NET und ASP.NET Core am besten. Die leistungsstarke Serverlaufzeit für Windows Server und Linux macht ASP.NET Core zu einem äußerst leistungsfähigen Webframework für TechEmpower-Benchmarks.

Leistung und Skalierbarkeit sind insbesondere für Microservicearchitekturen relevant, in denen Hunderte von Microservices ausgeführt werden können. Mit ASP.NET Core werden Systeme mit einer deutlich geringeren Zahl an Servern bzw. VMs ausgeführt. Durch die geringere Zahl an Servern bzw. VMs werden Kosten für die Infrastruktur und das Hosten gespart.

Verschiedene parallele .NET-Versionen pro Anwendungsebene

Für das Installieren von Anwendungen mit Abhängigkeiten von verschiedenen .NET-Versionen wird .NET empfohlen. Diese Implementierung unterstützt die parallele Installation verschiedener Versionen der .NET-Runtime auf demselben Computer. Durch die parallele Installation können mehrere Dienste auf demselben Server ausgeführt werden, wobei jeder seine eigene Version von .NET aufweist. Zudem senkt sie Risiken und spart Kosten für Anwendungsupdates und IT-Vorgänge.

Eine parallele Installation ist mit dem .NET Framework nicht möglich. Es handelt sich hierbei um eine Windows-Komponente, und es kann jeweils nur eine Version auf einem Computer vorhanden sein. Jede Version von .NET Framework ersetzt die vorherige Version. Wenn Sie eine neue App installieren, die auf eine neuere Version von .NET Framework abzielt, können Sie vorhandene Apps, die auf dem Computer ausgeführt werden, unterbrechen, da die vorherige Version ersetzt wurde.

In welchen Fällen sollte .NET Framework verwendet werden?

.NET bietet große Vorteile für neue Anwendungen und Anwendungsmuster. Allerdings bleibt das .NET Framework die erste Wahl für viele Szenarien, weshalb es nicht für alle Serveranwendungen durch .NET ersetzt wurde.

Vorhandene .NET Framework-Anwendungen

In den meisten Fällen müssen Sie Ihre vorhandenen Anwendungen nicht zu .NET migrieren. Stattdessen wird empfohlen, .NET zu verwenden, wenn Sie eine bestehende Anwendung erweitern, z. B. beim Schreiben eines neuen Webdiensts in ASP.NET Core.

Bibliotheken von Drittanbietern oder NuGet-Pakete sind für .NET nicht verfügbar

Mit .NET Standard können Sie Code in allen .NET-Implementierungen einschließlich .NET Core/5 und höher freigeben. Für .NET Standard 2.0 ermöglicht ein Kompatibilitätsmodus, dass .NET Standard- und .NET-Projekte auf .NET Framework-Bibliotheken verweisen können. Weitere Informationen finden Sie unter Unterstützung für .NET Framework-Bibliotheken.

Sie müssen nur dann das .NET Framework verwenden, wenn die Bibliotheken oder NuGet-Pakete Technologien einsetzen, die nicht in .NET Standard oder .NET verfügbar sind.

Für .NET nicht verfügbare .NET Framework-Technologien

Einige .NET Framework-Technologien sind in .NET nicht verfügbar. Die folgende Liste enthält die häufigsten Technologien, die von .NET nicht unterstützt werden:

  • ASP.NET Web Forms-Anwendungen: ASP.NET Web Forms ist nur in .NET Framework verfügbar. ASP.NET Core kann nicht für ASP.NET Web Forms verwendet werden.

  • ASP.NET Web Pages-Anwendungen: ASP.NET Web Pages ist nicht in ASP.NET Core enthalten.

  • Workflow-bezogene Dienste: Windows Workflow Foundation (WF), die Workflow-Dienste (WCF + WF in einem einzigen Dienst) und WCF Data Services (früher „ADO.NET Data Services“) sind nur in .NET Framework verfügbar.

  • Sprachenunterstützung: Visual Basic und F# werden zurzeit in .NET unterstützt, allerdings nicht für alle Projekttypen. Eine Liste der unterstützten Projektvorlagen finden Sie im Abschnitt Vorlagenoptionen für dotnet new.

Weitere Informationen finden Sie unter In .NET nicht verfügbare .NET Framework-Technologien.

Keine Plattformunterstützung für .NET

.NET wird auf einigen Plattformen von Microsoft oder Drittanbietern nicht unterstützt. Einige Azure-Dienste stellen ein SDK bereit, das für die Nutzung in .NET noch nicht verfügbar ist. In solchen Fällen können Sie anstelle des Client-SDKs die entsprechende REST-API verwenden.

Siehe auch