.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. Es gibt jedoch grundlegende Unterschiede zwischen den beiden, und Ihre Wahl hängt davon ab, 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. Sie können auch einen Code-Editor vermeiden und die .NET CLI direkt verwenden, die für alle unterstützten Plattformen verfügbar ist.

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. Microservices-Alternativen basierend auf Docker passen zu jedem Mikroservices-Ansatz, wie im Abschnitt "Container " erläutert. 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 mit einer Microservices-Architektur verwendet. Container können auch zur Containerisierung von Web-Apps und -Diensten verwendet werden, die einem Architekturmuster folgen. .NET Framework können unter Windows-Containern verwendet werden. Dennoch machen die Modularität und der leichte Charakter von .NET eine bessere Wahl für Container. Wenn Sie einen Container erstellen und bereitstellen, ist die Größe des Images mit .NET wesentlich kleiner als bei .NET Framework. Da es plattformübergreifend ist, können Sie Server-Apps für Linux-Docker-Container bereitstellen.

Docker-Container können in Ihrer eigenen 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 Hochleistungsserverlaufzeit für Windows Server und Linux macht ASP.NET Core ein leistungsstarkes Webframework für TechEmpower-Benchmarks.

Die Leistung und Skalierbarkeit sind besonders für Microservices-Architekturen relevant, bei 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. Die reduzierten Server/VMs sparen Kosten für Infrastruktur und Hosting.

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-Laufzeit auf demselben Computer. Die parallele Installation ermöglicht mehrere Dienste auf demselben Server, jeweils auf einer eigenen Version von .NET. 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 spätere Version von .NET Framework ausgerichtet ist, können Sie vorhandene Apps unterbrechen, die auf dem Computer ausgeführt werden, 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 empfehlen wir die Verwendung von .NET, wenn Sie eine vorhandene Anwendung erweitern, z. B. das 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 sind 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 sind nicht in ASP.NET Core enthalten.

  • Workflowbezogene Dienste: Windows Workflow Foundation (WF), WorkflowDienste (WCF + WF in einem einzigen Dienst) und WCF Data Services (früher als "ADO.NET Data Services" bezeichnet) sind nur in .NET Framework verfügbar.

  • Sprachunterstützung: Visual Basic und F# werden derzeit in .NET, aber nicht für alle Projekttypen unterstützt. 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